Skip to content

Commit d5dfb5d

Browse files
committed
ObjectService: push default impls to interface
1 parent ce965b9 commit d5dfb5d

File tree

2 files changed

+34
-52
lines changed

2 files changed

+34
-52
lines changed

src/main/java/org/scijava/object/DefaultObjectService.java

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,10 @@
3232

3333
package org.scijava.object;
3434

35-
import java.util.List;
36-
37-
import org.scijava.Named;
3835
import org.scijava.event.EventHandler;
3936
import org.scijava.event.EventService;
4037
import org.scijava.object.event.ObjectCreatedEvent;
4138
import org.scijava.object.event.ObjectDeletedEvent;
42-
import org.scijava.object.event.ObjectsAddedEvent;
43-
import org.scijava.object.event.ObjectsRemovedEvent;
4439
import org.scijava.plugin.Parameter;
4540
import org.scijava.plugin.Plugin;
4641
import org.scijava.service.AbstractService;
@@ -79,49 +74,10 @@ public EventService eventService() {
7974
}
8075

8176
@Override
82-
public ObjectIndex<Object> getIndex() {
77+
public NamedObjectIndex<Object> getIndex() {
8378
return objectIndex;
8479
}
8580

86-
@Override
87-
public <T> List<T> getObjects(final Class<T> type) {
88-
final List<Object> list = objectIndex.get(type);
89-
@SuppressWarnings("unchecked")
90-
final List<T> result = (List<T>) list;
91-
return result;
92-
}
93-
94-
@Override
95-
public void addObject(final Object obj) {
96-
addObject(obj, null);
97-
}
98-
99-
@Override
100-
public void addObject(Object obj, String name) {
101-
objectIndex.add(obj, name);
102-
eventService.publish(new ObjectsAddedEvent(obj));
103-
}
104-
105-
@Override
106-
public void removeObject(final Object obj) {
107-
objectIndex.remove(obj);
108-
eventService.publish(new ObjectsRemovedEvent(obj));
109-
}
110-
111-
@Override
112-
public String getName(Object obj) {
113-
if (obj == null) throw new NullPointerException();
114-
final String name = objectIndex.getName(obj);
115-
if (name != null) return name;
116-
if (obj instanceof Named) {
117-
final String n = ((Named) obj).getName();
118-
if (n != null) return n;
119-
}
120-
final String s = obj.toString();
121-
if (s != null) return s;
122-
return obj.getClass().getName() + "@" + Integer.toHexString(obj.hashCode());
123-
}
124-
12581
// -- Service methods --
12682

12783
@Override

src/main/java/org/scijava/object/ObjectService.java

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636

3737
import org.scijava.Named;
3838
import org.scijava.event.EventService;
39+
import org.scijava.object.event.ObjectsAddedEvent;
40+
import org.scijava.object.event.ObjectsRemovedEvent;
3941
import org.scijava.service.SciJavaService;
4042

4143
/**
@@ -50,10 +52,15 @@ default EventService eventService() {
5052
}
5153

5254
/** Gets the index of available objects. */
53-
ObjectIndex<Object> getIndex();
55+
NamedObjectIndex<Object> getIndex();
5456

5557
/** Gets a list of all registered objects compatible with the given type. */
56-
<T> List<T> getObjects(Class<T> type);
58+
default <T> List<T> getObjects(final Class<T> type) {
59+
final List<Object> list = getIndex().get(type);
60+
@SuppressWarnings("unchecked")
61+
final List<T> result = (List<T>) list;
62+
return result;
63+
}
5764

5865
/**
5966
* Gets the name belonging to a given object.
@@ -63,17 +70,36 @@ default EventService eventService() {
6370
* {@link Named}, or from the {@link Object#toString()} otherwise. It is
6471
* guaranteed that this method will not return {@code null}.
6572
* </p>
66-
*/
67-
String getName(Object obj);
73+
**/
74+
default String getName(final Object obj) {
75+
if (obj == null) throw new NullPointerException();
76+
final String name = getIndex().getName(obj);
77+
if (name != null) return name;
78+
if (obj instanceof Named) {
79+
final String n = ((Named) obj).getName();
80+
if (n != null) return n;
81+
}
82+
final String s = obj.toString();
83+
if (s != null) return s;
84+
return obj.getClass().getName() + "@" + Integer.toHexString(obj.hashCode());
85+
}
6886

6987
/** Registers an object with the object service. */
70-
void addObject(Object obj);
88+
default void addObject(Object obj) {
89+
addObject(obj, null);
90+
}
7191

7292
/** Registers a named object with the object service. */
73-
void addObject(Object obj, String name);
93+
default void addObject(final Object obj, final String name) {
94+
getIndex().add(obj, name);
95+
eventService().publish(new ObjectsAddedEvent(obj));
96+
}
7497

7598
/** Deregisters an object with the object service. */
76-
void removeObject(Object obj);
99+
default void removeObject(final Object obj) {
100+
getIndex().remove(obj);
101+
eventService().publish(new ObjectsRemovedEvent(obj));
102+
}
77103

78104
// -- Deprecated methods --
79105

0 commit comments

Comments
 (0)