- Revision
- 424
- Author
- mauro
- Date
- 2007-11-25 04:35:56 -0600 (Sun, 25 Nov 2007)
Log Message
WAFFLE-39: Updated taglib functions to expose all ErrorsContext methods.
Modified Paths
- trunk/examples/simple-example/resources/automobile.jspx
- trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Evaluator.java
- trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Functions.java
- trunk/waffle-taglib/src/main/resources/META-INF/waffle.tld
- trunk/waffle-taglib/src/test/java/org/codehaus/waffle/taglib/FunctionsTest.java
Removed Paths
Diff
Deleted: trunk/examples/paranamer-example/resources/automobile.jspx (423 => 424)
--- trunk/examples/paranamer-example/resources/automobile.jspx 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/examples/paranamer-example/resources/automobile.jspx 2007-11-25 10:35:56 UTC (rev 424) @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<html xmlns="http://www.w3.org/1999/xhtml" - xmlns:jsp="http://java.sun.com/JSP/Page" - xmlns:waffle="http://waffle.codehaus.org" - xmlns:fn="http://java.sun.com/jsp/jstl/functions" - xmlns:c="http://java.sun.com/jsp/jstl/core"> - -<jsp:output doctype-root-element="html" - doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" - doctype-system="http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> -<jsp:directive.page contentType="text/html;charset=UTF-8"/> - -<head></head> - -<body> -<form action="" method="post"> - - <c:if test="${errors.errorMessageCount > 0}"> - <c:forEach var="error" items="${errors.allErrorMessages}"> - <div style="color:red"> - ${error.message} - </div> - </c:forEach> - </c:if> - - <table> - <tr> - <td>Make:</td> - <td> - <input type="text" value="${fn:escapeXml(make)}" name="make"/> - </td> - </tr> - <tr> - <td>Model:</td> - <td> - - <input type="text" value="${fn:escapeXml(model)}" name="model"/> - </td> - </tr> - - <c:out value="${waffle:findFieldErrors(errors,'speed')}"/> - - <tr> - <td>Top Speed:</td> - <td> - <input type="text" value="${fn:escapeXml(topSpeed)}" name="topSpeed"/> - </td> - </tr> - <tr> - <td>Speed:</td> - <td>${speed}</td> - </tr> - </table> - <br/> - <a href="" - <br/> - <a href="" - <br/><br/> - <input type="submit"/> -</form> -</body> - -</html> \ No newline at end of file
Modified: trunk/examples/simple-example/resources/automobile.jspx (423 => 424)
--- trunk/examples/simple-example/resources/automobile.jspx 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/examples/simple-example/resources/automobile.jspx 2007-11-25 10:35:56 UTC (rev 424) @@ -21,8 +21,12 @@ ${error.message} </div> </c:forEach> + <br/> Bind: <c:out value="${waffle:findErrors(errors, 'BIND')}"/> + <br/> Field: <c:out value="${waffle:findErrors(errors, 'FIELD')}"/> + <br/> Global: <c:out value="${waffle:findErrors(errors, 'GLOBAL')}"/> </c:if> + <table> <tr> <td>Make:</td> @@ -33,12 +37,11 @@ <tr> <td>Model:</td> <td> - <input type="text" value="${fn:escapeXml(model)}" name="model"/> </td> </tr> - <c:out value="${waffle:findFieldErrors(errors,'speed')}"/> + <c:out value="${waffle:findErrorsForField(errors, 'FIELD', 'speed')}"/> <tr> <td>Top Speed:</td>
Modified: trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Evaluator.java (423 => 424)
--- trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Evaluator.java 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Evaluator.java 2007-11-25 10:35:56 UTC (rev 424) @@ -12,23 +12,23 @@ */ public class Evaluator { + private static final String EMPTY = ""; + public static Object evaluate(String key, PageContext jspContext) throws ELException, IOException { ExpressionEvaluator evaluator = jspContext.getExpressionEvaluator(); String _expression_ = "${" + jspContext.getAttribute("name") + "}"; Object obj = evaluator.evaluate(_expression_, Object.class, jspContext.getVariableResolver(), null); - return obj == null ? "" : obj; + return obj == null ? EMPTY : obj; } - public static String getAttributes(Map attributes) { + public static String getAttributes(Map<String,String> attributes) { StringBuilder builder = new StringBuilder(); - // note: dont know why "Map.Entry entry : " does not work here (guilherme) - for (Object obj : attributes.entrySet()) { - Map.Entry entry = (Map.Entry) obj; + for ( String key : attributes.keySet() ){ builder.append(' ') - .append(entry.getKey()) - .append("=\"") - .append(entry.getValue()) - .append('\"'); + .append(key) + .append("=\"") + .append(attributes.get(key)) + .append('\"'); } return builder.toString(); }
Modified: trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Functions.java (423 => 424)
--- trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Functions.java 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/waffle-taglib/src/main/java/org/codehaus/waffle/taglib/Functions.java 2007-11-25 10:35:56 UTC (rev 424) @@ -1,20 +1,25 @@ package org.codehaus.waffle.taglib; +import java.util.Collections; import java.util.List; import java.util.Map; import org.codehaus.waffle.validation.ErrorMessage; import org.codehaus.waffle.validation.ErrorsContext; +import org.codehaus.waffle.validation.ErrorMessage.Type; +/** + * A collection of utility functions accessible in taglibs + * + * @author Guilherme Silveira + * @author Mauro Talevi + */ public class Functions { - public static String retrieveAttributes(Map<String, String> att) { - StringBuilder sb = new StringBuilder(" "); - for (String key : att.keySet()) { - sb.append(key) - .append("=\"") - .append(att.get(key)) - .append("\" "); + public static String retrieveAttributes(Map<String, String> attributes) { + StringBuilder sb = new StringBuilder(' '); + for (String key : attributes.keySet()) { + sb.append(key).append("=\"").append(attributes.get(key)).append("\" "); } return sb.toString(); } @@ -28,9 +33,26 @@ throw new RuntimeException(e); } } + + public static List<? extends ErrorMessage> findAllErrors(ErrorsContext errorsContext) { + return errorsContext.getAllErrorMessages(); + } - public static List<? extends ErrorMessage> findFieldErrors(ErrorsContext errorsContext, String fieldName) { - return errorsContext.getErrorMessagesForField(ErrorMessage.Type.FIELD, fieldName); + public static List<? extends ErrorMessage> findErrors(ErrorsContext errorsContext, String typeName) { + Type type = Enum.valueOf(ErrorMessage.Type.class, typeName); + return errorsContext.getErrorMessagesOfType(type); } + public static List<? extends ErrorMessage> findErrorsForField(ErrorsContext errorsContext, String typeName, String fieldName) { + Type type = Enum.valueOf(ErrorMessage.Type.class, typeName); + switch ( type ){ + case BIND: case FIELD: + return errorsContext.getErrorMessagesForField(type, fieldName); + case GLOBAL: + return errorsContext.getErrorMessagesOfType(type); + default: + return Collections.emptyList(); + } + } + }
Modified: trunk/waffle-taglib/src/main/resources/META-INF/waffle.tld (423 => 424)
--- trunk/waffle-taglib/src/main/resources/META-INF/waffle.tld 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/waffle-taglib/src/main/resources/META-INF/waffle.tld 2007-11-25 10:35:56 UTC (rev 424) @@ -23,14 +23,32 @@ </function> <function> - <description>Find field errors for the name passed</description> - <name>findFieldErrors</name> + <name>findAllErrors</name> + <description>Find all errors</description> <function-class>org.codehaus.waffle.taglib.Functions</function-class> <function-signature> - java.util.List findFieldErrors(org.codehaus.waffle.validation.ErrorsContext, java.lang.String) + java.util.List findAllErrors(org.codehaus.waffle.validation.ErrorsContext) </function-signature> </function> + <function> + <name>findErrors</name> + <description>Find errors of type (BIND, FIELD, GLOBAL)</description> + <function-class>org.codehaus.waffle.taglib.Functions</function-class> + <function-signature> + java.util.List findErrors(org.codehaus.waffle.validation.ErrorsContext, java.lang.String) + </function-signature> + </function> + + <function> + <name>findErrorsForField</name> + <description>Find errors of type (BIND, FIELD, GLOBAL) and field name</description> + <function-class>org.codehaus.waffle.taglib.Functions</function-class> + <function-signature> + java.util.List findErrorsForField(org.codehaus.waffle.validation.ErrorsContext, java.lang.String, java.lang.String) + </function-signature> + </function> + <!-- checkbox tag --> <tag> <name>checkbox</name>
Modified: trunk/waffle-taglib/src/test/java/org/codehaus/waffle/taglib/FunctionsTest.java (423 => 424)
--- trunk/waffle-taglib/src/test/java/org/codehaus/waffle/taglib/FunctionsTest.java 2007-11-25 08:59:06 UTC (rev 423) +++ trunk/waffle-taglib/src/test/java/org/codehaus/waffle/taglib/FunctionsTest.java 2007-11-25 10:35:56 UTC (rev 424) @@ -2,26 +2,32 @@ import static org.junit.Assert.assertEquals; -import java.util.List; - +import org.codehaus.waffle.validation.BindErrorMessage; import org.codehaus.waffle.validation.DefaultErrorsContext; -import org.codehaus.waffle.validation.ErrorMessage; import org.codehaus.waffle.validation.ErrorsContext; import org.codehaus.waffle.validation.FieldErrorMessage; +import org.codehaus.waffle.validation.GlobalErrorMessage; import org.junit.Test; public class FunctionsTest { - @SuppressWarnings("unchecked") @Test - public void canFindFieldErrors() { + public void canFindErrors() { ErrorsContext errorsContext = new DefaultErrorsContext(); - errorsContext.addErrorMessage(new FieldErrorMessage("name", "value", "message")); + errorsContext.addErrorMessage(new BindErrorMessage("bind", "value", "message bind")); + errorsContext.addErrorMessage(new FieldErrorMessage("field", "value", "message field")); + errorsContext.addErrorMessage(new GlobalErrorMessage("global")); - List<? extends ErrorMessage> messages = Functions.findFieldErrors(errorsContext, "name"); - assertEquals(1, messages.size()); + assertEquals(3, Functions.findAllErrors(errorsContext).size()); + assertEquals(1, Functions.findErrors(errorsContext, "BIND").size()); + assertEquals(1, Functions.findErrorsForField(errorsContext, "BIND", "bind").size()); + assertEquals(1, Functions.findErrors(errorsContext, "FIELD").size()); + assertEquals(1, Functions.findErrorsForField(errorsContext, "FIELD", "field").size()); + assertEquals(1, Functions.findErrors(errorsContext, "GLOBAL").size()); + assertEquals(1, Functions.findErrorsForField(errorsContext, "GLOBAL", "any").size()); - FieldErrorMessage fieldValidationMessage = (FieldErrorMessage) messages.get(0); - assertEquals("message", fieldValidationMessage.getMessage()); + assertEquals("message bind", ((BindErrorMessage) Functions.findErrorsForField(errorsContext, "BIND", "bind").get(0)).getMessage()); + assertEquals("message field", ((FieldErrorMessage) Functions.findErrorsForField(errorsContext, "FIELD", "field").get(0)).getMessage()); } + }
To unsubscribe from this list please visit:
