/******************************************************************************* * Copyright (c) 2009 EclipseSource 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: * EclipseSource - initial API and implementation *******************************************************************************/ package org.eclipse.ecf.internal.remoteservice.rest; 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.rest.client.RestClientContainer; import org.eclipse.ecf.remoteservice.rest.identity.RestID; import org.eclipse.ecf.remoteservice.rest.identity.RestNamespace; /** * This class is omnly used for creating instances of {@link RestClientContainer}. */ public class RestClientContainerInstantiator extends BaseContainerInstantiator implements IRemoteServiceContainerInstantiator { protected static final String[] restIntents = {"passByValue", "exactlyOnce", "ordered",}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ private static final String REST_CLIENT_CONFIG = "ecf.rest.client"; //$NON-NLS-1$ public IContainer createInstance(ContainerTypeDescription description, Object[] parameters) throws ContainerCreateException { try { RestID restID = null; if (parameters != null && parameters[0] instanceof RestID) restID = (RestID) parameters[0]; else restID = (RestID) IDFactory.getDefault().createID(RestNamespace.NAME, parameters); return new RestClientContainer(restID); } catch (Exception e) { throw new ContainerCreateException("Could not create RestClientContainer", e); //$NON-NLS-1$ } } public String[] getSupportedAdapterTypes(ContainerTypeDescription description) { return getInterfacesAndAdaptersForClass(RestClientContainer.class); } public String[] getSupportedIntents(ContainerTypeDescription description) { return restIntents; } public Class[][] getSupportedParameterTypes(ContainerTypeDescription description) { RestNamespace restNamespace = (RestNamespace) IDFactory.getDefault().getNamespaceByName(RestNamespace.NAME); return restNamespace.getSupportedParameterTypes(); } public String[] getImportedConfigs(ContainerTypeDescription description, String[] exporterSupportedConfigs) { if (REST_CLIENT_CONFIG.equals(description.getName())) { List supportedConfigs = Arrays.asList(exporterSupportedConfigs); if (supportedConfigs.contains(REST_CLIENT_CONFIG)) return new String[] {REST_CLIENT_CONFIG}; } return null; } public Dictionary getPropertiesForImportedConfigs(ContainerTypeDescription description, String[] importedConfigs, Dictionary exportedProperties) { return null; } public String[] getSupportedConfigs(ContainerTypeDescription description) { return new String[] {REST_CLIENT_CONFIG}; } }