Title: [waffle-scm] [424] trunk/examples/simple-example/resources: WAFFLE-39: Updated taglib functions to expose all ErrorsContext methods.

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:

http://xircles.codehaus.org/manage_email

Reply via email to