| /******************************************************************************* |
| * Copyright (c) 2004 Composent, Inc. and others. All rights reserved. This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License v1.0 which accompanies this distribution, and is |
| * available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: Composent, Inc. - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ecf.core.sharedobject; |
| |
| import org.eclipse.ecf.core.ContainerCreateException; |
| import org.eclipse.ecf.core.ContainerFactory; |
| import org.eclipse.ecf.core.ContainerTypeDescription; |
| import org.eclipse.ecf.core.IContainer; |
| import org.eclipse.ecf.core.util.Trace; |
| import org.eclipse.ecf.internal.core.sharedobject.Activator; |
| |
| /** |
| * Factory for creating {@link ISharedObjectContainer} instances. This class |
| * provides ECF clients an entry point to constructing |
| * {@link ISharedObjectContainer} instances. <br> |
| * <br> |
| * Here is an example use of the SharedObjectContainerFactory to construct an |
| * instance of the 'standalone' container (has no connection to other |
| * containers): <br> |
| * <br> |
| * <code> |
| * ISharedObjectContainer container = <br> |
| * SharedObjectContainerFactory.getDefault().createSharedObjectContainer('standalone'); |
| * <br><br> |
| * ...further use of container variable here... |
| * </code> |
| * |
| */ |
| public class SharedObjectContainerFactory implements |
| ISharedObjectContainerFactory { |
| protected static ISharedObjectContainerFactory instance = null; |
| static { |
| instance = new SharedObjectContainerFactory(); |
| } |
| |
| protected SharedObjectContainerFactory() { |
| } |
| |
| public static ISharedObjectContainerFactory getDefault() { |
| return instance; |
| } |
| |
| private static void trace(String msg) { |
| Trace.trace(Activator.getDefault(), msg); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ecf.core.ISharedObjectContainerFactory#createSharedObjectContainer(org.eclipse.ecf.core.SharedObjectContainerDescription, |
| * java.lang.String[], java.lang.Object[]) |
| */ |
| public ISharedObjectContainer createSharedObjectContainer( |
| ContainerTypeDescription desc, String[] argTypes, Object[] args) |
| throws ContainerCreateException { |
| trace("createSharedObjectContainer(" + desc + "," |
| + Trace.getArgumentsString(argTypes) + "," |
| + Trace.getArgumentsString(args) + ")"); |
| if (desc == null) |
| throw new ContainerCreateException( |
| "ContainerTypeDescription cannot be null"); |
| IContainer newContainer = ContainerFactory.getDefault() |
| .createContainer(desc, args); |
| ISharedObjectContainer soContainer = (ISharedObjectContainer) newContainer |
| .getAdapter(ISharedObjectContainer.class); |
| if (soContainer == null) { |
| newContainer.dispose(); |
| throw new ContainerCreateException( |
| "new container is not a shared object container"); |
| } |
| return soContainer; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ecf.core.ISharedObjectContainerFactory#createSharedObjectContainer(java.lang.String) |
| */ |
| public ISharedObjectContainer createSharedObjectContainer( |
| String descriptionName) throws ContainerCreateException { |
| return createSharedObjectContainer(ContainerFactory.getDefault() |
| .getDescriptionByName(descriptionName), null, null); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ecf.core.ISharedObjectContainerFactory#createSharedObjectContainer(java.lang.String, |
| * java.lang.Object[]) |
| */ |
| public ISharedObjectContainer createSharedObjectContainer( |
| String descriptionName, Object[] args) |
| throws ContainerCreateException { |
| return createSharedObjectContainer(ContainerFactory.getDefault() |
| .getDescriptionByName(descriptionName), null, args); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ecf.core.ISharedObjectContainerFactory#createSharedObjectContainer(java.lang.String, |
| * java.lang.String[], java.lang.Object[]) |
| */ |
| public ISharedObjectContainer createSharedObjectContainer( |
| String descriptionName, String[] argsTypes, Object[] args) |
| throws ContainerCreateException { |
| return createSharedObjectContainer(ContainerFactory.getDefault() |
| .getDescriptionByName(descriptionName), argsTypes, args); |
| } |
| } |