]> git.argeo.org Git - gpl/argeo-slc.git/blob - legacy/org.argeo.slc.spring/src/org/argeo/slc/core/execution/ParameterRef.java
Merge remote-tracking branch 'origin/master' into testing
[gpl/argeo-slc.git] / legacy / org.argeo.slc.spring / src / org / argeo / slc / core / execution / ParameterRef.java
1 package org.argeo.slc.core.execution;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.argeo.slc.runtime.InstantiationManager;
6 import org.springframework.beans.factory.FactoryBean;
7
8 public class ParameterRef implements FactoryBean<Object> {
9 private final static Log log = LogFactory.getLog(ParameterRef.class);
10
11 private InstantiationManager instantiationManager;
12 private String name;
13
14 /** Cached object. */
15 private Object object;
16
17 public ParameterRef() {
18 }
19
20 public ParameterRef(String name) {
21 this.name = name;
22 }
23
24 public Object getObject() throws Exception {
25 if (log.isTraceEnabled())
26 log.debug("Parameter ref called for " + name);
27
28 if (object == null)
29 object = instantiationManager.getInitializingFlowParameter(name);
30 return object;
31 }
32
33 public Class<?> getObjectType() {
34 if (object == null)
35 return instantiationManager.getInitializingFlowParameterClass(name);
36 else
37 return object.getClass();
38 }
39
40 public boolean isSingleton() {
41 return true;
42 }
43
44 public void setInstantiationManager(
45 InstantiationManager instantiationManager) {
46 this.instantiationManager = instantiationManager;
47 }
48
49 public void setName(String name) {
50 this.name = name;
51 }
52
53 }