Support multiple runnables
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 1 Jan 2015 15:40:57 +0000 (15:40 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 1 Jan 2015 15:40:57 +0000 (15:40 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@7608 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArgeoOsgiDistributionImpl.java

index 08746b5e20032d9e0f8f4c4c0ea23e8f61d6b638..72deeadede3f96091db1dec54b65413f83700455 100644 (file)
@@ -6,6 +6,8 @@ import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
+import javax.swing.text.StyledEditorKit.ItalicAction;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.slc.ModuleSet;
@@ -73,21 +75,39 @@ public class ArgeoOsgiDistributionImpl extends ArtifactDistribution implements
                List<NameVersion> nameVersions = new ArrayList<NameVersion>();
                for (Object module : modules) {
                        // extract runnable from execution flow
-                       if (module instanceof ExecutionFlow)
-                               module = ((ExecutionFlow) module).getRunnable();
-
-                       if (module instanceof ModuleSet)
-                               addNameVersions(nameVersions, (ModuleSet) module);
-                       else if (module instanceof NameVersion) {
-                               NameVersion nv = (NameVersion) module;
-                               if (!nameVersions.contains(nv))
-                                       nameVersions.add(nv);
-                       } else
-                               log.warn("Ignored " + module);
+                       if (module instanceof ExecutionFlow) {
+                               for (Iterator<Runnable> it = ((ExecutionFlow) module)
+                                               .runnables(); it.hasNext();) {
+                                       processModule(nameVersions, it.next());
+                               }
+                       }
+                       // module = ((ExecutionFlow) module).getRunnable();
+                       else {
+                               processModule(nameVersions, module);
+                       }
+                       // if (module instanceof ModuleSet)
+                       // addNameVersions(nameVersions, (ModuleSet) module);
+                       // else if (module instanceof NameVersion) {
+                       // NameVersion nv = (NameVersion) module;
+                       // if (!nameVersions.contains(nv))
+                       // nameVersions.add(nv);
+                       // } else
+                       // log.warn("Ignored " + module);
                }
                return nameVersions.iterator();
        }
 
+       private void processModule(List<NameVersion> nameVersions, Object module) {
+               if (module instanceof ModuleSet)
+                       addNameVersions(nameVersions, (ModuleSet) module);
+               else if (module instanceof NameVersion) {
+                       NameVersion nv = (NameVersion) module;
+                       if (!nameVersions.contains(nv))
+                               nameVersions.add(nv);
+               } else
+                       log.warn("Ignored " + module);
+       }
+
        private void addNameVersions(List<NameVersion> nameVersions,
                        ModuleSet moduleSet) {
                Iterator<? extends NameVersion> it = moduleSet.nameVersions();