You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2009/03/13 14:49:40 UTC

svn commit: r753250 - in /servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer: artifacts/ impl/

Author: gnodet
Date: Fri Mar 13 13:49:39 2009
New Revision: 753250

URL: http://svn.apache.org/viewvc?rev=753250&view=rev
Log:
Fix minor issues that can arise when a problem happen at deployment time

Modified:
    servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
    servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java
    servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java
    servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java
    servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java

Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/artifacts/ServiceAssemblyImpl.java Fri Mar 13 13:49:39 2009
@@ -19,8 +19,10 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
@@ -29,11 +31,10 @@
 
 import org.apache.servicemix.jbi.deployer.ServiceAssembly;
 import org.apache.servicemix.jbi.deployer.ServiceUnit;
-import org.apache.servicemix.jbi.deployer.events.LifeCycleEvent;
 import org.apache.servicemix.jbi.deployer.descriptor.Connection;
 import org.apache.servicemix.jbi.deployer.descriptor.DescriptorFactory;
 import org.apache.servicemix.jbi.deployer.descriptor.ServiceAssemblyDesc;
-import org.apache.servicemix.jbi.deployer.artifacts.AssemblyReferencesListener;
+import org.apache.servicemix.jbi.deployer.events.LifeCycleEvent;
 import org.apache.servicemix.nmr.api.Wire;
 import org.apache.servicemix.nmr.core.util.MapToDictionary;
 import org.osgi.framework.Bundle;
@@ -243,16 +244,23 @@
     }
 
     protected void checkComponentsStarted() throws JBIException {
-        StringBuilder sb = new StringBuilder();
+        Set<String> names = new HashSet<String>();
         for (ServiceUnitImpl su : serviceUnits) {
+            if (su.getComponent() == null) {
+                throw new JBIException("SU has not been correctly deployed: " + su.getName());
+            }
             if (!LifeCycleMBean.STARTED.equals(su.getComponent().getCurrentState())) {
+                names.add(su.getComponentName());
+            }
+        }
+        if (!names.isEmpty()) {
+            StringBuilder sb = new StringBuilder();
+            for (String name : names) {
                 if (sb.length() > 0) {
                     sb.append(", ");
                 }
-                sb.append(su.getComponentName());
+                sb.append(name);
             }
-        }
-        if (sb.length() > 0) {
             throw new JBIException("Components are not started: " + sb.toString());
         }
     }

Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/AbstractInstaller.java Fri Mar 13 13:49:39 2009
@@ -95,7 +95,11 @@
                             ? AbstractLifecycleJbiArtifact.State.Started.name()
                             : AbstractLifecycleJbiArtifact.State.Shutdown.name());
         }
-        prefs.putLong(LAST_INSTALL, lastInstall);
+    }
+
+    protected void postInstall() throws Exception {
+        Preferences prefs = getPreferences();
+        prefs.putLong(LAST_INSTALL, getBundle().getLastModified());
         prefs.flush();
     }
 

Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java Fri Mar 13 13:49:39 2009
@@ -20,10 +20,8 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
-import java.util.Set;
 
 import javax.jbi.JBIException;
 import javax.jbi.component.Bootstrap;
@@ -135,13 +133,16 @@
                     ObjectName name = initComponent();
                     cleanUpBootstrap();
                     installationContext.setInstall(false);
+                    postInstall();
                     return name;
                 } catch (Exception e) {
                     cleanUpBootstrap();
                     throw e;
                 }
             } else {
-                return initComponent();
+                ObjectName name = initComponent();
+                postInstall();
+                return name;
             }
         } catch (Exception e) {
             LOGGER.error(e.getMessage());

Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/Deployer.java Fri Mar 13 13:49:39 2009
@@ -344,13 +344,14 @@
                         throw new IllegalStateException("Unrecognized JBI descriptor: " + url);
                     }
                     installer.setBundle(bundle);
-                    installers.put(bundle, installer);
                 }
 
                 // TODO: handle the case where the bundle is restarted: i.e. the artifact is already installed
                 try {
                     installer.init();
                     installer.install();
+                    // only register installer if installation has been successfull
+                    installers.put(bundle, installer);
                 } catch (PendingException e) {
                     pendingInstallers.add(installer);
                     LOGGER.warn("Requirements not met for JBI artifact in bundle " + OsgiStringUtils.nullSafeNameAndSymName(bundle) + ". Installation pending. " + e);
@@ -503,6 +504,7 @@
             for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
                 su.getComponentImpl().removeServiceUnit(su);
             }
+            pendingAssemblies.remove(assembly);
         }
     }
 

Modified: servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java?rev=753250&r1=753249&r2=753250&view=diff
==============================================================================
--- servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java (original)
+++ servicemix/smx4/nmr/trunk/jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ServiceAssemblyInstaller.java Fri Mar 13 13:49:39 2009
@@ -69,6 +69,7 @@
     public ObjectName install() throws JBIException {
         try {
             List<ServiceUnitImpl> sus = deploySUs();
+            postInstall();
             ServiceAssembly sa = deployer.registerServiceAssembly(bundle, descriptor.getServiceAssembly(), sus);
             return deployer.getNamingStrategy().getObjectName(sa);
         } catch (Exception e) {
@@ -107,14 +108,16 @@
         if (assembly == null && !force) {
             throw ManagementSupport.failure("undeployServiceAssembly", "ServiceAssembly '" + getName() + "' is not deployed.");
         }
-        // Undeploy SUs
-        if (assembly.getServiceUnitsList() != null) {
-            for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
-                su.undeploy();
+        if (assembly != null) {
+            // Undeploy SUs
+            if (assembly.getServiceUnitsList() != null) {
+                for (ServiceUnitImpl su : assembly.getServiceUnitsList()) {
+                    su.undeploy();
+                }
             }
+            // Unregister assembly
+            deployer.unregisterServiceAssembly(assembly);
         }
-        // Unregister assembly
-        deployer.unregisterServiceAssembly(assembly);
         // Remove preferences
         try {
             deletePreferences();