/*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * Copyright (C) 2007-2012 Mathieu Baudier
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.argeo.slc.core.execution;
import java.util.Comparator;
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;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
private ApplicationContext applicationContext;
+ @SuppressWarnings("unused")
public Map<String, Object> convertValues(
ExecutionFlowDescriptor executionFlowDescriptor) {
Map<String, Object> values = executionFlowDescriptor.getValues();
ExecutionSpecAttribute attribute = executionSpec
.getAttributes().get(key);
- if (attribute.getIsFrozen())
+ if (attribute == null)
+ throw new SlcException("No spec attribute defined for '"
+ + key + "'");
+
+ if (attribute.getIsConstant())
continue values;
Object value = values.get(key);
throw new UnsupportedException("Ref value type",
refValue.getType());
}
- }else{
+ } else {
+ // default is to take the value as is
convertedValues.put(key, value);
}
}
public ExecutionFlowDescriptor getExecutionFlowDescriptor(
ExecutionFlow executionFlow) {
- Assert.notNull(executionFlow.getName());
+ if (executionFlow.getName() == null)
+ throw new SlcException("Flow name is null: " + executionFlow);
String name = executionFlow.getName();
ExecutionSpec executionSpec = executionFlow.getExecutionSpec();
- Assert.notNull(executionSpec);
- Assert.notNull(executionSpec.getName());
+ if (executionSpec == null)
+ throw new SlcException("Execution spec is null: " + executionFlow);
+ if (executionSpec.getName() == null)
+ throw new SlcException("Execution spec name is null: "
+ + executionSpec);
Map<String, Object> values = new TreeMap<String, Object>();
for (String key : executionSpec.getAttributes().keySet()) {
// all necessary information is in the spec
}
} else if (attribute instanceof RefSpecAttribute) {
- if (attribute.getIsFrozen()) {
+ if (attribute.getIsConstant()) {
values.put(key, new RefValue(REF_VALUE_INTERNAL));
} else
values.put(
ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, values,
executionSpec);
- if (executionFlow.getPath() != null)
- efd.setPath(executionFlow.getPath());
- else
- efd.setPath("");
+// 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;
}
RefValue refValue = new RefValue();
// FIXME: UI should be able to deal with other types
refValue.setType(REF_VALUE_TYPE_BEAN_NAME);
- Class targetClass = rsa.getTargetClass();
+ Class<?> targetClass = rsa.getTargetClass();
String primitiveType = PrimitiveUtils.classAsType(targetClass);
if (primitiveType != null) {
if (executionFlow.isSetAsParameter(key)) {
}
}
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())
}
}
+ /** @return can be null */
private ConfigurableListableBeanFactory getBeanFactory() {
+ if (applicationContext == null)
+ return null;
return ((ConfigurableApplicationContext) applicationContext)
.getBeanFactory();
}
private static class ExecutionFlowDescriptorComparator implements
Comparator<ExecutionFlowDescriptor> {
+ @SuppressWarnings("deprecation")
public int compare(ExecutionFlowDescriptor o1,
ExecutionFlowDescriptor o2) {
// TODO: write unit tests for this