public IContainer createContainer(ContainerTypeDescription containerTypeDescription, Object[] parameters) throws ContainerCreateException {
String method = "createContainer";
Trace.entering(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_ENTERING, ContainerFactory.class, method, new Object[] {containerTypeDescription, Trace.getArgumentsString(parameters)});
if (containerTypeDescription == null)
throwContainerCreateException("ContainerTypeDescription cannot be null", null, method);
ContainerTypeDescription cd = getDescription0(containerTypeDescription);
if (cd == null)
throwContainerCreateException("ContainerTypeDescription '"
+ containerTypeDescription.getName() + "' not found", null, method);
IContainerInstantiator instantiator = null;
try {
instantiator = cd.getInstantiator();
} catch (Exception e) {
throwContainerCreateException("createContainer cannot get IContainerInstantiator for description : "
+ containerTypeDescription, e, method);
}
IContainer container = instantiator.createInstance(containerTypeDescription, parameters);
if (container == null)
throwContainerCreateException("Instantiator returned null for '"
+ cd.getName() + "'", null, method);
ID containerID = container.getID();
if (containerID != null)
addContainer(container, cd);
Trace.exiting(ECFPlugin.PLUGIN_ID, ECFDebugOptions.METHODS_EXITING, ContainerFactory.class, method, container);
return container;
}