]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/util/register/ComponentRegister.java
d78b6badbeb2dea14b6ea9103dc1760b71a0ea50
1 package org
.argeo
.util
.register
;
4 import java
.util
.SortedSet
;
5 import java
.util
.function
.Predicate
;
7 /** A register of components which can coordinate their activation. */
8 public interface ComponentRegister
{
9 long register(Component
<?
> component
);
11 <T
> SortedSet
<Component
<?
extends T
>> find(Class
<T
> clss
, Predicate
<Map
<String
, Object
>> filter
);
13 default <T
> Component
.PublishedType
<T
> getSingleton(Class
<T
> type
) {
14 SortedSet
<Component
<?
extends T
>> found
= find(type
, null);
15 if (found
.size() == 0)
16 throw new IllegalStateException("No component found for " + type
);
17 return found
.first().getType(type
);
20 default <T
> T
getObject(Class
<T
> clss
) {
21 SortedSet
<Component
<?
extends T
>> found
= find(clss
, null);
22 if (found
.size() == 0)
24 return found
.first().get();
27 Component
<?
> get(Object instance
);
29 // default <T> PublishedType<T> getType(Class<T> clss) {
30 // SortedSet<Component<? extends T>> components = find(clss, null);
31 // if (components.size() == 0)
33 // return components.first().getType(clss);