View Javadoc

1   package br.com.ibnetwork.guara.pull.impl;
2   
3   import org.apache.avalon.framework.configuration.Configuration;
4   import org.apache.avalon.framework.configuration.ConfigurationException;
5   
6   import br.com.ibnetwork.xingu.factory.Factory;
7   import br.com.ibnetwork.guara.pull.ApplicationTool;
8   import br.com.ibnetwork.guara.pull.ApplicationToolHandler;
9   import br.com.ibnetwork.guara.pull.PullManager;
10  import br.com.ibnetwork.guara.rundata.RunData;
11  
12  /***
13   * @author leandro
14   */
15  public class ApplicationToolHandlerImpl 
16  	implements ApplicationToolHandler
17  {
18      private String name;
19      
20      private String scope;
21      
22      private String className;
23      
24      private Factory factory;
25      
26      private Object instance;
27      
28      private boolean useCache;
29      
30      public ApplicationToolHandlerImpl(Configuration conf, Factory factory) 
31      	throws ConfigurationException
32      {
33          name = conf.getAttribute("name");
34          scope = conf.getAttribute("scope");
35          className = conf.getAttribute("className");
36          this.factory = factory;
37          useCache = PullManager.SCOPE_GLOBAL.equals(scope); 
38      }
39  
40      public String getScope()
41      {
42          return scope;
43      }
44  
45      public String getName()
46      {
47          return name;
48      }
49  
50      
51      public Object newToolInstance()
52  		throws Exception
53  	{
54          return newToolInstance(null);
55  	}
56      
57      public Object newToolInstance(RunData data)
58      	throws Exception
59      {
60          Object obj;
61          if(instance == null)
62          {
63              obj = factory.create(className);
64          }
65          else
66          {
67              obj = instance;
68          }
69          if(obj instanceof ApplicationTool)
70          {
71              ((ApplicationTool)obj).refresh(data);
72          }
73          if(useCache)
74          {
75              instance = obj;
76          }
77          return obj;
78      }
79  }