Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2013-01-18 06:27:23 +0000
committerslewis2013-01-18 06:27:23 +0000
commitcb4d73609ca031c5649f855b57dd03ed7cfc1b9d (patch)
treefd978c47712e959929584ace3e62984713bd213d /compendium/bundles
parent15d0cf001a6ca546eb08955b67a3fe7b9b51494e (diff)
parent6e0debee6465770c617adc3ca4c9c9e04e7c49b5 (diff)
downloadorg.eclipse.ecf-cb4d73609ca031c5649f855b57dd03ed7cfc1b9d.tar.gz
org.eclipse.ecf-cb4d73609ca031c5649f855b57dd03ed7cfc1b9d.tar.xz
org.eclipse.ecf-cb4d73609ca031c5649f855b57dd03ed7cfc1b9d.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'compendium/bundles')
-rw-r--r--compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath14
-rw-r--r--compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs186
-rw-r--r--compendium/bundles/org.eclipse.ecf.osgi.services.distribution/src/org/eclipse/ecf/internal/osgi/services/distribution/BasicTopologyManager.java316
3 files changed, 258 insertions, 258 deletions
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath
index d62b365d0..6f3b481ac 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.1%Foundation-1.1"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.1%Foundation-1.1"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
index 4a864fa86..9055fd6d0 100644
--- a/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
+++ b/compendium/bundles/org.eclipse.ecf.osgi.services.distribution/.settings/org.eclipse.jdt.core.prefs
@@ -1,93 +1,93 @@
-#Sun Feb 20 22:34:10 PST 2011
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=ignore
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
+#Sun Feb 20 22:34:10 PST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.cleanOutputFolder=clean
+org.eclipse.jdt.core.builder.duplicateResourceTask=warning
+org.eclipse.jdt.core.builder.invalidClasspath=abort
+org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
+org.eclipse.jdt.core.circularClasspath=error
+org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
+org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.incompatibleJDKLevel=ignore
+org.eclipse.jdt.core.incompleteClasspath=error
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
index 741fc230d..11df40734 100644
--- 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
@@ -1,158 +1,158 @@
-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;
-
- public BasicTopologyManager(BundleContext context) {
- super(context);
- }
-
- public void setExportRegisteredSvcs(boolean val) {
- this.exportRegisteredSvcs = val;
- }
-
- public void setExportRegisteredSvcsClassname(String classname) {
- this.exportRegisteredSvcsClassname = classname;
- }
-
- public void setExportRegisteredSvcsFilter(String filter) {
- this.exportRegisteredSvcsFilter = filter;
- }
-
- 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;
- }
-
- public void exportRegisteredServices(String exportRegisteredSvcsClassname,
- String exportRegisteredSvcsFilter) {
- ServiceReference[] existingServiceRefs = null;
- try {
- existingServiceRefs = getContext().getAllServiceReferences(
- exportRegisteredSvcsClassname, exportRegisteredSvcsFilter);
- } 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);
- }
- // Now export as if the service was registering right now...i.e. perform
- // export
- if (existingServiceRefs != null)
- 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]);
- }
-
- public 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);
- }
-
- public void endpointAdded(
- org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
- String matchedFilter) {
- handleEndpointAdded(endpoint, matchedFilter);
- }
-
- public void endpointRemoved(
- org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
- String matchedFilter) {
- handleEndpointRemoved(endpoint, matchedFilter);
- }
-
- public void event(ServiceEvent event, Collection contexts) {
- handleEvent(event, contexts);
- }
-
- public void close() {
- if (eventHookRegistration != null) {
- eventHookRegistration.unregister();
- eventHookRegistration = null;
- }
- if (endpointListenerRegistration != null) {
- endpointListenerRegistration.unregister();
- endpointListenerRegistration = null;
- }
- super.close();
- }
-
-}
+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;
+
+ public BasicTopologyManager(BundleContext context) {
+ super(context);
+ }
+
+ public void setExportRegisteredSvcs(boolean val) {
+ this.exportRegisteredSvcs = val;
+ }
+
+ public void setExportRegisteredSvcsClassname(String classname) {
+ this.exportRegisteredSvcsClassname = classname;
+ }
+
+ public void setExportRegisteredSvcsFilter(String filter) {
+ this.exportRegisteredSvcsFilter = filter;
+ }
+
+ 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;
+ }
+
+ public void exportRegisteredServices(String exportRegisteredSvcsClassname,
+ String exportRegisteredSvcsFilter) {
+ ServiceReference[] existingServiceRefs = null;
+ try {
+ existingServiceRefs = getContext().getAllServiceReferences(
+ exportRegisteredSvcsClassname, exportRegisteredSvcsFilter);
+ } 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);
+ }
+ // Now export as if the service was registering right now...i.e. perform
+ // export
+ if (existingServiceRefs != null)
+ 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]);
+ }
+
+ public 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);
+ }
+
+ public void endpointAdded(
+ org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
+ String matchedFilter) {
+ handleEndpointAdded(endpoint, matchedFilter);
+ }
+
+ public void endpointRemoved(
+ org.osgi.service.remoteserviceadmin.EndpointDescription endpoint,
+ String matchedFilter) {
+ handleEndpointRemoved(endpoint, matchedFilter);
+ }
+
+ public void event(ServiceEvent event, Collection contexts) {
+ handleEvent(event, contexts);
+ }
+
+ public void close() {
+ if (eventHookRegistration != null) {
+ eventHookRegistration.unregister();
+ eventHookRegistration = null;
+ }
+ if (endpointListenerRegistration != null) {
+ endpointListenerRegistration.unregister();
+ endpointListenerRegistration = null;
+ }
+ super.close();
+ }
+
+}

Back to the top