com.sun.hk2.component
Class AbstractInhabitantImpl<T>

java.lang.Object
  extended by com.sun.hk2.component.AbstractInhabitantImpl<T>
All Implemented Interfaces:
Holder<T>, Inhabitant<T>
Direct Known Subclasses:
AbstractWombImpl, ExistingSingletonInhabitant, LazyInhabitant, ScopedInhabitant, SingletonInhabitant

public abstract class AbstractInhabitantImpl<T>
extends java.lang.Object
implements Inhabitant<T>

Partial implementation of Inhabitant that defines methods whose semantics is fixed by Habitat.

Author:
Kohsuke Kawaguchi

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.sun.hk2.component.Holder
Holder.Impl<T>
 
Constructor Summary
AbstractInhabitantImpl()
           
 
Method Summary
 java.util.Collection<Inhabitant> companions()
          Returns the companion inhabitants associated with this inhabitant.
 T get()
          Returns the instance of this inhabitant.
<T> T
getSerializedMetadata(java.lang.Class<T> type)
          Obtains the metadata serialized into String.
<T> T
getSerializedMetadata(java.lang.Class<T> type, java.lang.String key)
          Obtains the serialized metadata.
 Inhabitant lead()
          If this inhabitant is a companion to another inhabitant (called "lead"), This method returns that inhabitant.
 void setCompanions(java.util.Collection<Inhabitant> companions)
          This method is only meant to be invoked by Habitat.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jvnet.hk2.component.Inhabitant
get, isInstantiated, metadata, release, type, typeName
 

Constructor Detail

AbstractInhabitantImpl

public AbstractInhabitantImpl()
Method Detail

get

public final T get()
Description copied from interface: Inhabitant
Returns the instance of this inhabitant.

Some Inhabitants return the same instance for multiple invocations (AKA singleton), but the method may return different instances to invocations from different context (AKA scope.) The extreme case is where the each invocation returns a different object.

Specified by:
get in interface Holder<T>
Specified by:
get in interface Inhabitant<T>

getSerializedMetadata

public <T> T getSerializedMetadata(java.lang.Class<T> type,
                                   java.lang.String key)
Description copied from interface: Inhabitant
Obtains the serialized metadata.

This method is a wrapper around Inhabitant.metadata() and useful for defining a highly structured metadata that doesn't easily fit a simple string representation.

The implementation of this method is to obtain the value associated with this key as metadata().getOne(key), and if that exists, treat the value as base64-encoded binary, and deserializes it and returns the object.

The classes used in the serialization need to be available during the build time (normally during the HK2 compile mojo runs) so that the metadata can be serialized. The evolution of these classes need to be careful done, otherwise the deserialization of the metadata may fail unexpectedly.

Specified by:
getSerializedMetadata in interface Inhabitant<T>
Returns:
the deserialized object.

getSerializedMetadata

public final <T> T getSerializedMetadata(java.lang.Class<T> type)
Description copied from interface: Inhabitant
Obtains the metadata serialized into String.

This is a convenient short-cut that does getSerializedMetadata(type,type.getName())

Specified by:
getSerializedMetadata in interface Inhabitant<T>

lead

public Inhabitant lead()
Description copied from interface: Inhabitant
If this inhabitant is a companion to another inhabitant (called "lead"), This method returns that inhabitant. Otherwise null.

Specified by:
lead in interface Inhabitant<T>

companions

public final java.util.Collection<Inhabitant> companions()
Description copied from interface: Inhabitant
Returns the companion inhabitants associated with this inhabitant.

This method works with the Inhabitant.lead() method in pairs, such that the following condition always holds:

x.companions().contains(y) <-> y.lead()==x

Specified by:
companions in interface Inhabitant<T>
Returns:
Can be empty but never null.

setCompanions

public final void setCompanions(java.util.Collection<Inhabitant> companions)
Description copied from interface: Inhabitant
This method is only meant to be invoked by Habitat.

Specified by:
setCompanions in interface Inhabitant<T>


Copyright © 2009 Sun Microsystems, Inc.. All Rights Reserved.