blob: 31de5c1e00b0de87f9fc465061ea6745eec88aff [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 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.remoteservice;
import java.util.Dictionary;
import java.util.Map;
import org.eclipse.equinox.concurrent.future.IExecutor;
/**
* A container adapter intended for use by remote service host containers. Implements IRemoteServiceContainerAdapter
* and IRSAHostContainerAdapter. A IRSAHostContainerAdapter that gets the actual registerService call
* is expected to be provided upon construction.
*
* Subclasses should extend as appropriate.
*
* @since 8.9
*/
public class RSARemoteServiceContainerAdapter extends RemoteServiceContainerAdapterImpl {
public RSARemoteServiceContainerAdapter(AbstractRSAContainer container, IExecutor executor) {
super(container, executor);
}
public RSARemoteServiceContainerAdapter(AbstractRSAContainer container) {
super(container);
}
protected AbstractRSAContainer getRSAContainer() {
return (AbstractRSAContainer) super.getContainer();
}
@Override
protected RemoteServiceRegistrationImpl createRegistration() {
return new RSARemoteServiceRegistration();
}
public class RSARemoteServiceRegistration extends RemoteServiceRegistrationImpl implements IExtendedRemoteServiceRegistration {
private static final long serialVersionUID = 3245045338579222364L;
private Map<String, Object> extraProperties;
@Override
public void publish(RemoteServiceRegistryImpl reg, Object svc, String[] clzzes, Dictionary props) {
super.publish(reg, svc, clzzes, props);
try {
this.extraProperties = getRSAContainer().exportRemoteService(this);
} catch (RuntimeException t) {
// unpublish in the event of
reg.unpublishService(this);
throw t;
}
}
public void unregister() {
getRSAContainer().unexportRemoteService(this);
}
public Map<String, Object> getExtraProperties() {
return extraProperties;
}
}
}