Author: bdelacretaz
Date: Tue May 19 15:45:11 2009
New Revision: 776361

URL: http://svn.apache.org/viewvc?rev=776361&view=rev
Log:
SLING-904 - refactor for more general purpose tasks

Added:
    
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiResourceTask.java
      - copied, changed from r776322, 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
Modified:
    incubator/sling/trunk/contrib/extensions/jcrinstall/it/pom.xml
    
incubator/sling/trunk/contrib/extensions/jcrinstall/it/src/test/java/org/apache/sling/jcr/jcrinstall/it/OsgiControllerTest.java
    
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerImpl.java
    
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
    
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTaskExecutor.java
    
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/ResourceQueueTask.java

Modified: incubator/sling/trunk/contrib/extensions/jcrinstall/it/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/it/pom.xml?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- incubator/sling/trunk/contrib/extensions/jcrinstall/it/pom.xml (original)
+++ incubator/sling/trunk/contrib/extensions/jcrinstall/it/pom.xml Tue May 19 
15:45:11 2009
@@ -168,6 +168,42 @@
                             </archive>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>otherbundleA-1.0</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <classifier>otherbundleA-1.0</classifier>
+                            <archive>
+                                <manifestEntries>
+                                    <Manifest-Version>2</Manifest-Version>
+                                    <Bundle-Name>JCRinstall test 
bundle</Bundle-Name>
+                                    
<Bundle-SymbolicName>jcrinstall-otherbundleA</Bundle-SymbolicName>
+                                    <Bundle-Version>1.0</Bundle-Version>
+                                </manifestEntries>
+                            </archive>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>otherbundleB-1.0</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <classifier>otherbundleB-1.0</classifier>
+                            <archive>
+                                <manifestEntries>
+                                    <Manifest-Version>2</Manifest-Version>
+                                    <Bundle-Name>JCRinstall test 
bundle</Bundle-Name>
+                                    
<Bundle-SymbolicName>jcrinstall-otherbundleB</Bundle-SymbolicName>
+                                    <Bundle-Version>1.0</Bundle-Version>
+                                </manifestEntries>
+                            </archive>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
           </plugins>

Modified: 
incubator/sling/trunk/contrib/extensions/jcrinstall/it/src/test/java/org/apache/sling/jcr/jcrinstall/it/OsgiControllerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/it/src/test/java/org/apache/sling/jcr/jcrinstall/it/OsgiControllerTest.java?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/it/src/test/java/org/apache/sling/jcr/jcrinstall/it/OsgiControllerTest.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/it/src/test/java/org/apache/sling/jcr/jcrinstall/it/OsgiControllerTest.java
 Tue May 19 15:45:11 2009
@@ -230,6 +230,49 @@
                assertFalse("Bundle ID must have changed after uninstall and 
reinstall", bundleId == b.getBundleId());
        }
     }
