blob: 293e4f53de46e0ead5b9f7554ac871a2db0ef0c4 [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2013 Composent, Inc. and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Composent, Inc. - initial API and implementation
*
* SPDX-License-Identifier: EPL-2.0
*****************************************************************************/
package org.eclipse.ecf.remoteservice.servlet;
import java.util.Dictionary;
import org.eclipse.ecf.core.ContainerConnectException;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.ecf.core.sharedobject.SharedObjectAddException;
import org.eclipse.ecf.provider.generic.SOContainerConfig;
import org.eclipse.ecf.provider.generic.ServerSOContainer;
import org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject;
import org.eclipse.ecf.remoteservice.IRemoteFilter;
import org.eclipse.ecf.remoteservice.IRemoteService;
import org.eclipse.ecf.remoteservice.IRemoteServiceCallPolicy;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
import org.eclipse.ecf.remoteservice.IRemoteServiceID;
import org.eclipse.ecf.remoteservice.IRemoteServiceListener;
import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
import org.eclipse.equinox.concurrent.future.IFuture;
import org.osgi.framework.InvalidSyntaxException;
public class ServletServerContainer extends ServerSOContainer implements IRemoteServiceContainerAdapter {
private RegistrySharedObject remoteServiceAdapter;
protected RegistrySharedObject getRegistrySharedObject() {
return remoteServiceAdapter;
}
public ServletServerContainer(ID id) {
super(new SOContainerConfig(id));
remoteServiceAdapter = new RegistrySharedObject();
try {
getSharedObjectManager().addSharedObject(IDFactory.getDefault().createStringID(RegistrySharedObject.class.getName()), remoteServiceAdapter, null);
} catch (SharedObjectAddException e) {
throw new RuntimeException("Cannot add RegistrySharedObject",e);
}
}
public void addRemoteServiceListener(IRemoteServiceListener listener) {
getRegistrySharedObject().addRemoteServiceListener(listener);
}
public void removeRemoteServiceListener(IRemoteServiceListener listener) {
getRegistrySharedObject().removeRemoteServiceListener(listener);
}
public IRemoteServiceRegistration registerRemoteService(String[] clazzes,
Object service, @SuppressWarnings("rawtypes") Dictionary properties) {
return getRegistrySharedObject().registerRemoteService(clazzes, service, properties);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
ID[] idFilter, String clazz, String filter)
throws InvalidSyntaxException, ContainerConnectException {
return getRegistrySharedObject().getRemoteServiceReferences(target, clazz, filter);
}
@SuppressWarnings("rawtypes")
public IFuture asyncGetRemoteServiceReferences(ID target, ID[] idFilter,
String clazz, String filter) {
return getRegistrySharedObject().asyncGetRemoteServiceReferences(target, clazz, filter);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID[] idFilter,
String clazz, String filter) throws InvalidSyntaxException {
return getRegistrySharedObject().getRemoteServiceReferences(idFilter, clazz, filter);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID target,
String clazz, String filter) throws InvalidSyntaxException,
ContainerConnectException {
return getRegistrySharedObject().getRemoteServiceReferences(target, clazz, filter);
}
@SuppressWarnings("rawtypes")
public IFuture asyncGetRemoteServiceReferences(ID[] idFilter, String clazz,
String filter) {
return getRegistrySharedObject().asyncGetRemoteServiceReferences(idFilter, clazz, filter);
}
@SuppressWarnings("rawtypes")
public IFuture asyncGetRemoteServiceReferences(ID target, String clazz,
String filter) {
return getRegistrySharedObject().asyncGetRemoteServiceReferences(target, clazz, filter);
}
public IRemoteServiceReference[] getAllRemoteServiceReferences(
String clazz, String filter) throws InvalidSyntaxException {
return getRegistrySharedObject().getAllRemoteServiceReferences(clazz, filter);
}
public Namespace getRemoteServiceNamespace() {
return getRegistrySharedObject().getRemoteServiceNamespace();
}
public IRemoteServiceID getRemoteServiceID(ID containerID,
long containerRelativeID) {
return getRegistrySharedObject().getRemoteServiceID(containerID, containerRelativeID);
}
public IRemoteServiceReference getRemoteServiceReference(
IRemoteServiceID serviceID) {
return getRegistrySharedObject().getRemoteServiceReference(serviceID);
}
public IRemoteService getRemoteService(IRemoteServiceReference reference) {
return getRegistrySharedObject().getRemoteService(reference);
}
public boolean ungetRemoteService(IRemoteServiceReference reference) {
return getRegistrySharedObject().ungetRemoteService(reference);
}
public IRemoteFilter createRemoteFilter(String filter)
throws InvalidSyntaxException {
return getRegistrySharedObject().createRemoteFilter(filter);
}
public void setConnectContextForAuthentication(
IConnectContext connectContext) {
getRegistrySharedObject().setConnectContextForAuthentication(connectContext);
}
public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
return getRegistrySharedObject().setRemoteServiceCallPolicy(policy);
}
@Override
public void dispose() {
if (remoteServiceAdapter != null) {
getSharedObjectManager().removeSharedObject(remoteServiceAdapter.getID());
remoteServiceAdapter = null;
}
super.dispose();
}
}