Class DescriptorBuilderImpl

    • Field Detail

      • name

        private java.lang.String name
      • contracts

        private final java.util.HashSet<java.lang.String> contracts
      • scope

        private java.lang.String scope
      • qualifiers

        private final java.util.HashSet<java.lang.String> qualifiers
      • metadatas

        private final java.util.HashMap<java.lang.String,​java.util.List<java.lang.String>> metadatas
      • implementation

        private java.lang.String implementation
      • rank

        private int rank
      • proxy

        private java.lang.Boolean proxy
      • proxyForSameScope

        private java.lang.Boolean proxyForSameScope
      • analysisName

        private java.lang.String analysisName
    • Constructor Detail

      • DescriptorBuilderImpl

        public DescriptorBuilderImpl()
        The basid constructor
      • DescriptorBuilderImpl

        public DescriptorBuilderImpl​(java.lang.String implementation,
                                     boolean addToContracts)
        A descriptor builder with the given implementation
        Parameters:
        implementation - The implementation this should take
        addToContracts - Whether or not to add the implementation to the set of contracts
    • Method Detail

      • named

        public DescriptorBuilder named​(java.lang.String name)
                                throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        The name for this descriptor object. Note that at the current time a descriptor can only have one name, hence this method will throw an IllegalArgumentException if named is called more than once.
        Specified by:
        named in interface DescriptorBuilder
        Parameters:
        name - The name to be associated with this Descriptor
        Returns:
        A DescriptorBuilder with the given name
        Throws:
        java.lang.IllegalArgumentException - if there is more than one name on the predicate
      • to

        public DescriptorBuilder to​(java.lang.Class<?> contract)
                             throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A contract to be associated with this descriptor object.
        Specified by:
        to in interface DescriptorBuilder
        Parameters:
        contract - A class that is annotated with Contract to be associated with this Descriptor
        Returns:
        A DescriptorBuilder with the given name
        Throws:
        java.lang.IllegalArgumentException - on failures
      • to

        public DescriptorBuilder to​(java.lang.String contract)
                             throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A contract to be associated with this descriptor object.
        Specified by:
        to in interface DescriptorBuilder
        Parameters:
        contract - The fully qualified name of a class that is annotated with Contract.
        Returns:
        A DescriptorBuilder with the given name
        Throws:
        java.lang.IllegalArgumentException - on failures
      • in

        public DescriptorBuilder in​(java.lang.Class<? extends java.lang.annotation.Annotation> scope)
                             throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A scope to be associated with this descriptor object. Note that at the current time a descriptor can only have one scope, hence this method will throw an IllegalArgumentException if in is called more than once.
        Specified by:
        in in interface DescriptorBuilder
        Parameters:
        scope - The class of the scope this descriptor is to have.
        Returns:
        A DescriptorBuilder with the given scope
        Throws:
        java.lang.IllegalArgumentException - If in is called more than once
      • in

        public DescriptorBuilder in​(java.lang.String scope)
                             throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A scope to be associated with this descriptor object. Note that at the current time a descriptor can only have one scope, hence this method will throw an IllegalArgumentException if in is called more than once.
        Specified by:
        in in interface DescriptorBuilder
        Parameters:
        scope - The fully qualified class name of the scope this predicate is to have.
        Returns:
        A DescriptorBuilder with the given scope
        Throws:
        java.lang.IllegalArgumentException - If in is called more than once
      • qualifiedBy

        public DescriptorBuilder qualifiedBy​(java.lang.annotation.Annotation annotation)
                                      throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A qualifier to be associated with this descriptor object. It is dangerous to use this method with a ghost annotation (one that is not on the object) if that annotation has fields, as these fields will NOT survive being put into the Descriptor. Use this method with care and ONLY with annotations that do not have fields. A safe version of this method for use with ghost annotations is ActiveDescriptorBuilder.qualifiedBy(Annotation)
        Specified by:
        qualifiedBy in interface DescriptorBuilder
        Parameters:
        annotation - The annotation to be associated with this descriptor
        Returns:
        A DescriptorBuilder with the given annotation
        Throws:
        java.lang.IllegalArgumentException - on failures
      • qualifiedBy

        public DescriptorBuilder qualifiedBy​(java.lang.String annotation)
                                      throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        A qualifier to be associated with this descriptor object
        Specified by:
        qualifiedBy in interface DescriptorBuilder
        Parameters:
        annotation - The fully qualified class name of an annotation to be associated with this descriptor
        Returns:
        A DescriptorBuilder with the given annotation
        Throws:
        java.lang.IllegalArgumentException - on failures
      • has

        public DescriptorBuilder has​(java.lang.String key,
                                     java.lang.String value)
                              throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        An instance of data to be associated with this descriptor
        Specified by:
        has in interface DescriptorBuilder
        Parameters:
        key - The key for the data to be associated with this descriptor
        value - The value this key should take (single value metadata)
        Returns:
        A DescriptorBuilder with the given metadata
        Throws:
        java.lang.IllegalArgumentException
      • has

        public DescriptorBuilder has​(java.lang.String key,
                                     java.util.List<java.lang.String> values)
                              throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        An instance of data to be associated with this descriptor
        Specified by:
        has in interface DescriptorBuilder
        Parameters:
        key - The key for the data to be associated with this descriptor
        values - The values this key should take (single value metadata)
        Returns:
        A DescriptorBuilder with the given metadata
        Throws:
        java.lang.IllegalArgumentException
      • ofRank

        public DescriptorBuilder ofRank​(int rank)
        Description copied from interface: DescriptorBuilder
        The rank to be associated with this descriptor. The last rank bound wins
        Specified by:
        ofRank in interface DescriptorBuilder
        Parameters:
        rank - The rank to be associated with this descriptor.
        Returns:
        A DescriptorBuilder with the given rank
      • proxy

        public DescriptorBuilder proxy()
        Description copied from interface: DescriptorBuilder
        This will cause the isProxiable field of the returned descriptor to return true (it will force this descriptor to use proxies).
        Specified by:
        proxy in interface DescriptorBuilder
        Returns:
        A DescriptorBuilder with the proxiable field set to true
      • proxy

        public DescriptorBuilder proxy​(boolean forceProxy)
        Description copied from interface: DescriptorBuilder
        This will cause the isProxiable field of the returned descriptor to return the given value.
        Specified by:
        proxy in interface DescriptorBuilder
        Parameters:
        forceProxy - if true then this descriptor will be proxied, if false then this descriptor will NOT be proxied
        Returns:
        A DescriptorBuilder with the proxiable field set to the given value
      • proxyForSameScope

        public DescriptorBuilder proxyForSameScope()
        Description copied from interface: DescriptorBuilder
        This will cause the isProxyForSameScope field of the returned descriptor to return true (it will force this descriptor to proxy even when injecting into the same scope).
        Specified by:
        proxyForSameScope in interface DescriptorBuilder
        Returns:
        A DescriptorBuilder with the proxyForSameScope field set to true
      • proxyForSameScope

        public DescriptorBuilder proxyForSameScope​(boolean proxyForSameScope)
        Description copied from interface: DescriptorBuilder
        This will cause the isProxyForSameScope field of the returned descriptor to return the given value.
        Specified by:
        proxyForSameScope in interface DescriptorBuilder
        Parameters:
        proxyForSameScope - if true then this descriptor will be proxied even when being injected into the same scope, if false then this descriptor will NOT be proxied when injected into a service of the same scope
        Returns:
        A DescriptorBuilder with the proxyForSameScope field set to the given value
      • localOnly

        public DescriptorBuilder localOnly()
        Description copied from interface: DescriptorBuilder
        This will cause the descriptorVisibility field of the returned descriptor to return LOCAL
        Specified by:
        localOnly in interface DescriptorBuilder
        Returns:
        A DescriptorBuilder with the descriptorVisibility field to be set to LOCAL
      • visibility

        public DescriptorBuilder visibility​(DescriptorVisibility visibility)
        Description copied from interface: DescriptorBuilder
        This will set the descriptorVisibility field of the returned descriptor
        Specified by:
        visibility in interface DescriptorBuilder
        Parameters:
        visibility - The non-null visibility that this descriptor should take
        Returns:
        A DescriptorBuilder with the descriptorVisibility field set to the input value
      • andLoadWith

        public DescriptorBuilder andLoadWith​(HK2Loader loader)
                                      throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        Call this if this descriptor should be loaded with the given HK2Loader
        Specified by:
        andLoadWith in interface DescriptorBuilder
        Parameters:
        loader - The loader to use with this descriptor
        Returns:
        A DescriptorBuilder with the given HK2Loader
        Throws:
        java.lang.IllegalArgumentException - if the HK2Loader is set non-null more than once
      • analyzeWith

        public DescriptorBuilder analyzeWith​(java.lang.String serviceName)
        Description copied from interface: DescriptorBuilder
        Call this if the descriptor should be analyzed with the ClassAnalyzer service of the given name
        Specified by:
        analyzeWith in interface DescriptorBuilder
        Parameters:
        serviceName - the name of the ClassAnalyzer service that should be used to analyze this service
        Returns:
        A DescriptorBuilder with the given analysis service
      • build

        public DescriptorImpl build()
                             throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        Generates a descriptor that can be used in binding operations
        Specified by:
        build in interface DescriptorBuilder
        Returns:
        The descriptor that has been built up with this DescriptorBuilder
        Throws:
        java.lang.IllegalArgumentException - if the built descriptor is invalid
      • buildFactory

        public FactoryDescriptors buildFactory​(java.lang.String factoryScope)
                                        throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        Generates a factory descriptor that can be used in binding operations. The generated factory service will have no name, no qualifiers and the same metadata as given to this builder. The generated service will have had the implementation class removed from its set of advertised contracts
        Specified by:
        buildFactory in interface DescriptorBuilder
        Parameters:
        factoryScope - The scope the factory service itself is in.
        Returns:
        The descriptor that has been built up with this DescriptorBuilder
        Throws:
        java.lang.IllegalArgumentException - if the built descriptor is invalid
      • buildFactory

        public FactoryDescriptors buildFactory()
                                        throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        Generates a factory descriptor that can be used in binding operations. The generated factory service will have no name, no qualifiers and the same metadata as given to this builder. The factory will be put into PerLookup scope
        Specified by:
        buildFactory in interface DescriptorBuilder
        Returns:
        The descriptor that has been built up with this DescriptorBuilder
        Throws:
        java.lang.IllegalArgumentException - if the built descriptor is invalid
      • buildFactory

        public FactoryDescriptors buildFactory​(java.lang.Class<? extends java.lang.annotation.Annotation> factoryScope)
                                        throws java.lang.IllegalArgumentException
        Description copied from interface: DescriptorBuilder
        Generates a factory descriptor that can be used in binding operations. The generated factory service will have no name, no qualifiers and the same metadata as given to this builder. The generated service will have had the implementation class removed from its set of advertised contracts
        Specified by:
        buildFactory in interface DescriptorBuilder
        Parameters:
        factoryScope - The scope the factory service itself is in. If this is null the PerLookup scope will be used
        Returns:
        The descriptor that has been built up with this DescriptorBuilder
        Throws:
        java.lang.IllegalArgumentException - if the built descriptor is invalid