diff options
author | slewis | 2021-09-19 02:22:30 +0000 |
---|---|---|
committer | slewis | 2021-09-19 02:22:30 +0000 |
commit | 6365d817a5fd9522d53b379e5da668dc9a0feba7 (patch) | |
tree | bf741664cd56165c345382d4f9979a61014fc44f /providers/bundles | |
parent | e8903c811a6f29608f035960a4ddaa80722a4ac6 (diff) | |
download | org.eclipse.ecf-6365d817a5fd9522d53b379e5da668dc9a0feba7.tar.gz org.eclipse.ecf-6365d817a5fd9522d53b379e5da668dc9a0feba7.tar.xz org.eclipse.ecf-6365d817a5fd9522d53b379e5da668dc9a0feba7.zip |
rOSGI provider impl for
https://bugs.eclipse.org/bugs/show_bug.cgi?id=576085
Change-Id: I581fbf424dbda91de7c662e6e79975d3651261ab
Diffstat (limited to 'providers/bundles')
4 files changed, 28 insertions, 6 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF index 0df8c6999..2bc601cc3 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.provider.r_osgi;singleton:=true Automatic-Module-Name: org.eclipse.ecf.provider.r_osgi -Bundle-Version: 3.6.301.qualifier +Bundle-Version: 3.7.0.qualifier Import-Package: ch.ethz.iks.r_osgi;version="[1.0.1,2.0.0)", org.eclipse.ecf.core.util.reflection, org.eclipse.ecf.osgi.services.remoteserviceadmin;version="1.3.0", diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/pom.xml b/providers/bundles/org.eclipse.ecf.provider.r_osgi/pom.xml index a6f5560eb..97b729cc0 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/pom.xml +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/pom.xml @@ -10,6 +10,6 @@ </parent> <groupId>org.eclipse.ecf</groupId> <artifactId>org.eclipse.ecf.provider.r_osgi</artifactId> - <version>3.6.301-SNAPSHOT</version> + <version>3.7.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java index f64981a10..b5375801e 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/R_OSGiRemoteServiceContainer.java @@ -278,9 +278,8 @@ class R_OSGiRemoteServiceContainer implements IOSGiRemoteServiceContainerAdapter if (clazz == null) { results.add(createLocalRemoteServiceReference(ref)); } else { - IRemoteFilter rf = createRemoteFilter(filter != null - ? "(&" + filter + "(" //$NON-NLS-1$ //$NON-NLS-2$ - + Constants.OBJECTCLASS + "=" + clazz + "))" //$NON-NLS-1$//$NON-NLS-2$ + IRemoteFilter rf = createRemoteFilter(filter != null ? "(&" + filter + "(" //$NON-NLS-1$ //$NON-NLS-2$ + + Constants.OBJECTCLASS + "=" + clazz + "))" //$NON-NLS-1$//$NON-NLS-2$ : "(" //$NON-NLS-1$ + Constants.OBJECTCLASS + "=" + clazz + ")"); //$NON-NLS-1$//$NON-NLS-2$ if (rf.match(refProperties)) { @@ -490,7 +489,7 @@ class R_OSGiRemoteServiceContainer implements IOSGiRemoteServiceContainerAdapter remoteServicesRegs.put(reg.getReference(), reg); } // Construct a IRemoteServiceID, and provide to new registration impl instance - return new RemoteServiceRegistrationImpl(this, createRemoteServiceID(containerID, (Long) reg.getReference().getProperty(Constants.SERVICE_ID)), reg); + return new RemoteServiceRegistrationImpl(service.getClass().getClassLoader(), this, createRemoteServiceID(containerID, (Long) reg.getReference().getProperty(Constants.SERVICE_ID)), reg); } Dictionary prepareProperties(ServiceReference reference) { diff --git a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java index ae4e75a13..399a95eee 100644 --- a/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java +++ b/providers/bundles/org.eclipse.ecf.provider.r_osgi/src/org/eclipse/ecf/internal/provider/r_osgi/RemoteServiceRegistrationImpl.java @@ -51,6 +51,18 @@ final class RemoteServiceRegistrationImpl implements IRemoteServiceRegistration this.remoteReference = new LocalRemoteServiceReferenceImpl(remoteServiceID, reg.getReference()); } + public RemoteServiceRegistrationImpl(final ClassLoader cl, final R_OSGiRemoteServiceContainer container, final IRemoteServiceID remoteServiceID, final ServiceRegistration reg) { + Assert.isNotNull(remoteServiceID); + Assert.isNotNull(reg); + Assert.isNotNull(container); + Assert.isNotNull(cl); + setClassLoader(cl); + this.container = container; + this.remoteServiceID = remoteServiceID; + this.reg = reg; + this.remoteReference = new LocalRemoteServiceReferenceImpl(remoteServiceID, reg.getReference()); + } + /** * get the container ID. * @@ -117,9 +129,20 @@ final class RemoteServiceRegistrationImpl implements IRemoteServiceRegistration } catch (IllegalStateException e) { // underlying service registration already unregistered } + this.classLoader = null; } public IRemoteServiceID getID() { return remoteServiceID; } + + private ClassLoader classLoader = RemoteServiceRegistrationImpl.class.getClassLoader(); + + public ClassLoader getClassLoader() { + return classLoader; + } + + protected void setClassLoader(ClassLoader cl) { + this.classLoader = cl; + } } |