]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/generator/RunnableCallFlow.java
Improve OSGi factory
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / generator / RunnableCallFlow.java
index 0065b18ccbbc369b79ff7e9caeeaa6e2ed151fc0..695606c210f803dafda009d5f97c18b078e72f32 100644 (file)
@@ -15,6 +15,8 @@
  */\r
 package org.argeo.slc.core.execution.generator;\r
 \r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
 \r
@@ -142,8 +144,8 @@ public class RunnableCallFlow implements ExecutionFlow, ApplicationContextAware
                try {\r
                        for (int callIndex = 0; callIndex < runnableCalls.size(); ++callIndex) {\r
                                RunnableCall runnableCall = runnableCalls.get(callIndex);\r
-                               Object bean = applicationContext.getBean(runnableCall\r
-                                               .getBeanName(), Runnable.class);\r
+                               Object bean = applicationContext.getBean(\r
+                                               runnableCall.getBeanName(), Runnable.class);\r
                                if (log.isDebugEnabled())\r
                                        log.debug("Running flow '" + runnableCall.getBeanName()\r
                                                        + "'");\r
@@ -164,11 +166,30 @@ public class RunnableCallFlow implements ExecutionFlow, ApplicationContextAware
                }\r
        }\r
 \r
+       public Iterator<Runnable> runnables() {\r
+               List<Runnable> runnables = new ArrayList<Runnable>();\r
+               for (int callIndex = 0; callIndex < runnableCalls.size(); ++callIndex) {\r
+                       RunnableCall runnableCall = runnableCalls.get(callIndex);\r
+                       Object bean = applicationContext.getBean(\r
+                                       runnableCall.getBeanName(), Runnable.class);\r
+                       runnables.add((Runnable) bean);\r
+               }\r
+               return runnables.iterator();\r
+       }\r
+\r
+       public Runnable getRunnable() {\r
+               if (runnableCalls.size() == 1)\r
+                       return runnables().next();\r
+               else\r
+                       throw new SlcException("There are " + runnableCalls.size()\r
+                                       + " runnables in flow " + getName());\r
+       }\r
+\r
        @Override\r
        public String toString() {\r
                return new StringBuffer("RunnableCallFlow ").append(name).toString();\r
-       }       \r
-       \r
+       }\r
+\r
        public ExecutionSpec getExecutionSpec() {\r
                return executionSpec;\r
        }\r