blob: 248b63a74027328042f6ad7c23ce282c4a0ab3a2 [file] [log] [blame]
/*******************************************************************************
* 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};
}
}