diff options
author | slewis | 2009-05-15 19:50:17 +0000 |
---|---|---|
committer | slewis | 2009-05-15 19:50:17 +0000 |
commit | ef7c69ec6337e7729fb56d803d0333c393cce5e9 (patch) | |
tree | 481808db2541cfde71a49e1dfe11a478e63e9788 /providers | |
parent | b53c78ed144f48723e9dd5f6204fa76e14cf5ddb (diff) | |
download | org.eclipse.ecf-ef7c69ec6337e7729fb56d803d0333c393cce5e9.tar.gz org.eclipse.ecf-ef7c69ec6337e7729fb56d803d0333c393cce5e9.tar.xz org.eclipse.ecf-ef7c69ec6337e7729fb56d803d0333c393cce5e9.zip |
Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=276368
Diffstat (limited to 'providers')
-rw-r--r-- | providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java index d21587473..7a09d9262 100644 --- a/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java +++ b/providers/bundles/org.eclipse.ecf.provider.remoteservice/src/org/eclipse/ecf/provider/remoteservice/generic/RegistrySharedObject.java @@ -175,10 +175,6 @@ public class RegistrySharedObject extends BaseSharedObject implements IRemoteSer final List references = new ArrayList(); // Lookup from remote registrys...add to given references List addReferencesFromRemoteRegistrys(idFilter, clazz, remoteFilter, references); - // Add any from local registry - synchronized (localRegistry) { - addReferencesFromRegistry(clazz, remoteFilter, localRegistry, references); - } // If none found the first time we send a registration request and wait if (references.size() == 0) { AddRegistrationRequest first = null; @@ -212,6 +208,15 @@ public class RegistrySharedObject extends BaseSharedObject implements IRemoteSer } } + ID localContainerID = getLocalContainerID(); + // Only look in local remote service registry if idFilter is null OR the idFilter + // contains the local container ID + if (idFilter == null || Arrays.asList(idFilter).contains(localContainerID)) { + synchronized (localRegistry) { + // Add any from local registry + addReferencesFromRegistry(clazz, remoteFilter, localRegistry, references); + } + } final IRemoteServiceReference[] result = (IRemoteServiceReference[]) references.toArray(new IRemoteServiceReference[references.size()]); Trace.exiting(Activator.PLUGIN_ID, IRemoteServiceProviderDebugOptions.METHODS_EXITING, this.getClass(), "getRemoteServiceReferences", result); //$NON-NLS-1$ return (result.length == 0) ? null : result; |