package org.osgi.cdi.api.extension; import java.lang.annotation.Annotation; import javax.enterprise.util.TypeLiteral; /** * * @author Mathieu ANCELIN - SERLI (mathieu.ancelin@serli.com) */ // should extends Instance<T> but weld doesn't seems to like it public interface Service<T> extends Iterable<T> { T get(); Service<T> select(Annotation... qualifiers); <U extends T> Service<U> select(Class<U> subtype, Annotation... qualifiers); <U extends T> Service<U> select(TypeLiteral<U> subtype, Annotation... qualifiers); boolean isUnsatisfied(); boolean isAmbiguous(); int size(); }