Title: [waffle-scm] [626] trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet: WAFFLE-72: Enhanced ServletMonitor.

Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java (625 => 626)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java	2008-04-19 13:11:22 UTC (rev 625)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java	2008-04-19 13:46:15 UTC (rev 626)
@@ -10,31 +10,34 @@
  *****************************************************************************/
 package org.codehaus.waffle.monitor;
 
-import org.codehaus.waffle.action.ActionMethodResponse;
-import org.codehaus.waffle.action.HierarchicalArgumentResolver.Scope;
-import org.codehaus.waffle.action.MethodDefinition;
-import org.codehaus.waffle.context.ContextContainer;
-import org.codehaus.waffle.controller.ControllerDefinition;
+import static java.text.MessageFormat.format;
+import static java.util.Arrays.asList;
 import static org.codehaus.waffle.monitor.Monitor.Level.DEBUG;
 import static org.codehaus.waffle.monitor.Monitor.Level.INFO;
 import static org.codehaus.waffle.monitor.Monitor.Level.WARN;
-import org.codehaus.waffle.registrar.Registrar;
-import org.codehaus.waffle.validation.BindErrorMessage;
-import org.codehaus.waffle.view.RedirectView;
-import org.codehaus.waffle.view.ResponderView;
-import org.codehaus.waffle.view.View;
 
-import javax.servlet.http.HttpServletResponse;
 import java.lang.reflect.Method;
-import static java.text.MessageFormat.format;
 import java.util.ArrayList;
