Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java')
-rw-r--r--compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java187
1 files changed, 0 insertions, 187 deletions
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
deleted file mode 100644
index 431603bad..000000000
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.eclipse.ecf.internal.osgi.services.distribution;
-
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Properties;
-import org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.hooks.service.EventHook;
-import org.osgi.service.remoteserviceadmin.EndpointListener;
-
-public class BasicTopologyManager extends AbstractTopologyManager implements
- EventHook, EndpointListener {
-
- private static final boolean allowLoopbackReference = new Boolean(
- System.getProperty(
- "org.eclipse.ecf.osgi.services.discovery.allowLoopbackReference", //$NON-NLS-1$
- "false")).booleanValue(); //$NON-NLS-1$
-
- private static final String endpointListenerScope = System
- .getProperty("org.eclipse.ecf.osgi.services.discovery.endpointListenerScope"); //$NON-NLS-1$
-
- private boolean exportRegisteredSvcs = new Boolean(
- System.getProperty(
- "org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcs", "true")).booleanValue(); //$NON-NLS-1$ //$NON-NLS-2$
-
- private String exportRegisteredSvcsClassname = System
- .getProperty("org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsClassname"); //$NON-NLS-1$
-
- private String exportRegisteredSvcsFilter = System
- .getProperty(
- "org.eclipse.ecf.osgi.services.basictopologymanager.exportRegisteredSvcsFilter", "(service.exported.interfaces=*)"); //$NON-NLS-1$ //$NON-NLS-2$
-
- private ServiceRegistration endpointListenerRegistration;
-
- private ServiceRegistration eventHookRegistration;
-
- BasicTopologyManager(BundleContext context) {
- super(context);
- }
-
- private String getEndpointListenerScope() {
- // If it's set via system property, then simply use it
- if (endpointListenerScope != null)
- return endpointListenerScope;
- // Otherwise create it
- // if allowLoopbackReference is true, then return a filter to match all
- // endpoint description ids
- StringBuffer elScope = new StringBuffer("("); //$NON-NLS-1$
- if (allowLoopbackReference) {
- elScope.append(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
- elScope.append("=*"); //$NON-NLS-1$
- } else {
- // filter so that local framework uuid is not the same as local
- // value
- elScope.append("!("); //$NON-NLS-1$
- elScope.append(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID);
- elScope.append("="); //$NON-NLS-1$
- elScope.append(getFrameworkUUID());
- elScope.append(")"); //$NON-NLS-1$
- }
- elScope.append(")"); //$NON-NLS-1$
- String result = elScope.toString();
- trace("getEndpointListenerScope", "endpointListenerScope=" + result); //$NON-NLS-1$ //$NON-NLS-2$
- return result;
- }
-
- private void exportRegisteredServices(String exportRegisteredSvcsClassname,
- String exportRegisteredSvcsFilter) {
- try {
- final ServiceReference[] existingServiceRefs = getContext()
- .getAllServiceReferences(exportRegisteredSvcsClassname,
- exportRegisteredSvcsFilter);
- // Now export as if the service was registering right now...i.e.
- // perform
- // export
- if (existingServiceRefs != null && existingServiceRefs.length > 0) {
- // After having collected all pre-registered services (with
- // marker prop) we are going to asynchronously remote them.
- // Registering potentially is a long-running operation (due to
- // discovery I/O...) and thus should no be carried out in the
- // OSGi FW thread. (https://bugs.eclipse.org/405027)
- new Thread(new Runnable() {
- public void run() {
- for (int i = 0; i < existingServiceRefs.length; i++) {
- // This method will check the service properties for
- // remote service props. If previously registered as
- // a
- // remote service, it will export the remote
- // service if not it will simply return/skip
- handleServiceRegistering(existingServiceRefs[i]);
- }
- }
- }, "BasicTopologyManagerPreRegSrvExporter").start(); //$NON-NLS-1$
- }
- } catch (InvalidSyntaxException e) {
- logError(
- "exportRegisteredServices", //$NON-NLS-1$
- "Could not retrieve existing service references for exportRegisteredSvcsClassname=" //$NON-NLS-1$
- + exportRegisteredSvcsClassname
- + " and exportRegisteredSvcsFilter=" //$NON-NLS-1$
- + exportRegisteredSvcsFilter, e);
- }
- }
-
- void start() throws Exception {
-
- // Register as EndpointListener, so that it gets notified when Endpoints
- // are discovered
- Properties props = new Properties();
- props.put(
- org.osgi.service.remoteserviceadmin.EndpointListener.ENDPOINT_LISTENER_SCOPE,
- getEndpointListenerScope());
- endpointListenerRegistration = getContext().registerService(
- EndpointListener.class.getName(), this, (Dictionary) props);
-
- // Register as EventHook, so that we get notified when remote services
- // are registered
- eventHookRegistration = getContext().registerService(
- EventHook.class.getName(), this, null);
-
- // Lastly, export any previously registered remote services
- if (exportRegisteredSvcs)
- exportRegisteredServices(exportRegisteredSvcsClassname,
- exportRegisteredSvcsFilter);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.osgi.service.remoteserviceadmin.EndpointListener#endpointAdded(org
- * .osgi.service.remoteserviceadmin.EndpointDescription, java.lang.String)
- */
- public void endpointAdded(
- org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
- String matchedFilter) {
- handleEndpointAdded(endpoint, matchedFilter);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.osgi.service.remoteserviceadmin.EndpointListener#endpointRemoved(
- * org.osgi.service.remoteserviceadmin.EndpointDescription,
- * java.lang.String)
- */
- public void endpointRemoved(
- org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
- String matchedFilter) {
- handleEndpointRemoved(endpoint, matchedFilter);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.osgi.framework.hooks.service.EventHook#event(org.osgi.framework.
- * ServiceEvent, java.util.Collection)
- */
- public void event(ServiceEvent event, Collection contexts) {
- handleEvent(event, contexts);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ecf.osgi.services.remoteserviceadmin.AbstractTopologyManager
- * #close()
- */
- public void close() {
- if (eventHookRegistration != null) {
- eventHookRegistration.unregister();
- eventHookRegistration = null;
- }
- if (endpointListenerRegistration != null) {
- endpointListenerRegistration.unregister();
- endpointListenerRegistration = null;
- }
- super.close();
- }
-
-}

Back to the top