1
2 /*
3 * Copyright (C) 2005 by Arno Schumacher
4 *
5 * This file is part of net.sourceforge.servletspy
6 *
7 * net.sourceforge.servletspy is free software; you can redistribute
8 * it and/or modify it under the terms of the GNU General Public
9 * License as published by the Free Software Foundation; either
10 * version 2, or (at your option) any later version.
11 *
12 * net.sourceforge.servletspy is distributed in the hope that it will
13 * be useful, but WITHOUT ANY WARRANTY; without even the implied
14 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 * See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
20 */
21
22 package net.sourceforge.servletspy.handler.std;
23
24 import net.sourceforge.servletspy.IContext;
25 import net.sourceforge.servletspy.IContextHandler;
26 import net.sourceforge.servletspy.config.Param;
27 import net.sourceforge.servletspy.ctx.Context;
28
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31
32 /***
33 * @author arno schumacher
34 */
35 public final class DebugHandler implements IContextHandler {
36
37 /*** The logger. */
38 private static final Log LOGGER = LogFactory.getLog(DebugHandler.class);
39
40 /* (non-Javadoc)
41 * @see net.sourceforge.servletspy.ILifecycle#init(net.sourceforge.servletspy.config.Param[])
42 */
43 public void init(final Param[] params) {
44 }
45
46 /* (non-Javadoc)
47 * @see net.sourceforge.servletspy.ILifecycle#destroy()
48 */
49 public void destroy() {
50 }
51
52 /* (non-Javadoc)
53 * @see net.sourceforge.servletspy.IContextHandler#handle(net.sourceforge.servletspy.IContext)
54 */
55 public void handle(final IContext pContext) throws Exception {
56 final Context context = (Context) pContext;
57 final Object subject = context.getSubject();
58
59 final long time = System.currentTimeMillis();
60 try {
61 context.proceed();
62 } finally {
63 final long deltaTime = System.currentTimeMillis() - time;
64 final boolean nodeCreated = context.getNode() != null;
65 final String nodeName = nodeCreated ? context.getNode().getName()
66 : "";
67 final boolean isReference = nodeCreated ? context.getNode()
68 .hasReference() : false;
69 if (isReference) {
70 LOGGER.debug(nodeName + ": subject=" + subject + ", time="
71 + deltaTime + ", nodeCreated=" + nodeCreated
72 + ", isReference=" + isReference);
73 }
74 }
75 }
76 }