Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/osgi
diff options
context:
space:
mode:
authorslewis2018-02-27 01:53:01 +0000
committerslewis2018-02-27 01:53:01 +0000
commitf21cceb3d84e88f8386e6e2d1b691530c93a5fc3 (patch)
tree7416e9b93925753245ea527a8248f0d003f2523b /osgi
parent20868d3b8fefb3f607fa4ea3c10e0af8b8408ce8 (diff)
downloadorg.eclipse.ecf-f21cceb3d84e88f8386e6e2d1b691530c93a5fc3.tar.gz
org.eclipse.ecf-f21cceb3d84e88f8386e6e2d1b691530c93a5fc3.tar.xz
org.eclipse.ecf-f21cceb3d84e88f8386e6e2d1b691530c93a5fc3.zip
Added back Bundle-ActivationPolicy header
Diffstat (limited to 'osgi')
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/OSGI-INF/permissions.perm2
-rw-r--r--osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java53
3 files changed, 35 insertions, 22 deletions
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
index 43676e81b..0dc236530 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/META-INF/MANIFEST.MF
@@ -29,9 +29,11 @@ Import-Package: javax.xml.parsers,
org.osgi.framework;version="1.3.0",
org.osgi.framework.hooks.service;version="1.1.0",
org.osgi.framework.wiring;version="[1.0,2.0)",
+ org.osgi.resource;version="1.0.0",
org.osgi.service.event,
org.osgi.service.log,
org.osgi.service.remoteserviceadmin;version="1.1",
+ org.osgi.service.remoteserviceadmin.namespace;version="1.0.0",
org.osgi.util.tracker,
org.xml.sax
DynamicImport-Package: *
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/OSGI-INF/permissions.perm b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/OSGI-INF/permissions.perm
index 57ed99092..c91be5f7f 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/OSGI-INF/permissions.perm
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/OSGI-INF/permissions.perm
@@ -17,11 +17,13 @@
(org.osgi.framework.PackagePermission "org.eclipse.equinox.concurrent.future" "import")
(org.osgi.framework.PackagePermission "org.eclipse.osgi.framework.eventmgr" "import")
(org.osgi.framework.PackagePermission "org.osgi.framework" "import")
+(org.osgi.framework.PackagePermission "org.osgi.resource" "import")
(org.osgi.framework.PackagePermission "org.osgi.framework.hooks.service" "import")
(org.osgi.framework.PackagePermission "org.osgi.framework.wiring" "import")
(org.osgi.framework.PackagePermission "org.osgi.service.event" "import")
(org.osgi.framework.PackagePermission "org.osgi.service.log" "import")
(org.osgi.framework.PackagePermission "org.osgi.service.remoteserviceadmin" "import")
+(org.osgi.framework.PackagePermission "org.osgi.service.remoteserviceadmin.namespace" "import")
(org.osgi.framework.PackagePermission "org.osgi.util.tracker" "import")
(org.osgi.framework.PackagePermission "org.eclipse.ecf.core.jobs" "import")
(org.osgi.framework.PackagePermission "javax.xml.parsers" "import")
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
index e1ab9e357..7e7525f41 100644
--- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
+++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Dictionary;
@@ -20,7 +22,6 @@ import java.util.UUID;
import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.ecf.core.ContainerFactory;
import org.eclipse.ecf.core.ContainerTypeDescription;
@@ -32,18 +33,21 @@ import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescriptionLocat
import org.eclipse.ecf.osgi.services.remoteserviceadmin.IServiceInfoFactory;
import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin;
import org.eclipse.ecf.osgi.services.remoteserviceadmin.ServiceInfoFactory;
-import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceFactory;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.framework.Version;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
import org.osgi.service.log.LogService;
import org.osgi.service.remoteserviceadmin.ExportRegistration;
import org.osgi.service.remoteserviceadmin.ImportRegistration;
+import org.osgi.service.remoteserviceadmin.namespace.DistributionNamespace;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
@@ -103,6 +107,24 @@ public class Activator implements BundleActivator {
+ RSA_PROXY_BUNDLE_SYMBOLIC_ID + "') cannot be found, so RSA cannot be started"); //$NON-NLS-1$
}
+ private void initializeDistributionProviders() {
+ for (final Bundle b : context.getBundles()) {
+ BundleRevision rb = AccessController.doPrivileged(new PrivilegedAction<BundleRevision>() {
+ public BundleRevision run() {
+ return b.adapt(BundleRevision.class);
+ }
+ });
+ List<Capability> capabilities = rb.getCapabilities(DistributionNamespace.DISTRIBUTION_NAMESPACE);
+ if (capabilities != null && capabilities.size() > 0)
+ try {
+ b.start();
+ } catch (BundleException e) {
+ LogUtility.logError("RemoteServiceAdmin.initializeDistributionProviders", DebugOptions.REMOTE_SERVICE_ADMIN, //$NON-NLS-1$
+ Activator.class, "Cannot start distribution provider bundle=" + b.getSymbolicName(), e); //$NON-NLS-1$
+ }
+ }
+ }
+
private void stopProxyServiceFactoryBundle() {
if (proxyServiceFactoryBundleContext != null) {
// stop it
@@ -141,7 +163,7 @@ public class Activator implements BundleActivator {
rcs.remove(descSupportedConfigs[j]);
String[] descSupportedIntents = ctd.getSupportedIntents();
for (int j = 0; j < descSupportedIntents.length; j++)
- ris.remove(descSupportedIntents);
+ ris.remove(descSupportedIntents[j]);
}
// set rsaProps to new values
rsaProps.put(org.osgi.service.remoteserviceadmin.RemoteConstants.REMOTE_CONFIGS_SUPPORTED,
@@ -210,35 +232,22 @@ public class Activator implements BundleActivator {
// approach/using the ServiceFactory extender approach for this purpose:
// https://mail.osgi.org/pipermail/osgi-dev/2011-February/003000.html
initializeProxyServiceFactoryBundle();
-
+ // Start distribution providers if not already started
+ initializeDistributionProviders();
// make remote service admin available
rsaProps = new Properties();
rsaProps.put(RemoteServiceAdmin.SERVICE_PROP, new Boolean(true));
-
- IContainerManager containerManager = getContainerManager();
- Assert.isNotNull(containerManager,
- "Container manager service must be present to start ECF Remote Service Admin"); //$NON-NLS-1$
-
- ContainerTypeDescription[] remoteServiceDescriptions = containerManager.getContainerFactory()
- .getDescriptionsForContainerAdapter(IRemoteServiceContainerAdapter.class);
- // The following adds the standard supported configs and supported
- // intents
- // values for all remote service descriptions to rsaProps
- for (int i = 0; i < remoteServiceDescriptions.length; i++)
- addSupportedConfigsAndIntents(remoteServiceDescriptions[i]);
-
// Register Remote Service Admin factory, with rsaProps
remoteServiceAdminRegistration = context.registerService(
org.osgi.service.remoteserviceadmin.RemoteServiceAdmin.class.getName(), new ServiceFactory() {
public Object getService(Bundle bundle, ServiceRegistration registration) {
RemoteServiceAdmin result = null;
synchronized (remoteServiceAdmins) {
- RemoteServiceAdmin rsa = remoteServiceAdmins.get(bundle);
- if (rsa == null) {
- rsa = new RemoteServiceAdmin(bundle, exportedRegistrations, importedRegistrations);
- remoteServiceAdmins.put(bundle, rsa);
+ result = remoteServiceAdmins.get(bundle);
+ if (result == null) {
+ result = new RemoteServiceAdmin(bundle, exportedRegistrations, importedRegistrations);
+ remoteServiceAdmins.put(bundle, result);
}
- result = rsa;
}
return result;
}

Back to the top