KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nl > hippo > cocoon > profiling > ProfilingGenerator


1 package nl.hippo.cocoon.profiling;
2
3 import java.io.IOException JavaDoc;
4 import nl.hippo.util.logging.DebugLevelLogger;
5 import nl.hippo.util.logging.ErrorLevelLogger;
6 import nl.hippo.util.logging.FatalErrorLevelLogger;
7 import nl.hippo.util.logging.InfoLevelLogger;
8 import nl.hippo.util.logging.SpecificLogLevelLogger;
9 import nl.hippo.util.logging.WarnLevelLogger;
10 import org.apache.avalon.framework.activity.Disposable;
11 import org.apache.avalon.framework.parameters.ParameterException;
12 import org.apache.avalon.framework.service.ServiceException;
13 import org.apache.avalon.framework.service.ServiceManager;
14 import org.apache.avalon.framework.service.ServiceSelector;
15 import org.apache.avalon.framework.service.Serviceable;
16 import org.apache.cocoon.ProcessingException;
17 import org.apache.cocoon.environment.Request;
18 import org.apache.cocoon.generation.AbstractGenerator;
19 import org.apache.cocoon.generation.Generator;
20 import org.xml.sax.SAXException JavaDoc;
21
22 public class ProfilingGenerator extends AbstractGenerator implements Serviceable, Disposable
23 {
24
25     private ServiceManager m_manager;
26
27     private ServiceSelector m_generatorSelector;
28
29     public ProfilingGenerator()
30     {
31         super();
32     }
33
34     public void generate() throws IOException JavaDoc, SAXException JavaDoc, ProcessingException
35     {
36         long start = System.currentTimeMillis();
37         Generator delegate = null;
38         Request request = (Request) objectModel.get("request");
39         String JavaDoc sitemapURI = request.getSitemapURI();
40         SpecificLogLevelLogger logger = new DebugLevelLogger(getLogger());
41         try
42         {
43             String JavaDoc logLevel = parameters.getParameter("loglevel");
44             if (logLevel != null)
45             {
46                 if (logLevel.equals("info"))
47                 {
48                     logger = new InfoLevelLogger(getLogger());
49                 }
50                 else if (logLevel.equals("warn"))
51                 {
52                     logger = new WarnLevelLogger(getLogger());
53                 }
54                 else if (logLevel.equals("error"))
55                 {
56                     logger = new ErrorLevelLogger(getLogger());
57                 }
58                 else if (logLevel.equals("fatal"))
59                 {
60                     logger = new FatalErrorLevelLogger(getLogger());
61                 }
62             }
63         }
64         catch (ParameterException e)
65         {
66             // Ignore. Use the default debug logger.
67
}
68         try
69         {
70             delegate = (Generator) m_generatorSelector.select(parameters.getParameter("generator"));
71             delegate.setup(resolver, objectModel, source, parameters);
72             delegate.setConsumer(xmlConsumer);
73             delegate.generate();
74         }
75         catch (ParameterException e)
76         {
77             throw new ProcessingException("Unable to get delegate generator", e);
78         }
79         catch (ServiceException e)
80         {
81             throw new ProcessingException("Unable to get delegate generator", e);
82         }
83         finally
84         {
85             if (logger.isEnabled())
86             {
87                 long end = System.currentTimeMillis();
88                 logger.log("Processing of " + sitemapURI + " took: " + (end - start) + "ms");
89             }
90             if (delegate != null)
91             {
92                 m_generatorSelector.release(delegate);
93             }
94         }
95     }
96
97     public void service(ServiceManager manager) throws ServiceException
98     {
99         m_manager = manager;
100         m_generatorSelector = (ServiceSelector) manager.lookup(Generator.ROLE + "Selector");
101     }
102
103     public void dispose()
104     {
105         m_manager.release(m_generatorSelector);
106         m_manager = null;
107     }
108
109 }
110
Popular Tags