-import static java.util.Arrays.asList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
+import javax.servlet.Servlet;
+import javax.servlet.http.HttpServletResponse;
+
+import org.codehaus.waffle.action.ActionMethodResponse;
+import org.codehaus.waffle.action.MethodDefinition;
+import org.codehaus.waffle.action.HierarchicalArgumentResolver.Scope;
+import org.codehaus.waffle.context.ContextContainer;
+import org.codehaus.waffle.controller.ControllerDefinition;
+import org.codehaus.waffle.registrar.Registrar;
+import org.codehaus.waffle.validation.BindErrorMessage;
+import org.codehaus.waffle.view.RedirectView;
+import org.codehaus.waffle.view.ResponderView;
+import org.codehaus.waffle.view.View;
+
 /**
  * Abstract implementation of Monitor that delegates writing to concrete subclasses.
  * 
@@ -92,6 +95,8 @@
         levels.put("instanceRegistered", DEBUG);
         levels.put("nonCachingComponentRegistered", DEBUG);
         levels.put("actionMethodInvocationFailed", WARN);
+        levels.put("servletInitialized", INFO);
+        levels.put("servletServiceFailed", WARN);
         levels.put("servletServiceRequested", DEBUG);
         levels.put("controllerValidatorNotFound", WARN);
         levels.put("methodDefinitionNotFound", WARN);        
@@ -145,6 +150,8 @@
         messages.put("instanceRegistered", "Registered instance ''{1}'' with key ''{0}''");
         messages.put("nonCachingComponentRegistered", "Registered non-caching component of type ''{1}'' with key ''{0}'' and parameters ''{2}''");
         messages.put("actionMethodInvocationFailed", "ActionMethod invocation failed: {0}");
+        messages.put("servletInitialized", "Servlet initialized: {0}");
+        messages.put("servletServiceFailed", "Servlet service failed: {0}");
         messages.put("servletServiceRequested", "Servlet service requested with parameters: {0}");
         messages.put("controllerValidatorNotFound", "Controller validator ''{0}'' not found: defaulting to controller ''{1}''");
         messages.put("methodDefinitionNotFound", "Method definition not found in controller definition ''{0}''");        
@@ -326,7 +333,15 @@
     public void actionMethodInvocationFailed(Exception cause){
         write("actionMethodInvocationFailed", cause);        
     }
+
+    public void servletInitialized(Servlet servlet) {
+        write("servletInitialized", servlet);
+    }
     
+    public void servletServiceFailed(Exception cause){
+        write("servletServiceFailed", cause);        
+    }
+    
     public void servletServiceRequested(Map<String, List<String>> parameters){
         write("servletServiceRequested", parameters);        
     }

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java (625 => 626)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java	2008-04-19 13:11:22 UTC (rev 625)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/ServletMonitor.java	2008-04-19 13:46:15 UTC (rev 626)
@@ -13,7 +13,9 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.Servlet;
 
+
 /**
  * A monitor for servlet-related events
  * 
@@ -23,6 +25,10 @@
 
     void actionMethodInvocationFailed(Exception cause);
     
+    void servletInitialized(Servlet servlet);
+
     void servletServiceRequested(Map<String, List<String>> parameters);
 
+    void servletServiceFailed(Exception cause);
+
 }

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java (625 => 626)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java	2008-04-19 13:11:22 UTC (rev 625)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java	2008-04-19 13:46:15 UTC (rev 626)
@@ -62,16 +62,16 @@
     private static final String DEFAULT_ERRORS_VIEW = "errors";
     private static final String EMPTY = "";
     private static final String POST = "POST";
+    private String viewPrefix;
+    private String viewSuffix;
+    private String errorsView;
     private ActionMethodExecutor actionMethodExecutor;
     private ActionMethodResponseHandler actionMethodResponseHandler;
-    private ServletMonitor servletMonitor;
+    private ControllerDefinitionFactory controllerDefinitionFactory;
     private DataBinder dataBinder;
     private RequestAttributeBinder requestAttributeBinder;
-    private ControllerDefinitionFactory controllerDefinitionFactory;
     private Validator validator;
-    private String viewPrefix;
-    private String viewSuffix;
-    private String errorsView;
+    private ServletMonitor servletMonitor;
     private boolean componentsRetrieved = false;
 
     /**
@@ -119,12 +119,13 @@
             ComponentRegistry registry = getComponentRegistry();
             actionMethodExecutor = registry.getActionMethodExecutor();
             actionMethodResponseHandler = registry.getActionMethodResponseHandler();
-            servletMonitor = registry.getServletMonitor();
+            controllerDefinitionFactory = registry.getControllerDefinitionFactory();
             dataBinder = registry.getDataBinder();
             requestAttributeBinder = registry.getRequestAttributeBinder();
-            controllerDefinitionFactory = registry.getControllerDefinitionFactory();
             validator = registry.getValidator();
+            servletMonitor = registry.getServletMonitor();
         }
+        servletMonitor.servletInitialized(this);
     }
 
     private String initParam(String key, String defaultValue) {
@@ -194,6 +195,7 @@
             }
             requestAttributeBinder.bind(request, controllerDefinition.getController());
         } catch (WaffleException e) {      
+            servletMonitor.servletServiceFailed(e);
             errorsContext.addErrorMessage(new GlobalErrorMessage(e.getMessage(), e));
             view = buildErrorsView(request);
         }
@@ -282,4 +284,30 @@
         return buildView(new ControllerDefinition(errorsView, null, null));
     }
 
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("[WaffleServlet ");
+        sb.append(" viewPrefix=");
+        sb.append(viewPrefix);
+        sb.append(", viewSuffix=");
+        sb.append(viewSuffix);
+        sb.append(", errorsView=");
+        sb.append(errorsView);
+        sb.append(", actionMethodExecutor=");
+        sb.append(actionMethodExecutor);
+        sb.append(", actionMethodResponseHandler=");
+        sb.append(actionMethodResponseHandler);
+        sb.append(", controllerDefinitionFactory=");
+        sb.append(controllerDefinitionFactory);
+        sb.append(", dataBinder=");
+        sb.append(dataBinder);
+        sb.append(", requestAttributeBinder=");
+        sb.append(requestAttributeBinder);
+        sb.append(", validator=");
+        sb.append(validator);
+        sb.append("]");
+        return sb.toString();
+    }
+
 }

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java (625 => 626)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java	2008-04-19 13:11:22 UTC (rev 625)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/servlet/WaffleServletTest.java	2008-04-19 13:46:15 UTC (rev 626)
@@ -290,7 +290,7 @@
 
     @SuppressWarnings({ "serial", "unchecked" })
     @Test
-    public void canHandleControllerNotFound() throws Exception {
+    public void canHandleSystemExceptions() throws Exception {
         // Mock ErrorsContext
         final ErrorsContext errorsContext = mockery.mock(ErrorsContext.class);
         final ContextContainer contextContainer = mockery.mock(ContextContainer.class);
@@ -354,6 +354,7 @@
         // Mock ServletMonitor
         final ServletMonitor servletMonitor = mockery.mock(ServletMonitor.class);
         mockery.checking(new Expectations() {{
+            allowing(servletMonitor).servletServiceFailed(with(any(WaffleException.class)));
             allowing(servletMonitor).servletServiceRequested(with(any(Map.class)));
         }});
         

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (625 => 626)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2008-04-19 13:11:22 UTC (rev 625)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java	2008-04-19 13:46:15 UTC (rev 626)
@@ -5,6 +5,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.servlet.Servlet;
 import javax.servlet.http.HttpServletResponse;
 
 import org.codehaus.waffle.action.ActionMethodResponse;
@@ -122,6 +123,12 @@
     public void actionMethodInvocationFailed(Exception cause) {
     }
     
+    public void servletInitialized(Servlet servlet) {
+    }
+    
+    public void servletServiceFailed(Exception cause) {
+    }
+
     public void servletServiceRequested(Map<String, List<String>> parameters) {
     }
 


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to