Title: [waffle-scm] [640] trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet: Added list of stack messages to global error message.

Diff

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

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java	2008-04-20 22:27:30 UTC (rev 639)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/servlet/WaffleServlet.java	2008-04-20 23:11:05 UTC (rev 640)
@@ -190,7 +190,7 @@
             } catch (ActionMethodInvocationException e) {
                 servletMonitor.actionMethodInvocationFailed(e);
                 errorsContext.addErrorMessage(new GlobalErrorMessage("Action method invocation failed for controller "
-                        + controllerDefinition + ": " + e.getMessage(), e));
+                        + controllerDefinition, e));
                 view = buildActionMethodFailureView(controllerDefinition);
             }
             requestAttributeBinder.bind(request, controllerDefinition.getController());

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java (639 => 640)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java	2008-04-20 22:27:30 UTC (rev 639)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java	2008-04-20 23:11:05 UTC (rev 640)
@@ -10,7 +10,8 @@
  *****************************************************************************/
 package org.codehaus.waffle.validation;
 
-import static java.util.Arrays.asList;
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
@@ -39,18 +40,32 @@
         return message;
     }
     
+    public List<String> getStackMessages(){
+        List<String> messages = new ArrayList<String>();
+        addStackMessages(cause, messages);
+        return messages;        
+    }
+
     public Throwable getCause(){
         return cause;
     }
+    
+    private void addStackMessages(Throwable cause, List<String> messages) {
+        if ( cause != null ){
+            messages.add(cause.getMessage());
+            addStackMessages(cause.getCause(), messages);
+        }
+    }
 
     @Override
     public String toString() {
         StringBuffer sb = new StringBuffer();
         sb.append("[GlobalErrorMessage message=");
         sb.append(message);
-        sb.append(", stackTrace=");
-        sb.append(asList(cause.getStackTrace()));
+        sb.append(", stackMessages=");
+        sb.append(getStackMessages());
         sb.append("]");
         return sb.toString();
     }
+
 }

Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java (639 => 640)

--- trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java	2008-04-20 22:27:30 UTC (rev 639)
+++ trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java	2008-04-20 23:11:05 UTC (rev 640)
@@ -1,18 +1,20 @@
 package org.codehaus.waffle.validation;
 
-import org.codehaus.waffle.Constants;
+import static java.util.Arrays.asList;
 import static org.codehaus.waffle.validation.ErrorMessage.Type.BIND;
 import static org.codehaus.waffle.validation.ErrorMessage.Type.FIELD;
 import static org.codehaus.waffle.validation.ErrorMessage.Type.GLOBAL;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import org.junit.Test;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.codehaus.waffle.Constants;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.junit.Test;
+
 /**
  * 
  * @author Michael Ward
@@ -35,6 +37,13 @@
         assertEquals(1, context.getErrorMessageCountOfType(GLOBAL));
         assertEquals(1, context.getErrorMessageCountForField(GLOBAL, "any.field.name"));
     }
+    
+    @Test
+    public void canRetrieveStackMessagesFromGlobalErrorMessage() {
+        Throwable cause = new Throwable("1", new Throwable("2", new Throwable("3")));
+        GlobalErrorMessage errorMessage = new GlobalErrorMessage("global message", cause);
+        assertEquals(asList("1", "2", "3"), errorMessage.getStackMessages());
+    }
 
     @Test
     public void canDetermineIfContextHasMessagesByType() {


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to