Class StandardInjector

  • All Implemented Interfaces:
    org.int4.dirk.api.CandidateRegistry, org.int4.dirk.api.Injector, org.int4.dirk.api.InstanceResolver

    public class StandardInjector
    extends java.lang.Object
    implements org.int4.dirk.api.Injector
    A standard implementation of Injector provided with the framework.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean contains​(java.lang.reflect.Type type, java.lang.Object... qualifiers)  
      org.int4.dirk.api.CandidateRegistry getCandidateRegistry()  
      <T> T getInstance​(java.lang.Class<T> cls, java.lang.Object... qualifiers)  
      <T> T getInstance​(java.lang.reflect.Type type, java.lang.Object... qualifiers)  
      org.int4.dirk.api.InstanceResolver getInstanceResolver()  
      <T> java.util.List<T> getInstances​(java.lang.Class<T> cls, java.lang.Object... qualifiers)  
      <T> java.util.List<T> getInstances​(java.lang.reflect.Type type, java.lang.Object... qualifiers)  
      void register​(java.lang.reflect.Type concreteType)  
      void register​(java.util.Collection<java.lang.reflect.Type> concreteTypes)  
      void registerInstance​(java.lang.Object instance, java.lang.annotation.Annotation... qualifiers)  
      void remove​(java.lang.reflect.Type concreteType)  
      void remove​(java.util.Collection<java.lang.reflect.Type> concreteTypes)  
      void removeInstance​(java.lang.Object instance, java.lang.annotation.Annotation... qualifiers)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • StandardInjector

        public StandardInjector​(java.util.Collection<InjectionTargetExtension<?,​?>> injectionTargetExtensions,
                                java.util.Collection<TypeRegistrationExtension> typeRegistrationExtensions,
                                java.util.List<ScopeResolver> scopeResolvers,
                                InjectorStrategy strategy,
                                boolean autoDiscovery)
        Constructs a new instance.
        Parameters:
        injectionTargetExtensions - a collection of InjectionTargetExtensions, cannot be null or contain null but can be empty
        typeRegistrationExtensions - a collection of TypeRegistrationExtensions, cannot be null or contain null but can be empty
        scopeResolvers - a list of ScopeResolvers, cannot be null or contain null but can be empty
        strategy - an InjectorStrategy, cannot be null
        autoDiscovery - true if the injector should automatically register (auto discover) types encountered during instantiation that have not been explicitly registered, or {code false} to allow manual registration only
    • Method Detail

      • getInstanceResolver

        public org.int4.dirk.api.InstanceResolver getInstanceResolver()
        Specified by:
        getInstanceResolver in interface org.int4.dirk.api.Injector
      • getCandidateRegistry

        public org.int4.dirk.api.CandidateRegistry getCandidateRegistry()
        Specified by:
        getCandidateRegistry in interface org.int4.dirk.api.Injector
      • getInstance

        public <T> T getInstance​(java.lang.reflect.Type type,
                                 java.lang.Object... qualifiers)
                          throws org.int4.dirk.api.instantiation.UnsatisfiedResolutionException,
                                 org.int4.dirk.api.instantiation.AmbiguousResolutionException,
                                 org.int4.dirk.api.instantiation.CreationException,
                                 org.int4.dirk.api.scope.ScopeNotActiveException
        Specified by:
        getInstance in interface org.int4.dirk.api.InstanceResolver
        Throws:
        org.int4.dirk.api.instantiation.UnsatisfiedResolutionException
        org.int4.dirk.api.instantiation.AmbiguousResolutionException
        org.int4.dirk.api.instantiation.CreationException
        org.int4.dirk.api.scope.ScopeNotActiveException
      • getInstance

        public <T> T getInstance​(java.lang.Class<T> cls,
                                 java.lang.Object... qualifiers)
                          throws org.int4.dirk.api.instantiation.UnsatisfiedResolutionException,
                                 org.int4.dirk.api.instantiation.AmbiguousResolutionException,
                                 org.int4.dirk.api.instantiation.CreationException,
                                 org.int4.dirk.api.scope.ScopeNotActiveException
        Specified by:
        getInstance in interface org.int4.dirk.api.InstanceResolver
        Throws:
        org.int4.dirk.api.instantiation.UnsatisfiedResolutionException
        org.int4.dirk.api.instantiation.AmbiguousResolutionException
        org.int4.dirk.api.instantiation.CreationException
        org.int4.dirk.api.scope.ScopeNotActiveException
      • getInstances

        public <T> java.util.List<T> getInstances​(java.lang.reflect.Type type,
                                                  java.lang.Object... qualifiers)
                                           throws org.int4.dirk.api.instantiation.CreationException
        Specified by:
        getInstances in interface org.int4.dirk.api.InstanceResolver
        Throws:
        org.int4.dirk.api.instantiation.CreationException
      • getInstances

        public <T> java.util.List<T> getInstances​(java.lang.Class<T> cls,
                                                  java.lang.Object... qualifiers)
                                           throws org.int4.dirk.api.instantiation.CreationException
        Specified by:
        getInstances in interface org.int4.dirk.api.InstanceResolver
        Throws:
        org.int4.dirk.api.instantiation.CreationException
      • contains

        public boolean contains​(java.lang.reflect.Type type,
                                java.lang.Object... qualifiers)
        Specified by:
        contains in interface org.int4.dirk.api.CandidateRegistry
      • register

        public void register​(java.lang.reflect.Type concreteType)
                      throws org.int4.dirk.api.definition.AutoDiscoveryException,
                             org.int4.dirk.api.definition.DefinitionException,
                             org.int4.dirk.api.definition.DependencyException
        Specified by:
        register in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.AutoDiscoveryException
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException
      • register

        public void register​(java.util.Collection<java.lang.reflect.Type> concreteTypes)
                      throws org.int4.dirk.api.definition.AutoDiscoveryException,
                             org.int4.dirk.api.definition.DefinitionException,
                             org.int4.dirk.api.definition.DependencyException
        Specified by:
        register in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.AutoDiscoveryException
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException
      • registerInstance

        public void registerInstance​(java.lang.Object instance,
                                     java.lang.annotation.Annotation... qualifiers)
                              throws org.int4.dirk.api.definition.DefinitionException,
                                     org.int4.dirk.api.definition.DependencyException
        Specified by:
        registerInstance in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException
      • remove

        public void remove​(java.lang.reflect.Type concreteType)
                    throws org.int4.dirk.api.definition.AutoDiscoveryException,
                           org.int4.dirk.api.definition.DefinitionException,
                           org.int4.dirk.api.definition.DependencyException
        Specified by:
        remove in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.AutoDiscoveryException
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException
      • remove

        public void remove​(java.util.Collection<java.lang.reflect.Type> concreteTypes)
                    throws org.int4.dirk.api.definition.AutoDiscoveryException,
                           org.int4.dirk.api.definition.DefinitionException,
                           org.int4.dirk.api.definition.DependencyException
        Specified by:
        remove in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.AutoDiscoveryException
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException
      • removeInstance

        public void removeInstance​(java.lang.Object instance,
                                   java.lang.annotation.Annotation... qualifiers)
                            throws org.int4.dirk.api.definition.DefinitionException,
                                   org.int4.dirk.api.definition.DependencyException
        Specified by:
        removeInstance in interface org.int4.dirk.api.CandidateRegistry
        Throws:
        org.int4.dirk.api.definition.DefinitionException
        org.int4.dirk.api.definition.DependencyException