Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=478452

Change-Id: I2f676e56117f00f1edfac8d1d718e0ed1e4eef6f
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
index a4b9621..69c8b10 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractTopologyManager.java
@@ -290,7 +290,9 @@
 		trace("handleECFEndpointAdded", "endpointDescription=" //$NON-NLS-1$ //$NON-NLS-2$
 				+ endpointDescription);
 		// Import service
-		getRemoteServiceAdmin().importService(endpointDescription);
+		RemoteServiceAdmin rsa = (RemoteServiceAdmin) getRemoteServiceAdmin();
+		if (rsa != null)
+			rsa.importService(endpointDescription);
 	}
 
 	/**
@@ -301,14 +303,15 @@
 		trace("handleECFEndpointRemoved", "endpointDescription=" //$NON-NLS-1$ //$NON-NLS-2$
 				+ endpointDescription);
 		RemoteServiceAdmin rsa = (RemoteServiceAdmin) getRemoteServiceAdmin();
-		List<RemoteServiceAdmin.ImportRegistration> importedRegistrations = rsa
-				.getImportedRegistrations();
-		org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription ed = (org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) endpointDescription;
-		for (RemoteServiceAdmin.ImportRegistration importedRegistration : importedRegistrations) {
-			if (importedRegistration.match(ed)) {
-				trace("handleEndpointRemoved", "closing importedRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ importedRegistration);
-				importedRegistration.close();
+		if (rsa != null) {
+			List<RemoteServiceAdmin.ImportRegistration> importedRegistrations = rsa.getImportedRegistrations();
+			org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription ed = (org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) endpointDescription;
+			for (RemoteServiceAdmin.ImportRegistration importedRegistration : importedRegistrations) {
+				if (importedRegistration.match(ed)) {
+					trace("handleEndpointRemoved", "closing importedRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ importedRegistration);
+					importedRegistration.close();
+				}
 			}
 		}
 	}
@@ -320,14 +323,15 @@
 		trace("handleECFEndpointModified", "endpointDescription=" //$NON-NLS-1$ //$NON-NLS-2$
 				+ endpoint);
 		RemoteServiceAdmin rsa = (RemoteServiceAdmin) getRemoteServiceAdmin();
-		List<RemoteServiceAdmin.ImportRegistration> importedRegistrations = rsa
-				.getImportedRegistrations();
-		org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription ed = (org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) endpoint;
-		for (RemoteServiceAdmin.ImportRegistration importedRegistration : importedRegistrations) {
-			if (importedRegistration.match(ed)) {
-				trace("handleECFEndpointModified", "updating importedRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
-						+ importedRegistration);
-				importedRegistration.update(endpoint);
+		if (rsa != null) {
+			List<RemoteServiceAdmin.ImportRegistration> importedRegistrations = rsa.getImportedRegistrations();
+			org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription ed = (org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription) endpoint;
+			for (RemoteServiceAdmin.ImportRegistration importedRegistration : importedRegistrations) {
+				if (importedRegistration.match(ed)) {
+					trace("handleECFEndpointModified", "updating importedRegistration=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ importedRegistration);
+					importedRegistration.update(endpoint);
+				}
 			}
 		}
 	}
@@ -432,33 +436,41 @@
 						exportedInterfaces);
 		trace("handleServiceRegistering", "serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
 				+ serviceReference + " exportProperties=" + exportProperties); //$NON-NLS-1$
+		org.osgi.service.remoteserviceadmin.RemoteServiceAdmin rsa = getRemoteServiceAdmin();
 		// Do the export with RSA
-		getRemoteServiceAdmin().exportService(serviceReference,
+		if (rsa != null)
+			rsa.exportService(serviceReference,
 				exportProperties);
 	}
 
 	protected void handleServiceModifying(ServiceReference serviceReference) {
-		List<RemoteServiceAdmin.ExportRegistration> exportedRegistrations = ((RemoteServiceAdmin) getRemoteServiceAdmin())
-				.getExportedRegistrations();
-		for (RemoteServiceAdmin.ExportRegistration exportedRegistration : exportedRegistrations) {
-			if (exportedRegistration.match(serviceReference)) {
-				trace("handleServiceModifying", "modifying exportRegistration for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
-								+ serviceReference);
-				EndpointDescription updatedED = (EndpointDescription) exportedRegistration.update(null);
-				if (updatedED == null)
-					logWarning("handleServiceModifying", "ExportRegistration.update failed with exception="+exportedRegistration.getException());  //$NON-NLS-1$//$NON-NLS-2$
+		RemoteServiceAdmin rsa = (RemoteServiceAdmin) getRemoteServiceAdmin();
+		if (rsa != null) {
+			List<RemoteServiceAdmin.ExportRegistration> exportedRegistrations = rsa.getExportedRegistrations();
+			for (RemoteServiceAdmin.ExportRegistration exportedRegistration : exportedRegistrations) {
+				if (exportedRegistration.match(serviceReference)) {
+					trace("handleServiceModifying", "modifying exportRegistration for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ serviceReference);
+					EndpointDescription updatedED = (EndpointDescription) exportedRegistration.update(null);
+					if (updatedED == null)
+						logWarning("handleServiceModifying", "ExportRegistration.update failed with exception=" //$NON-NLS-1$//$NON-NLS-2$
+								+ exportedRegistration.getException());
+				}
 			}
 		}
 	}
 
 	protected void handleServiceUnregistering(ServiceReference serviceReference) {
-		List<RemoteServiceAdmin.ExportRegistration> exportedRegistrations = ((RemoteServiceAdmin) getRemoteServiceAdmin())
-				.getExportedRegistrations();
-		for (RemoteServiceAdmin.ExportRegistration exportedRegistration : exportedRegistrations) {
-			if (exportedRegistration.match(serviceReference)) {
-				trace("handleServiceUnregistering", "closing exportRegistration for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
-								+ serviceReference);
-				exportedRegistration.close();
+		RemoteServiceAdmin rsa = (RemoteServiceAdmin) getRemoteServiceAdmin();
+		if (rsa != null) {
+			List<RemoteServiceAdmin.ExportRegistration> exportedRegistrations = ((RemoteServiceAdmin) getRemoteServiceAdmin())
+					.getExportedRegistrations();
+			for (RemoteServiceAdmin.ExportRegistration exportedRegistration : exportedRegistrations) {
+				if (exportedRegistration.match(serviceReference)) {
+					trace("handleServiceUnregistering", "closing exportRegistration for serviceReference=" //$NON-NLS-1$ //$NON-NLS-2$
+							+ serviceReference);
+					exportedRegistration.close();
+				}
 			}
 		}
 	}