/*******************************************************************************
* Copyright (c) 2010 Composent, Inc. 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:
* Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.internal.provider.local.container;
import java.util.Dictionary;
import org.eclipse.ecf.core.AbstractContainer;
import org.eclipse.ecf.core.ContainerConnectException;
import org.eclipse.ecf.core.identity.*;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.ecf.core.sharedobject.SharedObjectInitException;
import org.eclipse.ecf.provider.local.identity.LocalID;
import org.eclipse.ecf.provider.local.identity.LocalNamespace;
import org.eclipse.ecf.remoteservice.*;
import org.eclipse.equinox.concurrent.future.IFuture;
import org.osgi.framework.InvalidSyntaxException;
public class LocalRemoteServiceContainer extends AbstractContainer implements IRemoteServiceContainerAdapter {
private LocalID localID;
private LocalRemoteServiceRegistry registry;
protected LocalRemoteServiceContainer(LocalID id) throws SharedObjectInitException {
this.localID = id;
registry = new LocalRemoteServiceRegistry(this);
}
public void addRemoteServiceListener(IRemoteServiceListener listener) {
registry.addRemoteServiceListener(listener);
}
public void removeRemoteServiceListener(IRemoteServiceListener listener) {
registry.removeRemoteServiceListener(listener);
}
public IRemoteServiceRegistration registerRemoteService(String[] clazzes, Object service, Dictionary properties) {
return registry.registerRemoteService(clazzes, service, properties);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID[] idFilter, String clazz, String filter) throws InvalidSyntaxException {
return registry.getRemoteServiceReferences(idFilter, clazz, filter);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID target, String clazz, String filter) throws InvalidSyntaxException, ContainerConnectException {
return registry.getRemoteServiceReferences(target, clazz, filter);
}
public IFuture asyncGetRemoteServiceReferences(ID[] idFilter, String clazz, String filter) {
return registry.asyncGetRemoteServiceReferences(idFilter, clazz, filter);
}
public IFuture asyncGetRemoteServiceReferences(ID target, String clazz, String filter) {
return registry.asyncGetRemoteServiceReferences(target, clazz, filter);
}
public IRemoteServiceReference[] getRemoteServiceReferences(ID target, ID[] idFilter, String clazz, String filter) throws InvalidSyntaxException, ContainerConnectException {
return registry.getRemoteServiceReferences(target, idFilter, clazz, filter);
}
public IFuture asyncGetRemoteServiceReferences(ID target, ID[] idFilter, String clazz, String filter) {
return registry.asyncGetRemoteServiceReferences(target, idFilter, clazz, filter);
}
public IRemoteServiceReference[] getAllRemoteServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
return registry.getAllRemoteServiceReferences(clazz, filter);
}
public Namespace getRemoteServiceNamespace() {
return registry.getRemoteServiceNamespace();
}
public IRemoteServiceID getRemoteServiceID(ID containerID, long containerRelativeID) {
return registry.getRemoteServiceID(containerID, containerRelativeID);
}
public IRemoteServiceReference getRemoteServiceReference(IRemoteServiceID serviceID) {
return registry.getRemoteServiceReference(serviceID);
}
public IRemoteService getRemoteService(IRemoteServiceReference reference) {
return registry.getRemoteService(reference);
}
public boolean ungetRemoteService(IRemoteServiceReference reference) {
return registry.ungetRemoteService(reference);
}
public IRemoteFilter createRemoteFilter(String filter) throws InvalidSyntaxException {
return registry.createRemoteFilter(filter);
}
public void setConnectContextForAuthentication(IConnectContext connectContext) {
registry.setConnectContextForAuthentication(connectContext);
}
public boolean setRemoteServiceCallPolicy(IRemoteServiceCallPolicy policy) {
return registry.setRemoteServiceCallPolicy(policy);
}
public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
if (targetID.equals(targetID))
return;
throw new ContainerConnectException("Local container cannot be connected to targetID" + targetID); //$NON-NLS-1$
}
public ID getConnectedID() {
return getID();
}
public Namespace getConnectNamespace() {
return IDFactory.getDefault().getNamespaceByName(LocalNamespace.NAME);
}
public void disconnect() {
// do nothing
}
public ID getID() {
return localID;
}
}