This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-installer-factory-subsystems.git

commit 72a9672c1279264e6dee95ce44037f0b1943d5c9
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Oct 10 13:19:21 2014 +0000

    Start subsystem, once installed and handle snapshot updates
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1630891 
13f79535-47bb-0310-9956-ffa450edef68
---
 .../factories/subsystems/impl/InstallSubsystemTask.java     |  3 ++-
 .../factories/subsystems/impl/SubsystemInstaller.java       | 13 ++++++++++++-
 .../factories/subsystems/impl/UpdateSubsystemTask.java      |  1 +
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/InstallSubsystemTask.java
 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/InstallSubsystemTask.java
index 3f1e10f..230272c 100644
--- 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/InstallSubsystemTask.java
+++ 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/InstallSubsystemTask.java
@@ -45,7 +45,8 @@ public class InstallSubsystemTask extends InstallTask {
         ctx.log("Installing new subsystem from {}", tr);
 
         try {
-            this.rootSubsystem.install(tr.getURL(), tr.getInputStream());
+            final Subsystem sub = this.rootSubsystem.install(tr.getURL(), 
tr.getInputStream());
+            sub.start();
             ctx.addTaskToCurrentCycle(new 
ChangeStateTask(this.getResourceGroup(), ResourceState.INSTALLED));
         } catch (final IOException e) {
             ctx.log("Unable to install subsystem {} : {}", tr, e);
diff --git 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/SubsystemInstaller.java
 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/SubsystemInstaller.java
index ea47728..3b29961 100644
--- 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/SubsystemInstaller.java
+++ 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/SubsystemInstaller.java
@@ -186,8 +186,10 @@ public class SubsystemInstaller
                         if (compare < 0) {
                             // installed version is lower -> update
                             result = new UpdateSubsystemTask(toActivate, 
this.bundleContext, ref, this.rootSubsystem);
+                        } else if ( compare == 0 && isSnapshot(newVersion) ) {
+                            // same version but snapshot -> update
+                            result = new UpdateSubsystemTask(toActivate, 
this.bundleContext, ref, this.rootSubsystem);
                         } else {
-                            // TODO - support SNAPSHOT?
                             logger.debug("{} is not installed, subsystem with 
same or higher version is already installed: {}", info, newVersion);
                             result = new ChangeStateTask(toActivate, 
ResourceState.IGNORED);
                         }
@@ -303,4 +305,13 @@ public class SubsystemInstaller
         }
         return null;
     }
+
+    private static final String MAVEN_SNAPSHOT_MARKER = "SNAPSHOT";
+
+    /**
+     * Check if the version is a snapshot version
+     */
+    public static boolean isSnapshot(final Version v) {
+        return v.toString().indexOf(MAVEN_SNAPSHOT_MARKER) >= 0;
+    }
 }
diff --git 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/UpdateSubsystemTask.java
 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/UpdateSubsystemTask.java
index 3da254b..cb6939c 100644
--- 
a/src/main/java/org/apache/sling/installer/factories/subsystems/impl/UpdateSubsystemTask.java
+++ 
b/src/main/java/org/apache/sling/installer/factories/subsystems/impl/UpdateSubsystemTask.java
@@ -57,6 +57,7 @@ public class UpdateSubsystemTask extends InstallTask {
         try {
             subsystem = this.bundleContext.getService(this.subsystemReference);
             if ( subsystem != null ) {
+                subsystem.stop();
                 subsystem.uninstall();
                 ctx.addTaskToCurrentCycle(new 
InstallSubsystemTask(this.getResourceGroup(), this.rootSubsystem));
             } else {

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to