You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/10/29 01:45:49 UTC

svn commit: r830811 - in /tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca: node/osgi/impl/ osgi/remoteserviceadmin/impl/

Author: rfeng
Date: Thu Oct 29 00:45:49 2009
New Revision: 830811

URL: http://svn.apache.org/viewvc?rev=830811&view=rev
Log:
Add more checks for the stop() method

Modified:
    tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeActivator.java
    tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java
    tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/AbstractOSGiServiceHandler.java
    tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceImporter.java

Modified: tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeActivator.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeActivator.java?rev=830811&r1=830810&r2=830811&view=diff
==============================================================================
--- tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeActivator.java (original)
+++ tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/NodeActivator.java Thu Oct 29 00:45:49 2009
@@ -21,6 +21,9 @@
 
 import static org.apache.tuscany.sca.node.osgi.impl.NodeManager.isSCABundle;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import org.apache.tuscany.sca.osgi.remoteserviceadmin.impl.RemoteServiceAdminImpl;
 import org.apache.tuscany.sca.osgi.remoteserviceadmin.impl.TopologyManagerImpl;
 import org.apache.tuscany.sca.osgi.service.discovery.impl.DiscoveryActivator;
@@ -34,10 +37,11 @@
  * Bundle activator to receive the BundleContext
  */
 public class NodeActivator implements BundleActivator, SynchronousBundleListener {
+    private final static Logger logger = Logger.getLogger(NodeActivator.class.getName());
     private static BundleContext bundleContext;
     private boolean inited;
     private NodeManager manager;
-    
+
     private DiscoveryActivator discoveryActivator = new DiscoveryActivator();
     private RemoteServiceAdminImpl remoteAdmin;
     private TopologyManagerImpl controller;
@@ -55,50 +59,57 @@
     }
 
     public void start(BundleContext context) throws Exception {
-        bundleContext = context;
+        try {
+            bundleContext = context;
+
+            // FIXME: We should try to avoid aggressive initialization
+            init();
+
+            remoteAdmin = new RemoteServiceAdminImpl(context);
+            remoteAdmin.start();
+
+            discoveryActivator.start(context);
 
-        // FIXME: We should try to avoid aggressive initialization
-        init();
-        
-        remoteAdmin = new RemoteServiceAdminImpl(context);
-        remoteAdmin.start();
-        
-        discoveryActivator.start(context);
-        
-        controller = new TopologyManagerImpl(context);
-        controller.start();
-        
-        boolean found = false;
-        for (Bundle b : context.getBundles()) {
-            if (isSCABundle(b)) {
-                found = true;
-                break;
+            controller = new TopologyManagerImpl(context);
+            controller.start();
+
+            boolean found = false;
+            for (Bundle b : context.getBundles()) {
+                if (isSCABundle(b)) {
+                    found = true;
+                    break;
+                }
             }
-        }
 
-        if (found) {
-            init();
-        } else {
-            context.addBundleListener(this);
+            if (found) {
+                init();
+            } else {
+                context.addBundleListener(this);
+            }
+        } catch (Exception e) {
+            logger.log(Level.SEVERE, e.getMessage(), e);
+            throw e;
         }
     }
 
     public void stop(BundleContext context) throws Exception {
-        context.removeBundleListener(this);
-        controller.stop();
-        controller = null;
-
-        discoveryActivator.stop(context);
-        discoveryActivator = null;
-        
-        remoteAdmin.stop();
-        remoteAdmin = null;
-        
-        manager.stop();
-        bundleContext.removeBundleListener(manager);
-        manager = null;
-        bundleContext = null;
-        inited = false;
+        if (inited) {
+            context.removeBundleListener(this);
+            controller.stop();
+            controller = null;
+
+            discoveryActivator.stop(context);
+            discoveryActivator = null;
+
+            remoteAdmin.stop();
+            remoteAdmin = null;
+
+            manager.stop();
+            bundleContext.removeBundleListener(manager);
+            manager = null;
+            bundleContext = null;
+            inited = false;
+        }
     }
 
     public static BundleContext getBundleContext() {

Modified: tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java?rev=830811&r1=830810&r2=830811&view=diff
==============================================================================
--- tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java (original)
+++ tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/node/osgi/impl/OSGiNodeFactoryImpl.java Thu Oct 29 00:45:49 2009
@@ -96,12 +96,15 @@
 
     public synchronized void init() {
         if (!inited) {
-            super.init();
-
             // Register the ExtensionPointRegistry as an OSGi service
             Dictionary<Object, Object> props = new Hashtable<Object, Object>();
+            registry = createExtensionPointRegistry();
+            registry.start();
             registration =
                 bundleContext.registerService(ExtensionPointRegistry.class.getName(), registry, props);
+
+            // Call super.init after the extension point registry is registered
+            super.init();
         }
     }
 

Modified: tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/AbstractOSGiServiceHandler.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/AbstractOSGiServiceHandler.java?rev=830811&r1=830810&r2=830811&view=diff
==============================================================================
--- tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/AbstractOSGiServiceHandler.java (original)
+++ tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/AbstractOSGiServiceHandler.java Thu Oct 29 00:45:49 2009
@@ -73,12 +73,14 @@
     }
 
     public void stop() {
-        discoveryTracker.close();
-        discoveryTracker = null;
-        introspector = null;
-        nodeFactory = null;
-        registry = null;
-        context = null;
+        if (nodeFactory != null) {
+            discoveryTracker.close();
+            discoveryTracker = null;
+            introspector = null;
+            nodeFactory = null;
+            registry = null;
+            context = null;
+        }
     }
 
     public void setDomainRegistry(String domainRegistry) {

Modified: tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceImporter.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceImporter.java?rev=830811&r1=830810&r2=830811&view=diff
==============================================================================
--- tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceImporter.java (original)
+++ tuscany/java/sca/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/OSGiServiceImporter.java Thu Oct 29 00:45:49 2009
@@ -48,6 +48,7 @@
     }
 
     public void start() {
+        // Defer init() to importService()
     }
 
     public ImportRegistration importService(Bundle bundle, EndpointDescription endpointDescription) {