Clean up and refactor ACR and component register.
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / register / ComponentRegister.java
index eb8acba02bcaeb97314b7f8872b43c2a20e63419..d5f9ea4211d67c774cddfa25a9d3b3a7639323fe 100644 (file)
@@ -1,14 +1,24 @@
 package org.argeo.util.register;
 
 import java.util.Map;
-import java.util.function.Consumer;
+import java.util.SortedSet;
 import java.util.function.Predicate;
 
-public interface ComponentRegister extends Consumer<Component<?>> {
-       <T> Component<? extends T> find(Class<T> clss, Predicate<Map<String, Object>> filter);
+/** A register of components which can coordinate their activation. */
+public interface ComponentRegister {
+       long register(Component<?> component);
+
+       <T> SortedSet<Component<? extends T>> find(Class<T> clss, Predicate<Map<String, Object>> filter);
 
        Component<?> get(Object instance);
 
+//     default <T> PublishedType<T> getType(Class<T> clss) {
+//             SortedSet<Component<? extends T>> components = find(clss, null);
+//             if (components.size() == 0)
+//                     return null;
+//             return components.first().getType(clss);
+//     }
+
        void activate();
 
        void deactivate();