X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fregister%2FComponentRegister.java;h=d78b6badbeb2dea14b6ea9103dc1760b71a0ea50;hb=7b242851c0094d13cbaca5b68261ad92c873a59f;hp=d5f9ea4211d67c774cddfa25a9d3b3a7639323fe;hpb=dbb84b4ec2d313ec0724d035c32f482ac57974c5;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/register/ComponentRegister.java b/org.argeo.util/src/org/argeo/util/register/ComponentRegister.java index d5f9ea421..d78b6badb 100644 --- a/org.argeo.util/src/org/argeo/util/register/ComponentRegister.java +++ b/org.argeo.util/src/org/argeo/util/register/ComponentRegister.java @@ -10,6 +10,20 @@ public interface ComponentRegister { SortedSet> find(Class clss, Predicate> filter); + default Component.PublishedType getSingleton(Class type) { + SortedSet> found = find(type, null); + if (found.size() == 0) + throw new IllegalStateException("No component found for " + type); + return found.first().getType(type); + } + + default T getObject(Class clss) { + SortedSet> found = find(clss, null); + if (found.size() == 0) + return null; + return found.first().get(); + } + Component get(Object instance); // default PublishedType getType(Class clss) {