Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/osgi
diff options
context:
space:
mode:
authorslewis2013-05-15 23:53:57 +0000
committerslewis2013-05-15 23:53:57 +0000
commit9322f58d7ca86e04043bf25b18973aa59d483304 (patch)
treeb0182080788e0d5690e503788147afae9beb41d9 /osgi
parente7d92f2b1dd272bf1ff1a7204ada65d429afbe27 (diff)
downloadorg.eclipse.ecf-9322f58d7ca86e04043bf25b18973aa59d483304.tar.gz
org.eclipse.ecf-9322f58d7ca86e04043bf25b18973aa59d483304.tar.xz
org.eclipse.ecf-9322f58d7ca86e04043bf25b18973aa59d483304.zip
Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=408185
Diffstat (limited to 'osgi')
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java19
1 files changed, 12 insertions, 7 deletions
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
index 7a55b2b27..092aeb12e 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -178,7 +178,8 @@ public class RemoteServiceAdmin implements
}
eventListenerHookRegistration = getRSABundle().getBundleContext()
- .registerService(EventListenerHook.class.getName(), new RSAEventListenerHook(), null);
+ .registerService(EventListenerHook.class.getName(),
+ new RSAEventListenerHook(), null);
}
private void handleServiceUnregistering(ServiceReference serviceReference) {
@@ -1805,7 +1806,7 @@ public class RemoteServiceAdmin implements
// version comparator service
Version remoteVersion = interfaceVersions.get(className);
Version localVersion = getPackageVersionViaRequestingBundle(
- packageName, bundle);
+ packageName, bundle, remoteVersion);
if (comparePackageVersions(packageName, remoteVersion, localVersion)) {
logError("verifyServiceInterfaceVersionsForProxy", //$NON-NLS-1$
"Failed version check for proxy creation. clientBundle=" //$NON-NLS-1$
@@ -1869,7 +1870,7 @@ public class RemoteServiceAdmin implements
}
private Version getPackageVersionViaRequestingBundle(String packageName,
- Bundle requestingBundle) {
+ Bundle requestingBundle, Version remoteVersion) {
Version result = null;
// First check the requesting bundle for the desired export package
// capability
@@ -1879,11 +1880,15 @@ public class RemoteServiceAdmin implements
List<BundleCapability> requestingBundleCapabilities = requestingBundleRevision
.getDeclaredCapabilities(BundleRevision.PACKAGE_NAMESPACE);
for (BundleCapability requestingBundleCapability : requestingBundleCapabilities) {
- Version version = getVersionForMatchingCapability(packageName,
- requestingBundleCapability);
+ Version candidate = getVersionForMatchingCapability(
+ packageName, requestingBundleCapability);
// If found, set our result
- if (version != null)
- result = version;
+ if (candidate != null) {
+ if (remoteVersion != null
+ && candidate.equals(remoteVersion))
+ return candidate;
+ result = candidate;
+ }
}
}
// If not found in requestingBundle export package, then

Back to the top