Made RSARemoteServiceContainerAdapter more robust if exportRemoteService fails Change-Id: I8854cb315cabd05615421dde97d2157b5a80eab8
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RSARemoteServiceContainerAdapter.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RSARemoteServiceContainerAdapter.java index 356aa8f..31de5c1 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RSARemoteServiceContainerAdapter.java +++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RSARemoteServiceContainerAdapter.java
@@ -49,7 +49,13 @@ @Override public void publish(RemoteServiceRegistryImpl reg, Object svc, String[] clzzes, Dictionary props) { super.publish(reg, svc, clzzes, props); - this.extraProperties = getRSAContainer().exportRemoteService(this); + try { + this.extraProperties = getRSAContainer().exportRemoteService(this); + } catch (RuntimeException t) { + // unpublish in the event of + reg.unpublishService(this); + throw t; + } } public void unregister() {
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainerAdapterImpl.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainerAdapterImpl.java index 1eeb2d4..51c9f58 100644 --- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainerAdapterImpl.java +++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/RemoteServiceContainerAdapterImpl.java
@@ -91,10 +91,8 @@ Trace.entering(Activator.PLUGIN_ID, IRemoteServiceImplDebugOptions.METHODS_ENTERING, this.getClass(), "registerRemoteService", new Object[] {clazzes, service, properties}); //$NON-NLS-1$ if (service == null) throw new NullPointerException("service cannot be null"); //$NON-NLS-1$ - final int size = clazzes.length; - - if (size == 0) - throw new IllegalArgumentException("service classes list is empty"); //$NON-NLS-1$ + if (clazzes.length == 0) + throw new IllegalArgumentException("service classes cannot be empty"); //$NON-NLS-1$ final String[] copy = new String[clazzes.length]; for (int i = 0; i < clazzes.length; i++)