- Revision
- 641
- Author
- mauro
- Date
- 2008-04-21 06:41:23 -0500 (Mon, 21 Apr 2008)
Log Message
WAFFLE-74: Added cause to ErrorMessage.
Modified Paths
- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlDataBinder.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/BindErrorMessage.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/ErrorMessage.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/FieldErrorMessage.java
- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java
- trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java
Added Paths
Diff
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlDataBinder.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlDataBinder.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlDataBinder.java 2008-04-21 11:41:23 UTC (rev 641) @@ -60,14 +60,14 @@ bindMonitor.dataValueBoundToController(parameterName, dataValue, controller); } catch (OgnlException e) { String message = bindErrorMessageResolver.resolve(controller, parameterName, parameterValue); - BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, message); + BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, message, e); errorsContext.addErrorMessage(errorMessage); - bindMonitor.dataBindFailed(controller, errorMessage); + bindMonitor.dataBindFailed(controller, errorMessage, e); } catch (BindException e) { // by convention BindExceptions should provide the correct bind error message to display to the end-user - BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, e.getMessage()); + BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, e.getMessage(), e); errorsContext.addErrorMessage(errorMessage); - bindMonitor.dataBindFailed(controller, errorMessage); + bindMonitor.dataBindFailed(controller, errorMessage, e); } } }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/AbstractWritingMonitor.java 2008-04-21 11:41:23 UTC (rev 641) @@ -133,7 +133,7 @@ messages.put("viewDispatched", "View dispatched: {0}"); messages.put("attributeBindFailed", "Attribute bind failed from controller ''{0}'': {1}"); messages.put("attributeValueBoundFromController", "Attribute value ''{1}'' bound for name ''{0}'' from controller ''{2}''"); - messages.put("dataBindFailed", "Data bind failed to controller ''{0}'': {1}"); + messages.put("dataBindFailed", "Data bind failed to controller ''{0}'' with message {1}: {2}"); messages.put("dataValueBoundToController", "Data value ''{1}'' bound for name ''{0}'' to controller ''{2}''"); messages.put("registrarCreated", "Registrar ''{0}'' created with monitor ''{1}''"); messages.put("registrarNotFound", "Registrar ''{0}'' not found"); @@ -266,8 +266,8 @@ write("attributeValueBoundFromController", name, value, controller); } - public void dataBindFailed(Object controller, BindErrorMessage errorMessage){ - write("dataBindFailed", controller, errorMessage); + public void dataBindFailed(Object controller, BindErrorMessage errorMessage, Throwable cause){ + write("dataBindFailed", controller, errorMessage, cause); } public void dataValueBoundToController(String name, Object value, Object controller) {
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/monitor/BindMonitor.java 2008-04-21 11:41:23 UTC (rev 641) @@ -23,7 +23,7 @@ void attributeValueBoundFromController(String name, Object value, Object controller); - void dataBindFailed(Object controller, BindErrorMessage errorMessage); + void dataBindFailed(Object controller, BindErrorMessage errorMessage, Throwable cause); void dataValueBoundToController(String name, Object value, Object controller);
Added: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/AbstractErrorMessage.java (0 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/AbstractErrorMessage.java (rev 0) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/AbstractErrorMessage.java 2008-04-21 11:41:23 UTC (rev 641) @@ -0,0 +1,46 @@ +/***************************************************************************** + * Copyright (c) 2005-2008 Michael Ward * + * All rights reserved. * + * ------------------------------------------------------------------------- * + * The software in this package is published under the terms of the BSD * + * style license a copy of which has been included with this distribution in * + * the LICENSE.txt file. * + * * + * Original code by: Mauro Talevi * + *****************************************************************************/ +package org.codehaus.waffle.validation; + +import java.util.ArrayList; +import java.util.List; + +/** + * Abstract base class for all error messages. Handles the error cause and the retrieval of stack messages. + * + * @author Mauro Talevi + */ +public abstract class AbstractErrorMessage implements ErrorMessage { + + protected Throwable cause; + + protected AbstractErrorMessage(Throwable cause) { + this.cause = cause; + } + + public List<String> getStackMessages() { + List<String> messages = new ArrayList<String>(); + addStackMessages(cause, messages); + return messages; + } + + public Throwable getCause() { + return cause; + } + + void addStackMessages(Throwable cause, List<String> messages) { + if (cause != null) { + messages.add(cause.getMessage()); + addStackMessages(cause.getCause(), messages); + } + } + +}
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/BindErrorMessage.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/BindErrorMessage.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/BindErrorMessage.java 2008-04-21 11:41:23 UTC (rev 641) @@ -18,9 +18,13 @@ public class BindErrorMessage extends FieldErrorMessage { public BindErrorMessage(String name, String value, String message) { - super(name, value, message); + this(name, value, message, null); } + public BindErrorMessage(String name, String value, String message, Throwable cause) { + super(name, value, message, cause); + } + public Type getType() { return Type.BIND; } @@ -33,6 +37,8 @@ sb.append(getValue()); sb.append(", message="); sb.append(getMessage()); + sb.append(", stackMessages="); + sb.append(getStackMessages()); sb.append("]"); return sb.toString(); }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/ErrorMessage.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/ErrorMessage.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/ErrorMessage.java 2008-04-21 11:41:23 UTC (rev 641) @@ -10,6 +10,8 @@ *****************************************************************************/ package org.codehaus.waffle.validation; +import java.util.List; + /** * Represents a validation error message * @@ -20,8 +22,33 @@ enum Type { BIND, FIELD, GLOBAL } + /** + * Returns the type of error message + * + * @return The Type + */ Type getType(); + /** + * Returns the formatted message + * + * @return The message + */ String getMessage(); + + /** + * Returns the list of messages for the exception stack that cause the error, + * ie the list of Throwable.getMessage() from the stack. + * + * @return The List of stack messages + */ + List<String> getStackMessages(); + + /** + * Returns the throwable that caused the error + * + * @return The Throwable cause + */ + Throwable getCause(); }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/FieldErrorMessage.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/FieldErrorMessage.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/FieldErrorMessage.java 2008-04-21 11:41:23 UTC (rev 641) @@ -10,17 +10,24 @@ *****************************************************************************/ package org.codehaus.waffle.validation; + /** * ErrorMessage associated to field validations. * * @author Mauro Talevi */ -public class FieldErrorMessage implements ErrorMessage { +public class FieldErrorMessage extends AbstractErrorMessage { + private String name; private String value; private String message; public FieldErrorMessage(String name, String value, String message) { + this(name, value, message, null); + } + + public FieldErrorMessage(String name, String value, String message, Throwable cause) { + super(cause); this.name = name; this.value = value; this.message = message; @@ -50,6 +57,8 @@ sb.append(value); sb.append(", message="); sb.append(message); + sb.append(", stackMessages="); + sb.append(getStackMessages()); sb.append("]"); return sb.toString(); }
Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java (640 => 641)
--- trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/main/java/org/codehaus/waffle/validation/GlobalErrorMessage.java 2008-04-21 11:41:23 UTC (rev 641) @@ -10,8 +10,6 @@ *****************************************************************************/ package org.codehaus.waffle.validation; -import java.util.ArrayList; -import java.util.List; /** @@ -19,17 +17,16 @@ * * @author Mauro Talevi */ -public class GlobalErrorMessage implements ErrorMessage { +public class GlobalErrorMessage extends AbstractErrorMessage implements ErrorMessage { private String message; - private Throwable cause; - + public GlobalErrorMessage(String message) { this(message, null); } public GlobalErrorMessage(String message, Throwable cause) { + super(cause); this.message = message; - this.cause = cause; } public Type getType() { @@ -40,23 +37,6 @@ 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();
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java (640 => 641)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/testmodel/StubMonitor.java 2008-04-21 11:41:23 UTC (rev 641) @@ -66,7 +66,7 @@ public void viewDispatched(View view) { } - public void dataBindFailed(Object controller, BindErrorMessage errorMessage) { + public void dataBindFailed(Object controller, BindErrorMessage errorMessage, Throwable cause) { } public void attributeBindFailed(Object controller, Throwable cause) {
Modified: trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java (640 => 641)
--- trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java 2008-04-20 23:11:05 UTC (rev 640) +++ trunk/waffle-core/src/test/java/org/codehaus/waffle/validation/DefaultErrorsContextTest.java 2008-04-21 11:41:23 UTC (rev 641) @@ -39,10 +39,11 @@ } @Test - public void canRetrieveStackMessagesFromGlobalErrorMessage() { + public void canRetrieveStackMessagesFromErrorMessages() { 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()); + assertEquals(asList("1", "2", "3"), new BindErrorMessage("bind.error", "foobar", null, cause).getStackMessages()); + assertEquals(asList("1", "2", "3"), new FieldErrorMessage("field.error", "foobaz", null, cause).getStackMessages()); + assertEquals(asList("1", "2", "3"), new GlobalErrorMessage("global message", cause).getStackMessages()); } @Test
To unsubscribe from this list please visit:
