You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2011/01/18 10:50:02 UTC

svn commit: r1060274 - in /sling/trunk/installer: core/src/main/java/org/apache/sling/installer/core/impl/ factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/

Author: cziegeler
Date: Tue Jan 18 09:50:01 2011
New Revision: 1060274

URL: http://svn.apache.org/viewvc?rev=1060274&view=rev
Log:
Fix NPEs and make service execution more robust.

Modified:
    sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java
    sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java
    sling/trunk/installer/factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/DeploymentPackageInstaller.java

Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java?rev=1060274&r1=1060273&r2=1060274&view=diff
==============================================================================
--- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java (original)
+++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java Tue Jan 18 09:50:01 2011
@@ -167,29 +167,30 @@ public class DefaultTransformer
     private Manifest getManifest(final InputStream ins) throws IOException {
         Manifest result = null;
 
-        JarInputStream jis = null;
-        try {
-            jis = new JarInputStream(ins);
-            result= jis.getManifest();
-
-        } finally {
-
-            // close the jar stream or the inputstream, if the jar
-            // stream is set, we don't need to close the input stream
-            // since closing the jar stream closes the input stream
-            if (jis != null) {
-                try {
-                    jis.close();
-                } catch (IOException ignore) {
-                }
-            } else {
-                try {
-                    ins.close();
-                } catch (IOException ignore) {
+        if ( ins != null ) {
+            JarInputStream jis = null;
+            try {
+                jis = new JarInputStream(ins);
+                result= jis.getManifest();
+
+            } finally {
+
+                // close the jar stream or the inputstream, if the jar
+                // stream is set, we don't need to close the input stream
+                // since closing the jar stream closes the input stream
+                if (jis != null) {
+                    try {
+                        jis.close();
+                    } catch (IOException ignore) {
+                    }
+                } else {
+                    try {
+                        ins.close();
+                    } catch (IOException ignore) {
+                    }
                 }
             }
         }
-
         return result;
     }
 

Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java?rev=1060274&r1=1060273&r2=1060274&view=diff
==============================================================================
--- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java (original)
+++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java Tue Jan 18 09:50:01 2011
@@ -164,7 +164,6 @@ public class OsgiInstallerImpl
         while (active) {
             logger.debug("Starting new cycle");
 
-            boolean sleep = true;
             this.mergeNewlyRegisteredResources();
 
             // invoke transformers
@@ -192,15 +191,12 @@ public class OsgiInstallerImpl
                         logger.debug("Notified of new resources, back to work");
                     }
                 }
-                sleep = false;
-            }
-            if ( sleep ) {
-                // Some integration tests depend on this delay, make sure to
-                // rerun/adapt them if changing this value
-                try {
-                    Thread.sleep(250);
-                } catch (final InterruptedException ignore) {}
             }
+            // Some integration tests depend on this delay, make sure to
+            // rerun/adapt them if changing this value
+            try {
+                Thread.sleep(250);
+            } catch (final InterruptedException ignore) {}
         }
     }
 
@@ -517,13 +513,17 @@ public class OsgiInstallerImpl
                 }
             };
             while (this.active && !tasks.isEmpty()) {
-                InstallTask t = null;
+                InstallTask task = null;
                 synchronized (tasks) {
-                    t = tasks.first();
-                    tasks.remove(t);
+                    task = tasks.first();
+                    tasks.remove(task);
+                }
+                logger.debug("Executing task: {}", task);
+                try {
+                    task.execute(ctx);
+                } catch (final Throwable t) {
+                    logger.error("Uncaught exception during task execution!", t);
                 }
-                logger.debug("Executing task: {}", t);
-                t.execute(ctx);
             }
             persistentList.save();
         }
@@ -558,12 +558,16 @@ public class OsgiInstallerImpl
                     if ( services[i] instanceof ResourceTransformer ) {
                         final ResourceTransformer transformer = (ResourceTransformer)services[i];
 
-                        final TransformationResult[] result = transformer.transform(resource);
-                        if ( result != null && result.length > 0 ) {
-                            this.persistentList.transform(resource, result);
-                            changed = true;
-                            index--;
-                            break;
+                        try {
+                            final TransformationResult[] result = transformer.transform(resource);
+                            if ( result != null && result.length > 0 ) {
+                                this.persistentList.transform(resource, result);
+                                changed = true;
+                                index--;
+                                break;
+                            }
+                        } catch (final Throwable t) {
+                            logger.error("Uncaught exception during resource transformation!", t);
                         }
                     }
                 }

Modified: sling/trunk/installer/factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/DeploymentPackageInstaller.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/DeploymentPackageInstaller.java?rev=1060274&r1=1060273&r2=1060274&view=diff
==============================================================================
--- sling/trunk/installer/factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/DeploymentPackageInstaller.java (original)
+++ sling/trunk/installer/factories/deploymentpck/src/main/java/org/apache/sling/installer/factories/deploypck/impl/DeploymentPackageInstaller.java Tue Jan 18 09:50:01 2011
@@ -91,29 +91,30 @@ public class DeploymentPackageInstaller
     private Manifest getManifest(final InputStream ins) throws IOException {
         Manifest result = null;
 
-        JarInputStream jis = null;
-        try {
-            jis = new JarInputStream(ins);
-            result= jis.getManifest();
+        if ( ins != null ) {
+            JarInputStream jis = null;
+            try {
+                jis = new JarInputStream(ins);
+                result= jis.getManifest();
 
-        } finally {
+            } finally {
 
-            // close the jar stream or the inputstream, if the jar
-            // stream is set, we don't need to close the input stream
-            // since closing the jar stream closes the input stream
-            if (jis != null) {
-                try {
-                    jis.close();
-                } catch (IOException ignore) {
-                }
-            } else {
-                try {
-                    ins.close();
-                } catch (IOException ignore) {
+                // close the jar stream or the inputstream, if the jar
+                // stream is set, we don't need to close the input stream
+                // since closing the jar stream closes the input stream
+                if (jis != null) {
+                    try {
+                        jis.close();
+                    } catch (IOException ignore) {
+                    }
+                } else {
+                    try {
+                        ins.close();
+                    } catch (IOException ignore) {
+                    }
                 }
             }
         }
-
         return result;
     }