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 }