| /******************************************************************************* |
| * 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}; |
| } |
| } |