org.glassfish.hk2.api
Interface ActiveDescriptor<T>

Type Parameters:
T - This is the type produced by the cache and consumed by the cache
All Superinterfaces:
Descriptor, SingleCache<T>
All Known Implementing Classes:
AbstractActiveDescriptor, AliasDescriptor, AutoActiveDescriptor, ConfigBean, ConstantActiveDescriptor, ConstantActiveDescriptor, Dom, DomDescriptor, ExistingSingletonInhabitant, SystemDescriptor

public interface ActiveDescriptor<T>
extends Descriptor, SingleCache<T>

An ActiveDescriptor contains information about a Descriptor after it has been reified. Most of the methods in an ActiveDescriptor cannot be called until the isReified method return true. Prior to that the information is not yet known. ActiveDescriptors can be reified with the ServiceLocator.reifyDescriptor method.

ActiveDescriptors may also be provided to the system pre-reified, which is useful when the Service described may be produced by a third-party system. In this case the ActiveDescriptors create method must use the third-party system in order to create instances of the described service

Author:
jwells

Method Summary
 T create(ServiceHandle<?> root)
          Creates an instance of the ActiveDescriptor.
 void dispose(T instance)
          Disposes this instance.
 Set<Type> getContractTypes()
          The set of types that this ActiveDescriptor must produce.
 Long getFactoryLocatorId()
          If this ActiveDescriptor has DescriptorType of PROVIDE_METHOD then this field will return the ServiceId of its associated Factory service.
 Long getFactoryServiceId()
          If this ActiveDescriptor has DescriptorType of PROVIDE_METHOD then this field will return the ServiceId of its associated Factory service.
 Class<?> getImplementationClass()
          The implementation class that should be used to generate new instances of this descriptor.
 List<Injectee> getInjectees()
          Returns the full list of Injectees this class has.
 Set<Annotation> getQualifierAnnotations()
          The full set of qualifiers that this ActiveDescriptor provides
 Class<? extends Annotation> getScopeAnnotation()
          Returns the scope that this ActiveDescriptor belongs to
 boolean isReified()
          This method returns true if this descriptor has been reified (class loaded).
 
Methods inherited from interface org.glassfish.hk2.api.Descriptor
getAdvertisedContracts, getBaseDescriptor, getDescriptorType, getImplementation, getLoader, getLocatorId, getMetadata, getName, getQualifiers, getRanking, getScope, getServiceId, setRanking
 
Methods inherited from interface org.glassfish.hk2.api.SingleCache
getCache, isCacheSet, releaseCache, setCache
 

Method Detail

isReified

boolean isReified()
This method returns true if this descriptor has been reified (class loaded). If this method returns false then the other methods in this interface will throw an IllegalStateException. Once this method returns true it may be

Returns:
true if this descriptor has been reified, false otherwise

getImplementationClass

Class<?> getImplementationClass()
The implementation class that should be used to generate new instances of this descriptor.

If the class returned is a Factory, then the factory is used to create instances. In this case the system will get an instance of the factory and use it to create the instances

Returns:
The class that directly implements the contract types, or the class that is the factory for an object that implements the contract types

getContractTypes

Set<Type> getContractTypes()
The set of types that this ActiveDescriptor must produce. These types may be Classes or ParameterizedTypes, and may be no other subclass of Type

Returns:
the set of types this ActiveDescriptor must implement or extend

getScopeAnnotation

Class<? extends Annotation> getScopeAnnotation()
Returns the scope that this ActiveDescriptor belongs to

Returns:
The scope of this ActiveDescriptor

getQualifierAnnotations

Set<Annotation> getQualifierAnnotations()
The full set of qualifiers that this ActiveDescriptor provides

Returns:
The set of annotations that this ActiveDescriptor provides

getInjectees

List<Injectee> getInjectees()
Returns the full list of Injectees this class has. These references will be resolved prior to the class being constructed, even if these injectees are field or method injectees.

If this descriptor is describing a factory created type then this list must have zero length

Returns:
Will not return null, but may return an empty list. The set of Injectees that must be resolved before this ActiveDescriptor can be constructed

getFactoryServiceId

Long getFactoryServiceId()
If this ActiveDescriptor has DescriptorType of PROVIDE_METHOD then this field will return the ServiceId of its associated Factory service. Otherwise this method should return null

Returns:
The service ID of the associated factory service

getFactoryLocatorId

Long getFactoryLocatorId()
If this ActiveDescriptor has DescriptorType of PROVIDE_METHOD then this field will return the ServiceId of its associated Factory service. Otherwise this method should return null

Returns:
The locator ID of the associated factory service

create

T create(ServiceHandle<?> root)
Creates an instance of the ActiveDescriptor. All of the Injectee's must be created prior to instantiation, and associated with the ExtendedProvider so that they can be destroyed properly

Parameters:
root - The root service handle, which can be used to associated all the PerLookup objects with this creation
Returns:
An instance of this ActiveDescriptor

dispose

void dispose(T instance)
Disposes this instance. All the PerLookup objects that were created for this instance will be destroyed after this object has been destroyed

Parameters:
instance - The instance to destroy


Copyright © 2013 Oracle Corporation. All Rights Reserved.