1 package br.com.ibnetwork.guara.pipeline.valve.pull;
2
3 import java.util.Iterator;
4 import java.util.List;
5
6 import javax.servlet.http.HttpSession;
7
8 import org.apache.avalon.framework.service.ServiceException;
9 import org.apache.avalon.framework.service.ServiceManager;
10 import org.apache.avalon.framework.service.Serviceable;
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13
14 import br.com.ibnetwork.guara.pipeline.PipelineException;
15 import br.com.ibnetwork.guara.pipeline.valve.ValveSupport;
16 import br.com.ibnetwork.guara.pull.ApplicationToolHandler;
17 import br.com.ibnetwork.guara.pull.PullManager;
18 import br.com.ibnetwork.guara.rundata.RunData;
19 import br.com.ibnetwork.guara.view.Context;
20
21 /***
22 * @author leandro
23 */
24 public class PopulateContextWithTools
25 extends ValveSupport
26 implements Serviceable
27 {
28 private Log logger;
29
30 private PullManager pullManager;
31
32 public void service(ServiceManager manager)
33 throws ServiceException
34 {
35 logger = LogFactory.getLog(PopulateContextWithTools.class);
36 pullManager = (PullManager) manager.lookup(PullManager.ROLE);
37 }
38
39 public boolean execute(RunData runData)
40 throws PipelineException
41 {
42 Context ctx = runData.getContext();
43
44
45 List globalTools = pullManager.getAllToolHandlers(PullManager.SCOPE_GLOBAL);
46 populateContext(globalTools, runData);
47
48
49 List requestTools = pullManager.getAllToolHandlers(PullManager.SCOPE_REQUEST);
50 populateContext(requestTools, runData);
51
52
53 HttpSession session = runData.getRequest().getSession();
54 if(session.isNew())
55 {
56 List sessionTools = pullManager.getAllToolHandlers(PullManager.SCOPE_SESSION);
57 populateContext(sessionTools, runData);
58 }
59 else
60 {
61
62 }
63 return true;
64 }
65
66 private void populateContext(List tools, RunData runData)
67 {
68 if(tools == null)
69 {
70 return;
71 }
72 Context ctx = runData.getContext();
73 for (Iterator iter = tools.iterator(); iter.hasNext();)
74 {
75 ApplicationToolHandler handler = (ApplicationToolHandler) iter.next();
76 try
77 {
78 Object tool = handler.newToolInstance(runData);
79 ctx.put(handler.getName(),tool);
80 if(logger.isDebugEnabled())
81 {
82 logger.debug("Adding tool["+handler.getName()+"] scope["
83 +handler.getScope()+"] to context");
84 }
85 }
86 catch (Exception e)
87 {
88 logger.error("Error adding tool to context",e);
89 }
90 }
91 }
92 }