org.eclipse.ecf.core.provider
Class BaseContainerInstantiator

java.lang.Object
  extended by org.eclipse.ecf.core.provider.BaseContainerInstantiator
All Implemented Interfaces:
IContainerInstantiator
Direct Known Subclasses:
BaseContainer.Instantiator, BaseRemoteServiceContainerInstantiator

public class BaseContainerInstantiator
extends java.lang.Object
implements IContainerInstantiator

Default implemenation of IContainerInstantiator. ECF provider implementers may subclass as desired.


Field Summary
protected static java.lang.Class[][] EMPTY_CLASS_ARRAY
           
protected static java.lang.String[] EMPTY_STRING_ARRAY
           
protected static java.lang.String[] NO_ADAPTERS_ARRAY
           
 
Constructor Summary
BaseContainerInstantiator()
           
 
Method Summary
 IContainer createInstance(ContainerTypeDescription description, java.lang.Object[] parameters)
          Create instance of IContainer.
protected  java.util.Set getAdaptersForClass(java.lang.Class clazz)
           
protected  java.lang.String[] getInterfacesAndAdaptersForClass(java.lang.Class clazz)
           
protected  java.util.Set getInterfacesForClass(java.lang.Class clazz)
           
protected  java.util.Set getInterfacesForClass(java.util.Set s, java.lang.Class clazz)
           
 java.lang.String[] getSupportedAdapterTypes(ContainerTypeDescription description)
          Get array of supported adapters for the given container type description.
 java.lang.String[] getSupportedIntents(ContainerTypeDescription description)
           
 java.lang.Class[][] getSupportedParameterTypes(ContainerTypeDescription description)
          Get array of parameter types for given container type description.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_ADAPTERS_ARRAY

protected static java.lang.String[] NO_ADAPTERS_ARRAY

EMPTY_STRING_ARRAY

protected static java.lang.String[] EMPTY_STRING_ARRAY

EMPTY_CLASS_ARRAY

protected static java.lang.Class[][] EMPTY_CLASS_ARRAY
Constructor Detail

BaseContainerInstantiator

public BaseContainerInstantiator()
Method Detail

getAdaptersForClass

protected java.util.Set getAdaptersForClass(java.lang.Class clazz)

getInterfacesForClass

protected java.util.Set getInterfacesForClass(java.util.Set s,
                                              java.lang.Class clazz)

getInterfacesForClass

protected java.util.Set getInterfacesForClass(java.lang.Class clazz)

getInterfacesAndAdaptersForClass

protected java.lang.String[] getInterfacesAndAdaptersForClass(java.lang.Class clazz)

createInstance

public IContainer createInstance(ContainerTypeDescription description,
                                 java.lang.Object[] parameters)
                          throws ContainerCreateException
Description copied from interface: IContainerInstantiator
Create instance of IContainer. This is the interface that container provider implementations must implement for the containerFactory extension point. The caller may optionally specify both argument types and arguments that will be passed into this method (and therefore to the provider implementation implementing this method). For example:

ContainerFactory.getDefault().createContainer("foocontainer",new Object { "hello" });

Specified by:
createInstance in interface IContainerInstantiator
Parameters:
description - the ContainerTypeDescription associated with the registered container provider implementation
parameters - parameters specified by the caller. May be null if no parameters are passed in by caller to ContainerFactory.getDefault().createContainer(...)
Returns:
IContainer instance. The provider implementation must return a valid object implementing IContainer OR throw a ContainerCreateException. Null will not be returned.
Throws:
ContainerCreateException

getSupportedAdapterTypes

public java.lang.String[] getSupportedAdapterTypes(ContainerTypeDescription description)
Description copied from interface: IContainerInstantiator
Get array of supported adapters for the given container type description. Providers implement this method to allow clients to inspect the adapter types exposed by the container described by the given description. The returned array entries will be the fully qualified names of the adapter classes. Note that the returned types do not guarantee that a subsequent call to IContainer.getAdapter(Class) with the same type name as a returned value will return a non-null result. In other words, even if the class name is in the returned array, subsequent calls to IContainer.getAdapter(Class) may still return null.

Specified by:
getSupportedAdapterTypes in interface IContainerInstantiator
Parameters:
description - the ContainerTypeDescription to report adapters for. Must not be null.
Returns:
String[] of supported adapters. The entries in the returned array will be the fully qualified class names of adapters supported by the given description. null may be returned by the provider if no adapters are supported for this description.

getSupportedParameterTypes

public java.lang.Class[][] getSupportedParameterTypes(ContainerTypeDescription description)
Description copied from interface: IContainerInstantiator
Get array of parameter types for given container type description. Providers implement this method to allow clients to inspect the available set of parameter types understood for calls to IContainerInstantiator.createInstance(ContainerTypeDescription, Object[]).

Each of the rows of the returned array specifies a Class[] of parameter types. These parameter types correspond to the types of Object[] that can be passed into the second parameter of IContainerInstantiator.createInstance(ContainerTypeDescription, Object[]).

Consider the following example:

 public Class[][] getSupportedParameterTypes() {
        return new Class[][] { { String.class }, { String.class, String.class } };
 }
 
The above means that there are two acceptable values for the Object [] passed into IContainerInstantiator.createInstance(ContainerTypeDescription, Object[]): 1) a single String, and 2) two Strings. These would therefore be acceptable as input to createInstance:
 IContainer container = ContainerFactory.getDefault().createContainer(
                description, new Object[] { "Hello" });
 
 IContainer container2 = ContainerFactory.getDefault().createContainer(
                description, new Object[] { "Hello" });
 

Specified by:
getSupportedParameterTypes in interface IContainerInstantiator
Parameters:
description - the ContainerTypeDescription to return parameter types for
Returns:
Class[][] array of Class[]s. Each row in the table corresponds to a Class[] that describes the types of Objects in Object[] for second parameter to IContainerInstantiator.createInstance(ContainerTypeDescription, Object[]). null returned if no parameter types supported for given description.

getSupportedIntents

public java.lang.String[] getSupportedIntents(ContainerTypeDescription description)
Specified by:
getSupportedIntents in interface IContainerInstantiator