1 /* 2 * Copyright (C) 2007-2012 Argeo GmbH 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.argeo.slc.core.execution; 17 18 import org.argeo.slc.execution.ExecutionModule; 19 20 @Deprecated 21 public abstract class AbstractSpringExecutionModule implements ExecutionModule 22 { 23 /* 24 protected ApplicationContext applicationContext; 25 26 protected ExecutionContext executionContext; 27 28 protected ExecutionFlowDescriptorConverter descriptorConverter = new DefaultDescriptorConverter(); 29 30 public ExecutionModuleDescriptor getDescriptor() { 31 ExecutionModuleDescriptor md = new ExecutionModuleDescriptor(); 32 md.setName(getName()); 33 md.setVersion(getVersion()); 34 35 Map<String, ExecutionFlow> executionFlows = listFlows(); 36 for (String name : executionFlows.keySet()) { 37 ExecutionFlow executionFlow = executionFlows.get(name); 38 39 Assert.notNull(executionFlow.getName()); 40 Assert.state(name.equals(executionFlow.getName())); 41 42 ExecutionSpec executionSpec = executionFlow.getExecutionSpec(); 43 Assert.notNull(executionSpec); 44 Assert.notNull(executionSpec.getName()); 45 46 Map<String, Object> values = new TreeMap<String, Object>(); 47 for (String key : executionSpec.getAttributes().keySet()) { 48 ExecutionSpecAttribute attribute = executionSpec 49 .getAttributes().get(key); 50 51 if (executionFlow.isSetAsParameter(key)) { 52 Object value = executionFlow.getParameter(key); 53 if (attribute instanceof PrimitiveSpecAttribute) { 54 PrimitiveValue primitiveValue = new PrimitiveValue(); 55 primitiveValue 56 .setType(((PrimitiveSpecAttribute) attribute) 57 .getType()); 58 primitiveValue.setValue(value); 59 values.put(key, primitiveValue); 60 } else if (attribute instanceof RefSpecAttribute) { 61 RefValue refValue = new RefValue(); 62 if (value instanceof ScopedObject) { 63 refValue.setLabel("RUNTIME " 64 + value.getClass().getName()); 65 } else { 66 refValue.setLabel("STATIC " 67 + value.getClass().getName()); 68 } 69 values.put(key, refValue); 70 } else if (attribute instanceof ResourceSpecAttribute) { 71 PrimitiveValue primitiveValue = new PrimitiveValue(); 72 primitiveValue 73 .setType(((ResourceSpecAttribute) attribute) 74 .getType()); 75 primitiveValue.setValue(value); 76 values.put(key, primitiveValue); 77 } else { 78 throw new SlcException("Unkown spec attribute type " 79 + attribute.getClass()); 80 } 81 } 82 83 } 84 85 ExecutionFlowDescriptor efd = new ExecutionFlowDescriptor(name, 86 values, executionSpec); 87 if (executionFlow.getPath() != null) 88 efd.setPath(executionFlow.getPath()); 89 90 // Add execution spec if necessary 91 if (!md.getExecutionSpecs().contains(executionSpec)) 92 md.getExecutionSpecs().add(executionSpec); 93 94 // Add execution flow 95 md.getExecutionFlows().add(efd); 96 } 97 98 return md; 99 } 100 101 protected Map<String, ExecutionFlow> listFlows() { 102 GenericBeanFactoryAccessor accessor = new GenericBeanFactoryAccessor( 103 applicationContext); 104 Map<String, ExecutionFlow> executionFlows = accessor 105 .getBeansOfType(ExecutionFlow.class); 106 return executionFlows; 107 } 108 109 public void execute(ExecutionFlowDescriptor executionFlowDescriptor) { 110 if (descriptorConverter != null) 111 executionContext.addVariables(descriptorConverter 112 .convertValues(executionFlowDescriptor)); 113 ExecutionFlow flow = (ExecutionFlow) applicationContext.getBean( 114 executionFlowDescriptor.getName(), ExecutionFlow.class); 115 flow.run(); 116 } 117 118 public void setApplicationContext(ApplicationContext applicationContext) 119 throws BeansException { 120 this.applicationContext = applicationContext; 121 } 122 123 public void setExecutionContext(ExecutionContext executionContext) { 124 this.executionContext = executionContext; 125 } 126 127 public void setDescriptorConverter( 128 ExecutionFlowDescriptorConverter descriptorConverter) { 129 this.descriptorConverter = descriptorConverter; 130 }*/ 131 132 }