]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java
Help working
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / DefaultExecutionFlowDescriptorConverter.java
index 2fb897d3a988b6eec9a5512b0da93cc688e76650..cec087f9d8f017c70d52cb3d4c109b80177f6b83 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * Copyright (C) 2007-2012 Argeo GmbH
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.argeo.slc.core.execution;
 
 import java.util.Comparator;
@@ -25,8 +24,6 @@ import java.util.TreeSet;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.UnsupportedException;
 import org.argeo.slc.execution.ExecutionFlow;
 import org.argeo.slc.execution.ExecutionFlowDescriptor;
 import org.argeo.slc.execution.ExecutionFlowDescriptorConverter;
@@ -35,6 +32,7 @@ import org.argeo.slc.execution.ExecutionSpec;
 import org.argeo.slc.execution.ExecutionSpecAttribute;
 import org.springframework.aop.scope.ScopedObject;
 import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 import org.springframework.context.ApplicationContext;
@@ -75,8 +73,8 @@ public class DefaultExecutionFlowDescriptorConverter implements
                                                .getAttributes().get(key);
 
                                if (attribute == null)
-                                       throw new SlcException("No spec attribute defined for '"
-                                                       + key + "'");
+                                       throw new FlowConfigurationException(
+                                                       "No spec attribute defined for '" + key + "'");
 
                                if (attribute.getIsConstant())
                                        continue values;
@@ -131,10 +129,12 @@ public class DefaultExecutionFlowDescriptorConverter implements
                                                Object obj = PrimitiveUtils.convert(type, ref);
                                                convertedValues.put(key, obj);
                                        } else {
-                                               throw new UnsupportedException("Ref value type",
-                                                               refValue.getType());
+                                               throw new FlowConfigurationException(
+                                                               "Ref value type not supported: "
+                                                                               + refValue.getType());
                                        }
                                } else {
+                                       // default is to take the value as is
                                        convertedValues.put(key, value);
                                }
                        }
@@ -163,19 +163,20 @@ public class DefaultExecutionFlowDescriptorConverter implements
                md.getExecutionFlows().addAll(set);
        }
 
-       @SuppressWarnings("deprecation")
        public ExecutionFlowDescriptor getExecutionFlowDescriptor(
                        ExecutionFlow executionFlow) {
                if (executionFlow.getName() == null)
-                       throw new SlcException("Flow name is null: " + executionFlow);
+                       throw new FlowConfigurationException("Flow name is null: "
+                                       + executionFlow);
                String name = executionFlow.getName();
 
                ExecutionSpec executionSpec = executionFlow.getExecutionSpec();
                if (executionSpec == null)
-                       throw new SlcException("Execution spec is null: " + executionFlow);
+                       throw new FlowConfigurationException("Execution spec is null: "
+                                       + executionFlow);
                if (executionSpec.getName() == null)
-                       throw new SlcException("Execution spec name is null: "
-                                       + executionSpec);
+                       throw new FlowConfigurationException(
+                                       "Execution spec name is null: " + executionSpec);
 
                Map<String, Object> values = new TreeMap<String, Object>();
                for (String key : executionSpec.getAttributes().keySet()) {
@@ -203,22 +204,25 @@ public class DefaultExecutionFlowDescriptorConverter implements
                                                        buildRefValue((RefSpecAttribute) attribute,
                                                                        executionFlow, key));
                        } else {
-                               throw new SlcException("Unkown spec attribute type "
-                                               + attribute.getClass());
+                               throw new FlowConfigurationException(
+                                               "Unkown spec attribute type " + attribute.getClass());
                        }
 
                }
 
-               ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, values,
-                               executionSpec);
-               if (executionFlow.getPath() != null)
-                       efd.setPath(executionFlow.getPath());
-               else
-                       efd.setPath("");
+               ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, null,
+                               values, executionSpec);
+               // if (executionFlow.getPath() != null)
+               // efd.setPath(executionFlow.getPath());
+               // else
+               // efd.setPath("");
 
                // Takes description from spring
-               BeanDefinition bd = getBeanFactory().getBeanDefinition(name);
-               efd.setDescription(bd.getDescription());
+               BeanFactory bf = getBeanFactory();
+               if (bf != null) {
+                       BeanDefinition bd = getBeanFactory().getBeanDefinition(name);
+                       efd.setDescription(bd.getDescription());
+               }
                return efd;
        }
 
@@ -292,7 +296,10 @@ public class DefaultExecutionFlowDescriptorConverter implements
                }
        }
 
+       /** @return can be null */
        private ConfigurableListableBeanFactory getBeanFactory() {
+               if (applicationContext == null)
+                       return null;
                return ((ConfigurableApplicationContext) applicationContext)
                                .getBeanFactory();
        }