+    
+    @Test
+    public void testBundleStatePreserved() throws Exception {
+       final OsgiController c = getService(OsgiController.class);
+       
+       // Install two bundles, one started, one stopped
+       {
+               c.scheduleInstallOrUpdate("otherBundleA.jar", 
+                               new 
SimpleFileInstallableData(getTestBundle("org.apache.sling.jcr.jcrinstall.it-" + 
POM_VERSION + "-otherBundleA-1.0.jar")));
+               c.executeScheduledOperations();
+       }
+       {
+               c.scheduleInstallOrUpdate("otherBundleB.jar", 
+                               new 
SimpleFileInstallableData(getTestBundle("org.apache.sling.jcr.jcrinstall.it-" + 
POM_VERSION + "-otherBundleB-1.0.jar")));
+               c.executeScheduledOperations();
+               findBundle("jcrinstall-otherbundleB").stop();
+       }
+       
+       assertEquals("Bundle A must be started", Bundle.ACTIVE, 
findBundle("jcrinstall-otherbundleA").getState());
+       assertEquals("Bundle B must be stopped", Bundle.RESOLVED, 
findBundle("jcrinstall-otherbundleB").getState());
+       
+       // Execute some OsgiController operations
+       final String symbolicName = "jcrinstall-testbundle";
+       final String uri = symbolicName + ".jar";
+       final String BUNDLE_VERSION = "Bundle-Version";
+       c.scheduleInstallOrUpdate(uri, 
+                       new 
SimpleFileInstallableData(getTestBundle("org.apache.sling.jcr.jcrinstall.it-" + 
POM_VERSION + "-testbundle-1.1.jar")));
+       c.executeScheduledOperations();
+       c.scheduleInstallOrUpdate(uri, 
+                       new 
SimpleFileInstallableData(getTestBundle("org.apache.sling.jcr.jcrinstall.it-" + 
POM_VERSION + "-testbundle-1.2.jar")));
+       c.executeScheduledOperations();
+       c.scheduleInstallOrUpdate(uri, 
+                       new 
SimpleFileInstallableData(getTestBundle("org.apache.sling.jcr.jcrinstall.it-" + 
POM_VERSION + "-testbundle-1.0.jar")));
+       c.executeScheduledOperations();
+       final Bundle b = findBundle(symbolicName);
+       assertNotNull("Installed bundle must be found", b);
+       assertEquals("Installed bundle must be started", Bundle.ACTIVE, 
b.getState());
+       assertEquals("Version must be 1.2", "1.2", 
b.getHeaders().get(BUNDLE_VERSION));
+       
+       // And check that bundles A and B have kept their states
+       assertEquals("Bundle A must be started", Bundle.ACTIVE, 
findBundle("jcrinstall-otherbundleA").getState());
+       assertEquals("Bundle B must be stopped", Bundle.RESOLVED, 
findBundle("jcrinstall-otherbundleB").getState());
+    }
 
     @org.ops4j.pax.exam.junit.Configuration
     public static Option[] configuration() {

Modified: 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerImpl.java?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerImpl.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerImpl.java
 Tue May 19 15:45:11 2009
@@ -23,7 +23,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import org.apache.sling.osgi.installer.InstallableData;
 import org.apache.sling.osgi.installer.JcrInstallException;
@@ -54,13 +53,13 @@
  *      name="service.vendor"
  *      value="The Apache Software Foundation"
 */
-public class OsgiControllerImpl implements OsgiController, 
SynchronousBundleListener, OsgiControllerServices {
+public class OsgiControllerImpl implements OsgiController, 
SynchronousBundleListener, OsgiControllerServices, OsgiControllerTask.Context {
 
        private BundleContext bundleContext;
     private Storage storage;
     private OsgiResourceProcessorList processors;
     private ResourceOverrideRules roRules;
-    private final List<Callable<Object>> tasks = new 
LinkedList<Callable<Object>>();
+    private final List<OsgiControllerTask> tasks = new 
LinkedList<OsgiControllerTask>();
     private final OsgiControllerTaskExecutor executor = new 
OsgiControllerTaskExecutor();
 
     public static final String STORAGE_FILENAME = "controller.storage";
@@ -116,13 +115,13 @@
     
     public void scheduleInstallOrUpdate(String uri, InstallableData data) 
throws IOException, JcrInstallException {
        synchronized (tasks) {
-               tasks.add(new OsgiControllerTask(storage, processors, roRules, 
uri, data, bundleContext));
+               tasks.add(new OsgiResourceTask(uri, data, bundleContext));
                }
     }
 
     public void scheduleUninstall(String uri) throws IOException, 
JcrInstallException {
        synchronized (tasks) {
-               tasks.add(new OsgiControllerTask(storage, processors, roRules, 
uri, null, bundleContext));
+               tasks.add(new OsgiResourceTask(uri, null, bundleContext));
        }
     }
 
@@ -183,7 +182,7 @@
             
             // execute returns the list of tasks that could not be executed 
but should be retried later
             // and those have been removed from the tasks list
-            tasks.addAll(executor.execute(tasks));
+            tasks.addAll(executor.execute(tasks, this));
             
                if(logService != null) {
                 logService.log(LogService.LOG_DEBUG, 
@@ -207,4 +206,16 @@
                }
                return null;
        }
+
+       public OsgiResourceProcessorList getProcessors() {
+               return processors;
+       }
+
+       public ResourceOverrideRules getResourceOverrideRules() {
+               return roRules;
+       }
+
+       public Storage getStorage() {
+               return storage;
+       }
 }
\ No newline at end of file

Modified: 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
 Tue May 19 15:45:11 2009
@@ -18,135 +18,15 @@
  */
 package org.apache.sling.osgi.installer.impl;
 
-import static org.apache.sling.osgi.installer.InstallResultCode.IGNORED;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.Callable;
-
-import org.apache.sling.osgi.installer.InstallableData;
-import org.apache.sling.osgi.installer.OsgiResourceProcessor;
 import org.apache.sling.osgi.installer.ResourceOverrideRules;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** An install/upgrade/uninistall task, meant to be executed
- *     by the OsgiController worker thread.
- */
-class OsgiControllerTask implements Callable<Object> {
-       
-       private final String uri;
-       private final InstallableData data;
-       private final Storage storage;
-       private final OsgiResourceProcessorList processors;
-       private final ResourceOverrideRules roRules;
-       
-    private static final Logger log = 
LoggerFactory.getLogger(OsgiControllerTask.class);
 
-    /** Create a task that will install, update or uninstall a resource.
-     * @param data if not null, operation is install or update, else uninstall
-     */
-       OsgiControllerTask(
-                       Storage storage, 
-                       OsgiResourceProcessorList processors, 
-                       ResourceOverrideRules roRules, 
-                       String uri, 
-                       InstallableData data,
-                       BundleContext bc) throws IOException
-       {
-               this.storage = storage;
-               this.processors = processors;
-               this.roRules = roRules;
-               this.uri = uri;
-               this.data = (data == null ? null : new 
InstallableDataWrapper(data, bc));
-       }
-       
-       @Override
-       public String toString() {
-               return 
-                       getClass().getSimpleName()
-                       + ", "
-                       + (isInstallOrUpdate() ? "install/update" : "uninstall")
-                       + ", "
-                       + uri
-               ;
-       }
-       
-       public Object call() throws Exception {
-               if(isInstallOrUpdate()) {
-                       executeInstallOrUpdate();
-               } else {
-                       executeUninstall();
-               }
-               
-               // Cleanup InstallableDataWrapper
-               if(data instanceof InstallableDataWrapper) {
-                       ((InstallableDataWrapper)data).cleanup();
-               }
-               
-               return null;
-       }
+/** A Task that can be executed by the OsgiController */ 
+interface OsgiControllerTask {
+       static interface Context {
+               ResourceOverrideRules getResourceOverrideRules();
+               OsgiResourceProcessorList getProcessors();
+               Storage getStorage();
+       };
        
-       boolean isInstallOrUpdate() {
-               return data != null;
-       }
-
-       private void executeUninstall() throws Exception {
-        // If a corresponding higher priority resource is installed, ignore 
this request
-        if(roRules != null) {
-            for(String r : roRules.getHigherPriorityResources(uri)) {
-                if(storage.contains(r)) {
-                    log.info("Resource {} won't be uninstalled, overridden by 
{} which has higher priority",
-                            uri, r);
-                    return;
-                }
-            }
-        }
-        
-        // let each processor try to uninstall, one of them
-       // should know how that handle uri
-       for(OsgiResourceProcessor p : this.processors) {
-                p.uninstall(uri, storage.getMap(uri));
-       }
-       
-        storage.remove(uri);
-        storage.saveToFile();
-       }
-
-       private void executeInstallOrUpdate() throws Exception {
-        // If a corresponding higher priority resource is already installed, 
ignore this one
-        if(roRules != null) {
-            for(String r : roRules.getHigherPriorityResources(uri)) {
-                if(storage.contains(r)) {
-                    log.info("Resource {} ignored, overridden by {} which has 
higher priority",
-                            uri, r);
-                    return;
-                }
-            }
-        }
-        
-        // If a corresponding lower priority resource is installed, uninstall 
it first
-        if(roRules != null) {
-            for(String r : roRules.getLowerPriorityResources(uri)) {
-                if(storage.contains(r)) {
-                    log.info("Resource {} overrides {}, uninstalling the 
latter",
-                            uri, r);
-                    executeUninstall();
-                }
-            }
-        }
-        
-        // let suitable OsgiResourceProcessor process install
-        final OsgiResourceProcessor p = processors.getProcessor(uri, data);
-        if (p != null) {
-            final Map<String, Object> map = storage.getMap(uri);
-            if(p.installOrUpdate(uri, map, data) != IGNORED) {
-                map.put(OsgiControllerImpl.KEY_DIGEST, data.getDigest());
-            }
-            storage.saveToFile();
-        }
-        return;
-               
-       }
-}
+       void execute(Context ctx) throws Exception;
+}
\ No newline at end of file

Modified: 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTaskExecutor.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTaskExecutor.java?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTaskExecutor.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTaskExecutor.java
 Tue May 19 15:45:11 2009
@@ -20,7 +20,6 @@
 
 import java.util.LinkedList;
 import java.util.List;
-import java.util.concurrent.Callable;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,29 +31,30 @@
     static int counter;
     
        /** Execute the given tasks in a new thread, return when done */
-    List<Callable<Object>> execute(final List<Callable<Object>> tasks) throws 
InterruptedException {
-       final List<Callable<Object>> remainingTasks = new 
LinkedList<Callable<Object>>();
+    List<OsgiControllerTask >execute(final List<OsgiControllerTask> tasks, 
final OsgiControllerTask.Context context) 
+    throws InterruptedException {
+       final List<OsgiControllerTask> remainingTasks = new 
LinkedList<OsgiControllerTask>(); 
                final String threadName = getClass().getSimpleName() + " #" + 
(++counter);
-               final Thread t = new Thread(threadName) {
+               final Thread executor = new Thread(threadName) {
                        @Override
                        public void run() {
                                while(!tasks.isEmpty()) {
-                                       final Callable<Object> c = 
tasks.remove(0);
+                                       final OsgiControllerTask t = 
tasks.remove(0);
                                        try {
-                                               c.call();
-                                               log.debug("Task execution 
successful: " + c);
+                                               t.execute(context);
+                                               log.debug("Task execution 
successful: " + t);
                                        } catch(MissingServiceException mse) {
-                                               log.info("Task execution 
deferred due to " + mse + ", task=" + c);
-                                               remainingTasks.add(c);
+                                               log.info("Task execution 
deferred due to " + mse + ", task=" + t);
+                                               remainingTasks.add(t);
                                        } catch(Exception e) {
-                                               log.warn("Task execution 
failed: " + c, e);
+                                               log.warn("Task execution 
failed: " + t, e);
                                        }
                                }
                        }
                };
-               t.setDaemon(true);
-               t.start();
-               t.join();
+               executor.setDaemon(true);
+               executor.start();
+               executor.join();
                return remainingTasks;
        }
 }

Copied: 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiResourceTask.java
 (from r776322, 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java)
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiResourceTask.java?p2=incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiResourceTask.java&p1=incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java&r1=776322&r2=776361&rev=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiControllerTask.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/OsgiResourceTask.java
 Tue May 19 15:45:11 2009
@@ -22,11 +22,9 @@
 
 import java.io.IOException;
 import java.util.Map;
-import java.util.concurrent.Callable;
 
 import org.apache.sling.osgi.installer.InstallableData;
 import org.apache.sling.osgi.installer.OsgiResourceProcessor;
-import org.apache.sling.osgi.installer.ResourceOverrideRules;
 import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,30 +32,21 @@
 /** An install/upgrade/uninistall task, meant to be executed
  *     by the OsgiController worker thread.
  */
-class OsgiControllerTask implements Callable<Object> {
+class OsgiResourceTask implements OsgiControllerTask {
        
        private final String uri;
        private final InstallableData data;
-       private final Storage storage;
-       private final OsgiResourceProcessorList processors;
-       private final ResourceOverrideRules roRules;
        
-    private static final Logger log = 
LoggerFactory.getLogger(OsgiControllerTask.class);
+    private static final Logger log = 
LoggerFactory.getLogger(OsgiResourceTask.class);
 
     /** Create a task that will install, update or uninstall a resource.
      * @param data if not null, operation is install or update, else uninstall
      */
-       OsgiControllerTask(
-                       Storage storage, 
-                       OsgiResourceProcessorList processors, 
-                       ResourceOverrideRules roRules, 
+       OsgiResourceTask(
                        String uri, 
                        InstallableData data,
                        BundleContext bc) throws IOException
        {
-               this.storage = storage;
-               this.processors = processors;
-               this.roRules = roRules;
                this.uri = uri;
                this.data = (data == null ? null : new 
InstallableDataWrapper(data, bc));
        }
@@ -72,31 +61,31 @@
                        + uri
                ;
        }
+
        
-       public Object call() throws Exception {
+       public void execute(OsgiControllerTask.Context context) throws 
Exception {
+               // TODO Auto-generated method stub
                if(isInstallOrUpdate()) {
-                       executeInstallOrUpdate();
+                       executeInstallOrUpdate(context);
                } else {
-                       executeUninstall();
+                       executeUninstall(context);
                }
                
                // Cleanup InstallableDataWrapper
                if(data instanceof InstallableDataWrapper) {
                        ((InstallableDataWrapper)data).cleanup();
                }
-               
-               return null;
        }
-       
+
        boolean isInstallOrUpdate() {
                return data != null;
        }
 
-       private void executeUninstall() throws Exception {
+       private void executeUninstall(OsgiControllerTask.Context context) 
throws Exception {
         // If a corresponding higher priority resource is installed, ignore 
this request
-        if(roRules != null) {
-            for(String r : roRules.getHigherPriorityResources(uri)) {
-                if(storage.contains(r)) {
+        if(context.getResourceOverrideRules() != null) {
+            for(String r : 
context.getResourceOverrideRules().getHigherPriorityResources(uri)) {
+                if(context.getStorage().contains(r)) {
                     log.info("Resource {} won't be uninstalled, overridden by 
{} which has higher priority",
                             uri, r);
                     return;
@@ -106,19 +95,19 @@
         
         // let each processor try to uninstall, one of them
        // should know how that handle uri
-       for(OsgiResourceProcessor p : this.processors) {
-                p.uninstall(uri, storage.getMap(uri));
+       for(OsgiResourceProcessor p : context.getProcessors()) {
+                p.uninstall(uri, context.getStorage().getMap(uri));
        }
        
-        storage.remove(uri);
-        storage.saveToFile();
+       context.getStorage().remove(uri);
+       context.getStorage().saveToFile();
        }
 
-       private void executeInstallOrUpdate() throws Exception {
+       private void executeInstallOrUpdate(OsgiControllerTask.Context context) 
throws Exception {
         // If a corresponding higher priority resource is already installed, 
ignore this one
-        if(roRules != null) {
-            for(String r : roRules.getHigherPriorityResources(uri)) {
-                if(storage.contains(r)) {
+        if(context.getResourceOverrideRules() != null) {
+            for(String r : 
context.getResourceOverrideRules().getHigherPriorityResources(uri)) {
+                if(context.getStorage().contains(r)) {
                     log.info("Resource {} ignored, overridden by {} which has 
higher priority",
                             uri, r);
                     return;
@@ -127,24 +116,24 @@
         }
         
         // If a corresponding lower priority resource is installed, uninstall 
it first
-        if(roRules != null) {
-            for(String r : roRules.getLowerPriorityResources(uri)) {
-                if(storage.contains(r)) {
+        if(context.getResourceOverrideRules() != null) {
+            for(String r : 
context.getResourceOverrideRules().getLowerPriorityResources(uri)) {
+                if(context.getStorage().contains(r)) {
                     log.info("Resource {} overrides {}, uninstalling the 
latter",
                             uri, r);
-                    executeUninstall();
+                    executeUninstall(context);
                 }
             }
         }
         
         // let suitable OsgiResourceProcessor process install
-        final OsgiResourceProcessor p = processors.getProcessor(uri, data);
+        final OsgiResourceProcessor p = 
context.getProcessors().getProcessor(uri, data);
         if (p != null) {
-            final Map<String, Object> map = storage.getMap(uri);
+            final Map<String, Object> map = context.getStorage().getMap(uri);
             if(p.installOrUpdate(uri, map, data) != IGNORED) {
                 map.put(OsgiControllerImpl.KEY_DIGEST, data.getDigest());
             }
-            storage.saveToFile();
+            context.getStorage().saveToFile();
         }
         return;
                

Modified: 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/ResourceQueueTask.java
URL: 
http://svn.apache.org/viewvc/incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/ResourceQueueTask.java?rev=776361&r1=776360&r2=776361&view=diff
==============================================================================
--- 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/ResourceQueueTask.java
 (original)
+++ 
incubator/sling/trunk/contrib/extensions/jcrinstall/osgi/src/main/java/org/apache/sling/osgi/installer/impl/ResourceQueueTask.java
 Tue May 19 15:45:11 2009
@@ -18,12 +18,10 @@
  */
 package org.apache.sling.osgi.installer.impl;
 
-import java.util.concurrent.Callable;
-
 import org.apache.sling.osgi.installer.OsgiResourceProcessor;
 
 /** Callable that processes the resource queue of an OsgiResourceProcessor */
-class ResourceQueueTask implements Callable<Object> {
+class ResourceQueueTask implements OsgiControllerTask {
        private final OsgiResourceProcessor p;
        
        ResourceQueueTask(OsgiResourceProcessor p) {
@@ -34,9 +32,8 @@
                return getClass().getSimpleName() + ": " + 
p.getClass().getSimpleName()+ ".processResourceQueue()";
        }
        
-       public Object call() throws Exception {
+       
+       public void execute(Context ctx) throws Exception {
                p.processResourceQueue();
-               return null;
        }
-
 }


Reply via email to