/******************************************************************************* * Copyright (c) 2010-2011 Naumen. 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: * Pavel Samolisov - initial API and implementation *******************************************************************************/ package org.eclipse.ecf.internal.remoteservice.rpc; import java.util.*; import org.eclipse.ecf.core.*; import org.eclipse.ecf.core.identity.IDFactory; import org.eclipse.ecf.core.provider.BaseContainerInstantiator; import org.eclipse.ecf.core.provider.IRemoteServiceContainerInstantiator; import org.eclipse.ecf.remoteservice.rpc.client.RpcClientContainer; import org.eclipse.ecf.remoteservice.rpc.identity.RpcId; import org.eclipse.ecf.remoteservice.rpc.identity.RpcNamespace; public class RpcClientContainerInstantiator extends BaseContainerInstantiator implements IRemoteServiceContainerInstantiator { private static final String RPC_CONTAINER_TYPE = "ecf.xmlrpc.client"; //$NON-NLS-1$ public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException { try { RpcId ID = null; if (parameters != null && parameters[0] instanceof RpcId) ID = (RpcId) parameters[0]; else ID = (RpcId) IDFactory.getDefault().createID(RpcNamespace.NAME, parameters); return new RpcClientContainer(ID); } catch (Exception e) { throw new ContainerCreateException("Could not create RPCClientContainer", e); //$NON-NLS-1$ } } public String[] getSupportedAdapterTypes(ContainerTypeDescription description) { return getInterfacesAndAdaptersForClass(RpcClientContainer.class); } public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) { RpcNamespace namespace = (RpcNamespace) IDFactory.getDefault().getNamespaceByName(RpcNamespace.NAME); return namespace.getSupportedParameterTypes(); } public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) { if (RPC_CONTAINER_TYPE.equals(description.getName())) { List supportedConfigs = Arrays.asList(exporterSupportedConfigs); if (supportedConfigs.contains(RPC_CONTAINER_TYPE)) return new String[] {RPC_CONTAINER_TYPE}; } return null; } public Dictionary getPropertiesForImportedConfigs(ContainerTypeDescription description, String[] importedConfigs, Dictionary exportedProperties) { return null; } public String[] getSupportedConfigs(ContainerTypeDescription description) { return new String[] {RPC_CONTAINER_TYPE}; } }