X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2FDefaultExecutionFlowDescriptorConverter.java;h=d7670789e056664442566b1c74af2ebb5e0c48db;hb=8c588d3128b3885ac4fe0a0d2fbd358640d336a5;hp=27929b4b6fbaff5b34e7a62e8cf6f4ccf398a2a0;hpb=32f9566efa0d0ce29b31ee0779faf2b42f46321a;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java index 27929b4b6..d7670789e 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/DefaultExecutionFlowDescriptorConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Mathieu Baudier + * 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); } } @@ -167,15 +167,17 @@ public class DefaultExecutionFlowDescriptorConverter implements 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 values = new TreeMap(); for (String key : executionSpec.getAttributes().keySet()) { @@ -203,22 +205,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); + 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; } @@ -269,9 +274,15 @@ public class DefaultExecutionFlowDescriptorConverter implements } } if (ref == null) { - log.warn("Cannot define reference for ref spec attribute " - + key + " in " + executionFlow + " (" + rsa + ")." - + " If it is an inner bean consider put it frozen."); + if (log.isTraceEnabled()) + log.trace("Cannot define reference for ref spec attribute " + + key + + " in " + + executionFlow + + " (" + + rsa + + ")." + + " If it is an inner bean consider put it frozen."); ref = REF_VALUE_INTERNAL; } else { if (log.isTraceEnabled()) @@ -286,7 +297,10 @@ public class DefaultExecutionFlowDescriptorConverter implements } } + /** @return can be null */ private ConfigurableListableBeanFactory getBeanFactory() { + if (applicationContext == null) + return null; return ((ConfigurableApplicationContext) applicationContext) .getBeanFactory(); }