diff options
author | slewis | 2016-02-03 16:04:00 +0000 |
---|---|---|
committer | slewis | 2016-02-03 16:04:00 +0000 |
commit | 9186df55f90fccbe8ccb66e2260a6ce915022940 (patch) | |
tree | 132f19bf74e47cf166db3c145421ce237ad988d4 | |
parent | 5d2796c11ab9c387d4a699ea44b982b05d5620ee (diff) | |
download | org.eclipse.ecf-9186df55f90fccbe8ccb66e2260a6ce915022940.tar.gz org.eclipse.ecf-9186df55f90fccbe8ccb66e2260a6ce915022940.tar.xz org.eclipse.ecf-9186df55f90fccbe8ccb66e2260a6ce915022940.zip |
Made reference to equinox registry optional so that this bundle can run
on non-equinox frameworks.
Change-Id: I41b21557290552d669d1f3639f61a58027b2a7f3
3 files changed, 37 insertions, 29 deletions
diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF index 8b2eb863c..499d8a92e 100644 --- a/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF +++ b/server-side/bundles/org.eclipse.ecf.server.generic/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %plugin.name Bundle-SymbolicName: org.eclipse.ecf.server.generic;singleton:=true -Bundle-Version: 7.0.0.qualifier +Bundle-Version: 7.1.0.qualifier Bundle-Activator: org.eclipse.ecf.internal.server.generic.Activator Bundle-Vendor: %plugin.provider Bundle-Localization: plugin @@ -13,10 +13,10 @@ Require-Bundle: org.eclipse.equinox.common, org.eclipse.ecf.discovery, org.eclipse.ecf.provider.remoteservice;bundle-version="3.0.0", org.eclipse.ecf.remoteservice;bundle-version="3.0.0", - org.eclipse.equinox.registry + org.eclipse.equinox.registry;resolution:=optional Eclipse-LazyStart: true Export-Package: org.eclipse.ecf.internal.server.generic;version="6.0.0";x-internal:=true, - org.eclipse.ecf.server.generic;version="6.0.0", + org.eclipse.ecf.server.generic;version="7.1.0", org.eclipse.ecf.server.generic.app;version="6.0.0" Import-Package: javax.xml.parsers, org.eclipse.equinox.app;version="1.0.0", diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java index 406a93050..3e13ad661 100644 --- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java +++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/internal/server/generic/Activator.java @@ -1,13 +1,11 @@ package org.eclipse.ecf.internal.server.generic; -import org.eclipse.ecf.server.generic.GenericServerContainerGroupFactory; - import org.eclipse.core.runtime.*; import org.eclipse.ecf.core.IContainerManager; -import org.eclipse.ecf.core.util.LogHelper; +import org.eclipse.ecf.core.util.*; import org.eclipse.ecf.discovery.IDiscoveryAdvertiser; -import org.eclipse.ecf.server.generic.IGenericServerContainerGroupFactory; -import org.eclipse.ecf.server.generic.ServerManager; +import org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceContainerAdapterFactory; +import org.eclipse.ecf.server.generic.*; import org.osgi.framework.*; import org.osgi.service.log.LogService; import org.osgi.util.tracker.ServiceTracker; @@ -27,8 +25,6 @@ public class Activator implements BundleActivator { private ServerManager serverManager = null; - private ServiceTracker extensionRegistryTracker = null; - private ServiceTracker discoveryTracker = null; private ServiceTracker logServiceTracker = null; @@ -45,8 +41,8 @@ public class Activator implements BundleActivator { // null constructor } - public IExtensionRegistry getExtensionRegistry() { - return (IExtensionRegistry) extensionRegistryTracker.getService(); + public BundleContext getContext() { + return context; } public IDiscoveryAdvertiser getDiscovery() { @@ -89,14 +85,30 @@ public class Activator implements BundleActivator { public void start(BundleContext ctxt) throws Exception { this.context = ctxt; plugin = this; - this.extensionRegistryTracker = new ServiceTracker(ctxt, IExtensionRegistry.class.getName(), null); - this.extensionRegistryTracker.open(); this.discoveryTracker = new ServiceTracker(ctxt, IDiscoveryAdvertiser.class.getName(), null); this.discoveryTracker.open(); - serverManager = new ServerManager(); + try { + // for backward compatibility + serverManager = new ServerManager(); + } catch (Throwable t) { + t.printStackTrace(); + } // Register generic server container group factory service this.gscgFactory = new GenericServerContainerGroupFactory(); this.gscgRegistration = this.context.registerService(IGenericServerContainerGroupFactory.class.getName(), gscgFactory, null); + + SafeRunner.run(new ExtensionRegistryRunnable(this.context) { + protected void runWithoutRegistry() throws Exception { + AdapterManagerTracker t = new AdapterManagerTracker(getContext()); + t.open(); + IAdapterManager am = t.getAdapterManager(); + t.close(); + if (am != null) { + am.registerAdapters(new RemoteServiceContainerAdapterFactory(), org.eclipse.ecf.server.generic.GenericServerContainer.class); + am.registerAdapters(new RemoteServiceContainerAdapterFactory(), org.eclipse.ecf.server.generic.SSLGenericServerContainer.class); + } + } + }); } /* @@ -112,10 +124,6 @@ public class Activator implements BundleActivator { logServiceTracker.close(); logServiceTracker = null; } - if (extensionRegistryTracker != null) { - extensionRegistryTracker.close(); - extensionRegistryTracker = null; - } if (discoveryTracker != null) { discoveryTracker.close(); discoveryTracker = null; diff --git a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java index 1c3a08fa9..d68a44e42 100644 --- a/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java +++ b/server-side/bundles/org.eclipse.ecf.server.generic/src/org/eclipse/ecf/server/generic/ServerManager.java @@ -21,6 +21,7 @@ import org.eclipse.ecf.core.ContainerTypeDescription; import org.eclipse.ecf.core.IContainerManager; import org.eclipse.ecf.core.identity.*; import org.eclipse.ecf.core.sharedobject.ISharedObjectContainer; +import org.eclipse.ecf.core.util.ExtensionRegistryRunnable; import org.eclipse.ecf.discovery.*; import org.eclipse.ecf.discovery.identity.IServiceTypeID; import org.eclipse.ecf.discovery.identity.ServiceIDFactory; @@ -64,16 +65,15 @@ public class ServerManager { public static final String DISCOVERY_ATTR = "discovery"; //$NON-NLS-1$ public ServerManager() { - final IExtensionRegistry reg = Activator.getDefault().getExtensionRegistry(); - try { - if (reg != null && reg.getExtensionPoint(EXTENSION_POINT) != null) { - createServersFromExtensionRegistry(reg); - } else { + SafeRunner.run(new ExtensionRegistryRunnable(Activator.getDefault().getContext()) { + protected void runWithoutRegistry() throws Exception { createServersFromConfigurationFile(Activator.getDefault().getBundle().getEntry("server.xml").openStream()); //$NON-NLS-1$ } - } catch (final Exception e) { - Activator.log("Exception creating servers", e); //$NON-NLS-1$ - } + + protected void runWithRegistry(IExtensionRegistry registry) throws Exception { + createServersFromExtensionRegistry(registry); + } + }); } public synchronized ISharedObjectContainer getServer(ID id) { @@ -82,7 +82,7 @@ public class ServerManager { return (ISharedObjectContainer) servers.get(id); } - private void createServersFromExtensionRegistry(IExtensionRegistry registry) throws Exception { + void createServersFromExtensionRegistry(IExtensionRegistry registry) throws Exception { final IExtensionPoint extensionPoint = registry.getExtensionPoint(EXTENSION_POINT); if (extensionPoint == null) return; @@ -161,7 +161,7 @@ public class ServerManager { } } - private void createServersFromConfigurationFile(InputStream ins) throws Exception { + void createServersFromConfigurationFile(InputStream ins) throws Exception { final ServerConfigParser scp = new ServerConfigParser(); final List connectors = scp.load(ins); if (connectors != null) |