You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by fr...@apache.org on 2007/02/04 15:40:42 UTC

svn commit: r503415 [3/3] - in /tapestry/tapestry5/tapestry-core: branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/ branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/corelib/base/ branches/kt-20070204-IDE-support/src/...

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java Sun Feb  4 06:40:39 2007
@@ -14,14 +14,18 @@
 
 package org.apache.tapestry.translator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Translator;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.ioc.Messages;
 import org.apache.tapestry.ioc.internal.util.InternalUtils;
 
 /** A translator for type long. */
-public class LongTranslator implements Translator<Long>
+public class LongTranslator implements Translator<Long>, Serializable
 {
+    private static final long serialVersionUID = 1L;
+
     /**
      * Parses blank values to null, otherwise parses the client value to a long
      * 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/StringTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/StringTranslator.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/StringTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/StringTranslator.java Sun Feb  4 06:40:39 2007
@@ -14,12 +14,16 @@
 
 package org.apache.tapestry.translator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Translator;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.ioc.Messages;
 
-public class StringTranslator implements Translator<String>
+public class StringTranslator implements Translator<String>, Serializable
 {
+    private static final long serialVersionUID = 1L;
+
     /** Returns the client value (or the empty string, if the client value is null). */
     public String parseClient(String clientValue, Messages messages) throws ValidationException
     {

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Max.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Max.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Max.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Max.java Sun Feb  4 06:40:39 2007
@@ -14,17 +14,23 @@
 
 package org.apache.tapestry.validator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
 import org.apache.tapestry.ioc.MessageFormatter;
 
 /** Enforces a maximum integer value. */
-public class Max implements Validator<Long, Number>
+public class Max implements Validator<Number>, Serializable
 {
-    public Class<Long> getConstraintType()
+    private static final long serialVersionUID = 1L;
+
+    private long _max;
+    
+    public Max(long max)
     {
-        return Long.class;
+        _max = max;
     }
 
     public String getMessageKey()
@@ -32,20 +38,15 @@
         return "max-integer";
     }
 
-    public Class<Number> getValueType()
-    {
-        return Number.class;
-    }
-
     public boolean invokeIfBlank()
     {
         return false;
     }
 
-    public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
+    public void validate(Field field, MessageFormatter formatter, Number value)
             throws ValidationException
     {
-        if (value.longValue() > constraintValue)
-            throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+        if (value.longValue() > _max)
+            throw new ValidationException(formatter.format(_max, field.getLabel()));
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MaxLength.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MaxLength.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MaxLength.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MaxLength.java Sun Feb  4 06:40:39 2007
@@ -14,16 +14,22 @@
 
 package org.apache.tapestry.validator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
 import org.apache.tapestry.ioc.MessageFormatter;
 
-public final class MaxLength implements Validator<Integer, String>
+public final class MaxLength implements Validator<String>, Serializable
 {
-    public Class<Integer> getConstraintType()
+    private static final long serialVersionUID = 1L;
+
+    private int _maxLength;
+
+    public MaxLength(int maxLength)
     {
-        return Integer.class;
+        _maxLength = maxLength;
     }
 
     public String getMessageKey()
@@ -31,20 +37,15 @@
         return "maximum-string-length";
     }
 
-    public Class<String> getValueType()
-    {
-        return String.class;
-    }
-
     public boolean invokeIfBlank()
     {
         return false;
     }
 
-    public void validate(Field field, Integer constraintValue, MessageFormatter formatter, String value)
+    public void validate(Field field, MessageFormatter formatter, String value)
             throws ValidationException
     {
-        if (value.length() > constraintValue)
-            throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+        if (value.length() > _maxLength)
+            throw new ValidationException(formatter.format(_maxLength, field.getLabel()));
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Min.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Min.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Min.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Min.java Sun Feb  4 06:40:39 2007
@@ -14,17 +14,23 @@
 
 package org.apache.tapestry.validator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
 import org.apache.tapestry.ioc.MessageFormatter;
 
 /* A vaidator that enforces that a number is greater than some minimum integer value. */
-public class Min implements Validator<Long, Number>
+public class Min implements Validator<Number>, Serializable
 {
-    public Class<Long> getConstraintType()
+    private static final long serialVersionUID = 1L;
+    
+    private long _min;
+
+    public Min(long min)
     {
-        return Long.class;
+        _min = min;
     }
 
     public String getMessageKey()
@@ -32,20 +38,15 @@
         return "min-integer";
     }
 
-    public Class<Number> getValueType()
-    {
-        return Number.class;
-    }
-
     public boolean invokeIfBlank()
     {
         return false;
     }
 
-    public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
+    public void validate(Field field, MessageFormatter formatter, Number value)
             throws ValidationException
     {
-        if (value.longValue() < constraintValue)
-            throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+        if (value.longValue() < _min)
+            throw new ValidationException(formatter.format(_min, field.getLabel()));
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MinLength.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MinLength.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MinLength.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/MinLength.java Sun Feb  4 06:40:39 2007
@@ -14,6 +14,8 @@
 
 package org.apache.tapestry.validator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
@@ -22,23 +24,26 @@
 /**
  * Validates that a string value has a minimum length.
  */
-public final class MinLength implements Validator<Integer, String>
+public final class MinLength implements Validator<String>, Serializable
 {
+    private static final long serialVersionUID = 1L;
+
+    private int _minLength;
+
+    public MinLength(int minLength)
+    {
+        _minLength = minLength;
+    }
     public String getMessageKey()
     {
         return "minimum-string-length";
     }
 
-    public void validate(Field field, Integer constraintValue, MessageFormatter formatter,
+    public void validate(Field field, MessageFormatter formatter,
             String value) throws ValidationException
     {
-        if (value.length() < constraintValue)
-            throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
-    }
-
-    public Class<Integer> getConstraintType()
-    {
-        return Integer.class;
+        if (value.length() < _minLength)
+            throw new ValidationException(formatter.format(_minLength, field.getLabel()));
     }
 
     public boolean invokeIfBlank()
@@ -46,8 +51,4 @@
         return false;
     }
 
-    public Class<String> getValueType()
-    {
-        return String.class;
-    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Required.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Required.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Required.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/validator/Required.java Sun Feb  4 06:40:39 2007
@@ -14,6 +14,8 @@
 
 package org.apache.tapestry.validator;
 
+import java.io.Serializable;
+
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
@@ -23,32 +25,25 @@
  * A validator that enforces that the value is not null and not the empty string. This validator is
  * not configurable.
  */
-public final class Required implements Validator<Void, Object>
+public final class Required implements Validator<Object>, Serializable
 {
+    private static final long serialVersionUID = 1L;
+
     public String getMessageKey()
     {
         return "required";
     }
 
-    public void validate(Field field, Void constraintValue, MessageFormatter formatter, Object value)
+    public void validate(Field field, MessageFormatter formatter, Object value)
             throws ValidationException
     {
         if (value == null || value.toString().equals(""))
             throw new ValidationException(formatter.format(field.getLabel()));
     }
 
-    public Class<Void> getConstraintType()
-    {
-        return null;
-    }
-
     public boolean invokeIfBlank()
     {
         return true;
     }
 
-    public Class<Object> getValueType()
-    {
-        return Object.class;
-    }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties Sun Feb  4 06:40:39 2007
@@ -19,6 +19,7 @@
 minimum-string-length=You must provide at least %d characters for %s.
 maximum-string-length=You may provide at most %d characters for %s.
 min-integer=%2$s requires a value of at least %1$d. 
+max-integer=%2$s requires a value of at most %1$d. 
 
 # This is where the translator messages go.
 

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/SelectTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/SelectTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/SelectTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/SelectTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,129 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.integration.pagelevel;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.dom.Node;
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.test.pagelevel.PageTester;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class SelectTest extends Assert
+{
+    private PageTester _tester;
+
+    private Document _doc;
+
+    @Test
+    public void display()
+    {
+        Element select = _doc.getElementById("select1");
+        List<Node> children = select.getChildren();
+        assertEquals(children.size(), 3);
+        Element element = (Element) children.get(0);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "[1a]");
+        assertEquals(element.getAttribute("value"), "1a");
+        assertNull(element.getAttribute("selected"));
+        element = (Element) children.get(1);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "[0f]");
+        assertEquals(element.getAttribute("value"), "0f");
+        assertEquals(element.getAttribute("selected"), "selected");
+        element = (Element) children.get(2);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "[ff]");
+        assertEquals(element.getAttribute("value"), "ff");
+        assertNull(element.getAttribute("selected"));
+    }
+
+    @Test
+    public void submit_form()
+    {
+        Element form = _doc.getElementById("form1");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("select1", "0f");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v1").getChildText(), "15");
+    }
+
+    @Test
+    public void invalid()
+    {
+        Element form = _doc.getElementById("form1");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("select1", "ff");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertTrue(_doc.toString().contains("my value requires a value of at most 200."));
+    }
+
+    @Test
+    public void default_encoder_and_model_for_enum()
+    {
+        Element select = _doc.getElementById("select2");
+        List<Node> children = select.getChildren();
+        assertEquals(children.size(), 4);
+        Element element = (Element) children.get(0);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "East");
+        assertEquals(element.getAttribute("value"), "EAST");
+        assertNull(element.getAttribute("selected"));
+        element = (Element) children.get(1);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "South");
+        assertEquals(element.getAttribute("value"), "SOUTH");
+        assertNull(element.getAttribute("selected"));
+        element = (Element) children.get(2);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "West");
+        assertEquals(element.getAttribute("value"), "WEST");
+        assertNull(element.getAttribute("selected"));
+        element = (Element) children.get(3);
+        assertEquals(element.getName(), "option");
+        assertEquals(element.getChildText(), "North");
+        assertEquals(element.getAttribute("value"), "NORTH");
+        assertNull(element.getAttribute("selected"));
+        Element form = _doc.getElementById("form2");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("select2", "NORTH");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v2").getChildText(), "NORTH");
+    }
+
+    @BeforeMethod
+    public void before()
+    {
+        String appPackage = "org.apache.tapestry.integration.app2";
+        String appName = "";
+        _tester = new PageTester(appPackage, appName);
+        _doc = _tester.renderPage("TestPageForSelect");
+    }
+
+    @AfterMethod
+    public void after()
+    {
+        if (_tester != null)
+        {
+            _tester.shutdown();
+        }
+    }
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/SelectTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/TextFieldTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/TextFieldTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/TextFieldTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/TextFieldTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,113 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.integration.pagelevel;
+
+import java.util.Map;
+
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.dom.Element;
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.test.pagelevel.PageTester;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class TextFieldTest extends Assert
+{
+    private PageTester _tester;
+
+    private Document _doc;
+
+    @Test
+    public void submit_form()
+    {
+        Element form = _doc.getElementById("form1");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t1", "123");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v1").getChildText(), "123");
+    }
+
+    @Test
+    public void use_default_error_message()
+    {
+        Element form = _doc.getElementById("form1");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t1", "99");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertTrue(_doc.toString().contains("T1 requires a value of at least 100."));
+    }
+
+    @Test
+    public void override_error_message()
+    {
+        Element form = _doc.getElementById("form1");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t1", "201");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertTrue(_doc.toString().contains("Error: T1 is larger than 200."));
+    }
+
+    @Test
+    public void default_value_binding()
+    {
+        Element form = _doc.getElementById("form2");
+        assertEquals(_doc.getElementById("t2").getAttribute("value"), "12.3");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t2", "+0.45");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v2").getChildText(), "0.45");
+    }
+
+    @Test
+    public void default_translator()
+    {
+        Element form = _doc.getElementById("form3");
+        assertEquals(_doc.getElementById("t3").getAttribute("value"), "12345");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t3", "1000");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v3").getChildText(), "1000");
+    }
+
+    @Test
+    public void disabled()
+    {
+        Element form = _doc.getElementById("form4");
+        Map<String, String> fieldValues = CollectionFactory.newMap();
+        fieldValues.put("t4", "abc");
+        _doc = _tester.submitForm(form, fieldValues);
+        assertEquals(_doc.getElementById("v4").getChildText(), "hello");
+    }
+
+    @BeforeMethod
+    public void before()
+    {
+        String appPackage = "org.apache.tapestry.integration.app2";
+        String appName = "";
+        _tester = new PageTester(appPackage, appName);
+        _doc = _tester.renderPage("TestPageForTextField");
+    }
+
+    @AfterMethod
+    public void after()
+    {
+        if (_tester != null)
+        {
+            _tester.shutdown();
+        }
+    }
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/TextFieldTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java Sun Feb  4 06:40:39 2007
@@ -28,9 +28,9 @@
     @Test
     public void basics()
     {
-        List<OptionModel> options = Collections.emptyList();
+        List<OptionModel<String>> options = Collections.emptyList();
 
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options);
+        OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options);
 
         assertEquals(group.toString(), "OptionGroupModel[Label]");
         assertTrue(group.isDisabled());
@@ -41,10 +41,11 @@
     @Test
     public void map_contructor_retains_map()
     {
-        List<OptionModel> options = Collections.emptyList();
+        List<OptionModel<String>> options = Collections.emptyList();
         Map<String, String> attributes = Collections.emptyMap();
 
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, attributes);
+        OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options,
+                attributes);
 
         assertSame(group.getAttributes(), attributes);
     }
@@ -52,10 +53,10 @@
     @Test
     public void strings_contructor_builds_map()
     {
-        List<OptionModel> options = Collections.emptyList();
+        List<OptionModel<String>> options = Collections.emptyList();
 
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, "fred",
-                "flintstone", "barney", "rubble");
+        OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options,
+                "fred", "flintstone", "barney", "rubble");
 
         Map<String, String> attributes = group.getAttributes();
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java Sun Feb  4 06:40:39 2007
@@ -26,14 +26,14 @@
     @Test
     public void basics()
     {
-        OptionModel model = new OptionModelImpl("Label", false, this);
+        OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this);
 
         assertEquals(model.getLabel(), "Label");
         assertFalse(model.isDisabled());
         assertSame(model.getValue(), this);
         assertNull(model.getAttributes());
 
-        model = new OptionModelImpl("Fred", true, "fred");
+        model = new OptionModelImpl<String>("Fred", true, "fred");
 
         assertEquals(model.getLabel(), "Fred");
         assertTrue(model.isDisabled());
@@ -44,8 +44,8 @@
     @Test
     public void attributes_as_extra_parameters()
     {
-        OptionModel model = new OptionModelImpl("Label", false, this, "fred", "flintstone",
-                "barney", "rubble");
+        OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this, "fred",
+                "flintstone", "barney", "rubble");
 
         Map<String, String> attributes = model.getAttributes();
 
@@ -59,7 +59,7 @@
     {
         Map<String, String> attributes = Collections.emptyMap();
 
-        OptionModel model = new OptionModelImpl("Label", false, this, attributes);
+        OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this, attributes);
 
         assertSame(model.getAttributes(), attributes);
     }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java Sun Feb  4 06:40:39 2007
@@ -133,7 +133,7 @@
     @Test
     public void to_option_models()
     {
-        List<OptionModel> options = TapestryUtils.toOptionModels("UK,USA,DE=Germany");
+        List<OptionModel<String>> options = TapestryUtils.toOptionModels("UK,USA,DE=Germany");
 
         assertEquals(options.size(), 3);
 
@@ -150,7 +150,7 @@
     @Test
     public void whitespace_around_terms_is_trimmed()
     {
-        List<OptionModel> options = TapestryUtils.toOptionModels(" UK , USA , DE=Germany ");
+        List<OptionModel<String>> options = TapestryUtils.toOptionModels(" UK , USA , DE=Germany ");
 
         assertEquals(options.size(), 3);
 

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/AnnotationValidatorGeneratorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/AnnotationValidatorGeneratorTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/AnnotationValidatorGeneratorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/AnnotationValidatorGeneratorTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,62 @@
+package org.apache.tapestry.internal.beaneditor;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tapestry.AnnotationProvider;
+import org.apache.tapestry.Validator;
+import org.apache.tapestry.beaneditor.LengthRange;
+import org.apache.tapestry.beaneditor.Required;
+import org.apache.tapestry.validator.MaxLength;
+import org.apache.tapestry.validator.MinLength;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class AnnotationValidatorGeneratorTest extends Assert
+{
+    @LengthRange(minLength = 5, maxLength = 10)
+    @Required
+    public void setFoo(String foo)
+    {
+
+    }
+
+    @Test
+    public void generate()
+    {
+
+        final AnnotationProvider provider = new AnnotationProvider()
+        {
+
+            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+            {
+                try
+                {
+                    Class<AnnotationValidatorGeneratorTest> clazz = AnnotationValidatorGeneratorTest.class;
+                    Method method = clazz.getMethod("setFoo", new Class[]
+                    { String.class });
+                    return method.getAnnotation(annotationClass);
+
+                }
+                catch (Exception ex)
+                {
+                    throw new RuntimeException(ex);
+                }
+            }
+
+        };
+        LengthRangeValidateAnnotationWorker worker1 = new LengthRangeValidateAnnotationWorker();
+        RequiredValidateAnnotationWorker worker2 = new RequiredValidateAnnotationWorker();
+        AnnotationValidatorGenerator generator = new AnnotationValidatorGenerator(Arrays.asList(
+                worker1,
+                worker2));
+        List<? extends Validator> validators = generator.buildValidators(Object.class, provider);
+        assertEquals(validators.size(), 3);
+        assertTrue(validators.get(0) instanceof MinLength);
+        assertTrue(validators.get(1) instanceof MaxLength);
+        assertTrue(validators.get(2) instanceof org.apache.tapestry.validator.Required);
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/AnnotationValidatorGeneratorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,111 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.beaneditor;
+
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tapestry.AnnotationProvider;
+import org.apache.tapestry.Validator;
+import org.apache.tapestry.internal.services.CompoundalidatorGenerator;
+import org.apache.tapestry.services.ValidatorGenerator;
+import org.apache.tapestry.validator.Max;
+import org.apache.tapestry.validator.Min;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class CompoundValidatorGeneratorTest extends Assert
+{
+    @Test
+    public void no_validator()
+    {
+        final AnnotationProvider provider = new AnnotationProvider()
+        {
+
+            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+            {
+                return null;
+            }
+
+        };
+        ValidatorGenerator g1 = new ValidatorGenerator()
+        {
+
+            public List<? extends Validator> buildValidators(Class propertyType,
+                    AnnotationProvider annotationProvider)
+            {
+                assertSame(provider, annotationProvider);
+                return null;
+            }
+
+        };
+        ValidatorGenerator g2 = new ValidatorGenerator()
+        {
+
+            public List<? extends Validator> buildValidators(Class propertyType,
+                    AnnotationProvider annotationProvider)
+            {
+                assertSame(provider, annotationProvider);
+                return null;
+            }
+
+        };
+        List<ValidatorGenerator> generators = Arrays.asList(g1, g2);
+        ValidatorGenerator gen = new CompoundalidatorGenerator(generators);
+        assertNull(gen.buildValidators(Object.class, provider));
+    }
+
+    @Test
+    public void two_validators()
+    {
+        final AnnotationProvider provider = new AnnotationProvider()
+        {
+
+            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+            {
+                return null;
+            }
+
+        };
+        ValidatorGenerator g1 = new ValidatorGenerator()
+        {
+
+            public List<? extends Validator> buildValidators(Class propertyType,
+                    AnnotationProvider annotationProvider)
+            {
+                assertSame(provider, annotationProvider);
+                return Arrays.asList(new Min(10));
+            }
+
+        };
+        ValidatorGenerator g2 = new ValidatorGenerator()
+        {
+
+            public List<? extends Validator> buildValidators(Class propertyType,
+                    AnnotationProvider annotationProvider)
+            {
+                assertSame(provider, annotationProvider);
+                return Arrays.asList(new Max(12));
+            }
+
+        };
+        List<ValidatorGenerator> generators = Arrays.asList(g1, g2);
+        ValidatorGenerator gen = new CompoundalidatorGenerator(generators);
+        List<? extends Validator> validators = gen.buildValidators(Object.class, provider);
+        assertEquals(validators.size(), 2);
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java Sun Feb  4 06:40:39 2007
@@ -16,9 +16,12 @@
 
 import org.apache.tapestry.Field;
 import org.apache.tapestry.FieldValidator;
+import org.apache.tapestry.ValidationException;
 import org.apache.tapestry.Validator;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.apache.tapestry.ioc.MessageFormatter;
+import org.apache.tapestry.validator.Max;
+import org.apache.tapestry.validator.Min;
 import org.testng.annotations.Test;
 
 /**
@@ -26,83 +29,200 @@
  */
 public class FieldValidatorImplTest extends InternalBaseTestCase
 {
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings("serial")
     @Test
     public void null_value_skipped() throws Exception
     {
-        Field field = newField();
-        MessageFormatter formatter = newMessageFormatter();
-        Validator validator = newValidator();
+        Field field = null;
+        FieldValidatorMessages messages = new FieldValidatorMessages()
+        {
+            public MessageFormatter get(Field field, Validator validator)
+            {
+                return null;
+            }
+
+        };
+        Validator<Object> validator = new NoOpValidator<Object>()
+        {
+
+            @Override
+            public void validate(Field field, MessageFormatter formatter, Object value)
+                    throws ValidationException
+            {
+                fail();
+            }
+        };
 
-        train_invokeIfBlank(validator, false);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+        FieldValidator<Object> fv = new FieldValidatorImpl<Object>(field, messages, validator);
 
         fv.validate(null);
-
-        verify();
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings("serial")
     @Test
     public void blank_value_skipped() throws Exception
     {
-        Field field = newField();
-        MessageFormatter formatter = newMessageFormatter();
-        Validator validator = newValidator();
-
-        train_invokeIfBlank(validator, false);
-
-        replay();
+        Field field = null;
+        FieldValidatorMessages messages = new FieldValidatorMessages()
+        {
+            public MessageFormatter get(Field field, Validator validator)
+            {
+                return null;
+            }
+
+        };
+        Validator<Object> validator = new NoOpValidator<Object>()
+        {
+
+            @Override
+            public void validate(Field field, MessageFormatter formatter, Object value)
+                    throws ValidationException
+            {
+                fail();
+            }
+        };
 
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+        FieldValidator<Object> fv = new FieldValidatorImpl<Object>(field, messages, validator);
 
         fv.validate("");
 
-        verify();
     }
 
-    @SuppressWarnings("unchecked")
     @Test
-    public void nonmatching_value_type_skipped() throws Exception
+    public void single_validator() throws Exception
     {
-        Field field = newField();
-        MessageFormatter formatter = newMessageFormatter();
-        Validator validator = newValidator();
-        Integer value = 15;
-
-        train_invokeIfBlank(validator, true);
-        train_getValueType(validator, String.class);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
-
-        fv.validate(value);
+        final Field field = new NoOpField()
+        {
 
-        verify();
+            @Override
+            public String getLabel()
+            {
+                return "foo";
+            }
+
+        };
+        final Min min = new Min(10);
+        FieldValidatorMessages messages = new FieldValidatorMessages()
+        {
+            public MessageFormatter get(Field field2, Validator validator)
+            {
+                assertSame(field2, field);
+                assertSame(validator, min);
+                return new MessageFormatter()
+                {
+
+                    public String format(Object... args)
+                    {
+                        return String.format("%2$s must be at least %1$s", args);
+                    }
+
+                };
+            }
+
+        };
+        FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages, min);
+        fv.validate(10);
+        fv.validate(11);
+        try
+        {
+            fv.validate(9);
+            unreachable();
+        }
+        catch (ValidationException ex)
+        {
+            assertEquals(ex.getMessage(), "foo must be at least 10");
+        }
     }
 
-    @SuppressWarnings("unchecked")
     @Test
-    public void value_type_check_skipped_for_null_values() throws Exception
+    public void two_validators() throws Exception
     {
-        Field field = newField();
-        MessageFormatter formatter = newMessageFormatter();
-        Validator validator = newValidator();
+        final Field field = new NoOpField()
+        {
 
-        train_invokeIfBlank(validator, true);
-
-        validator.validate(field, null, formatter, null);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+            @Override
+            public String getLabel()
+            {
+                return "foo";
+            }
+
+        };
+        final Min min = new Min(10);
+        final Max max = new Max(12);
+        FieldValidatorMessages messages = new FieldValidatorMessages()
+        {
+            public MessageFormatter get(Field field2, Validator validator)
+            {
+                assertSame(field2, field);
+                if (validator == min)
+                {
+                    return null;
+                }
+                return validator == max ? new MessageFormatter()
+                {
+
+                    public String format(Object... args)
+                    {
+                        return String.format("%2$s must be at most %1$s", args);
+                    }
+
+                } : null;
+            }
+
+        };
+        FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages, min, max);
+        fv.validate(10);
+        fv.validate(11);
+        fv.validate(12);
+        try
+        {
+            fv.validate(13);
+            unreachable();
+        }
+        catch (ValidationException ex)
+        {
+            assertEquals(ex.getMessage(), "foo must be at most 12");
+        }
+        FieldValidator<Number> fv2 = new FieldValidatorImpl<Number>(field, messages, max, min);
+        fv2.validate(10);
+        fv2.validate(11);
+        fv2.validate(12);
+        try
+        {
+            fv2.validate(13);
+            unreachable();
+        }
+        catch (ValidationException ex)
+        {
+            assertEquals(ex.getMessage(), "foo must be at most 12");
+        }
+    }
 
-        fv.validate(null);
+    @Test
+    public void null_validators() throws Exception
+    {
+        final Field field = new NoOpField()
+        {
 
-        verify();
+            @Override
+            public String getLabel()
+            {
+                return "foo";
+            }
+
+        };
+        FieldValidatorMessages messages = new FieldValidatorMessages()
+        {
+            public MessageFormatter get(Field field2, Validator validator)
+            {
+                return null;
+            }
+
+        };
+        FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages,
+                (Validator<? super Number>[]) null);
+        fv.validate(10);
+        fv.validate(11);
     }
+
 }

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorMessagesImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorMessagesImplTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorMessagesImplTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorMessagesImplTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,99 @@
+package org.apache.tapestry.internal.services;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.Field;
+import org.apache.tapestry.Validator;
+import org.apache.tapestry.ioc.MessageFormatter;
+import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry.services.ValidationMessagesSource;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class FieldValidatorMessagesImplTest extends Assert
+{
+    @SuppressWarnings("serial")
+    private static class MyValidator1<T> extends NoOpValidator<T>
+    {
+        @Override
+        public String getMessageKey()
+        {
+            return "k1";
+        }
+
+    }
+
+    @SuppressWarnings("serial")
+    private static class MyValidator2<T> extends NoOpValidator<T>
+    {
+        @Override
+        public String getMessageKey()
+        {
+            return "k2";
+        }
+
+    }
+
+    @Test
+    public void global_and_override()
+    {
+        final ComponentResources resources = new NoOpComponentResources()
+        {
+
+            @Override
+            public Locale getLocale()
+            {
+                return Locale.FRENCH;
+            }
+
+            @Override
+            public String getId()
+            {
+                return "id1";
+            }
+
+            @Override
+            public Messages getContainerMessages()
+            {
+                Map<String, String> map = CollectionFactory.newMap();
+                map.put("id1-k2", "overriding: %s %s");
+                return new MapMessages(map);
+            }
+
+        };
+        Field field = new NoOpFieldComponent()
+        {
+
+            @Override
+            public ComponentResources getComponentResources()
+            {
+                return resources;
+            }
+
+        };
+        ValidationMessagesSource messageSources = new ValidationMessagesSource()
+        {
+
+            public Messages getValidationMessages(Locale locale)
+            {
+                assertEquals(locale, Locale.FRENCH);
+                Map<String, String> map = CollectionFactory.newMap();
+                map.put("k1", "abc %s def %s");
+                map.put("k2", "123 %s 456 %s");
+                return new MapMessages(map);
+            }
+
+        };
+        ;
+        FieldValidatorMessages messages = new FieldValidatorMessagesImpl(messageSources);
+        Validator<Object> validator1 = new MyValidator1<Object>();
+        MessageFormatter formatter = messages.get(field, validator1);
+        assertEquals(formatter.format("x", "y"), "abc x def y");
+        Validator<Object> validator2 = new MyValidator2<Object>();
+        formatter = messages.get(field, validator2);
+        assertEquals(formatter.format("x", "y"), "overriding: x y");
+    }
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FieldValidatorMessagesImplTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FormPersistWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FormPersistWorkerTest.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FormPersistWorkerTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FormPersistWorkerTest.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,80 @@
+package org.apache.tapestry.internal.services;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tapestry.annotations.FormPersist;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.MethodSignature;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class FormPersistWorkerTest extends Assert
+{
+    private boolean called;
+
+    @Test
+    public void transform()
+    {
+        FormPersistWorker worker = new FormPersistWorker();
+        ClassTransformation transformation = new NoOpClassTransformation()
+        {
+
+            @Override
+            public List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass)
+            {
+                assertSame(annotationClass, FormPersist.class);
+                return Arrays.asList("f1", "f2", "_f3");
+            }
+
+            @Override
+            public void extendMethod(MethodSignature methodSignature, String methodBody)
+            {
+                assertEquals(methodSignature.getModifiers(), Modifier.PROTECTED);
+                assertEquals(methodSignature.getReturnType(), "void");
+                assertEquals(methodSignature.getMethodName(), "collectFormPersistPropNames");
+                assertEquals(methodSignature.getParameterTypes(), new String[]
+                { "java.util.List" });
+                assertEquals(methodBody, "$1.add(\"f1\");" + "$1.add(\"f2\");" + "$1.add(\"f3\");");
+                called = true;
+            }
+
+        };
+        worker.transform(transformation, null);
+        assertTrue(called);
+    }
+
+    @Test
+    public void no_such_field()
+    {
+        FormPersistWorker worker = new FormPersistWorker();
+        ClassTransformation transformation = new NoOpClassTransformation()
+        {
+
+            @Override
+            public List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass)
+            {
+                assertSame(annotationClass, FormPersist.class);
+                return Arrays.asList();
+            }
+
+            @Override
+            public void extendMethod(MethodSignature methodSignature, String methodBody)
+            {
+                called = true;
+            }
+
+        };
+        worker.transform(transformation, null);
+        assertFalse(called);
+    }
+    
+    @BeforeMethod
+    void before()
+    {
+        called = false;
+    }
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/FormPersistWorkerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpClassTransformation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpClassTransformation.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpClassTransformation.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpClassTransformation.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,155 @@
+package org.apache.tapestry.internal.services;
+
+import java.lang.annotation.Annotation;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.FieldFilter;
+import org.apache.tapestry.services.MethodFilter;
+import org.apache.tapestry.services.MethodSignature;
+
+public class NoOpClassTransformation implements ClassTransformation
+{
+
+    public String getClassName()
+    {
+        return null;
+    }
+
+    public String newMemberName(String suggested)
+    {
+        return null;
+    }
+
+    public List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass)
+    {
+        return null;
+    }
+
+    public List<String> findFieldsOfType(String type)
+    {
+        return null;
+    }
+
+    public List<MethodSignature> findMethodsWithAnnotation(Class<? extends Annotation> annotationClass)
+    {
+        return null;
+    }
+
+    public List<MethodSignature> findMethods(MethodFilter filter)
+    {
+        return null;
+    }
+
+    public List<String> findFields(FieldFilter filter)
+    {
+        return null;
+    }
+
+    public <T extends Annotation> T getFieldAnnotation(String fieldName, Class<T> annotationClass)
+    {
+        return null;
+    }
+
+    public <T extends Annotation> T getMethodAnnotation(MethodSignature method, Class<T> annotationClass)
+    {
+        return null;
+    }
+
+    public void claimField(String fieldName, Object tag)
+    {
+        
+    }
+
+    public void makeReadOnly(String fieldName)
+    {
+        
+    }
+
+    public List<String> findUnclaimedFields()
+    {
+        return null;
+    }
+
+    public String getFieldType(String fieldName)
+    {
+        return null;
+    }
+
+    public String addField(int modifiers, String type, String suggestedName)
+    {
+        return null;
+    }
+
+    public String addInjectedField(Class type, String suggestedName, Object value)
+    {
+        return null;
+    }
+
+    public void injectField(String fieldName, Object value)
+    {
+        
+    }
+
+    public void addImplementedInterface(Class interfaceClass)
+    {
+        
+    }
+
+    public void extendMethod(MethodSignature methodSignature, String methodBody)
+    {
+        
+    }
+
+    public String getResourcesFieldName()
+    {
+        return null;
+    }
+
+    public void addMethod(MethodSignature signature, String methodBody)
+    {
+        
+    }
+
+    public void addToConstructor(String statement)
+    {
+        
+    }
+
+    public void replaceReadAccess(String fieldName, String methodName)
+    {
+        
+    }
+
+    public void replaceWriteAccess(String fieldName, String methodName)
+    {
+        
+    }
+
+    public void removeField(String fieldName)
+    {
+        
+    }
+
+    public Class toClass(String type)
+    {
+        return null;
+    }
+
+    public Log getLog()
+    {
+        return null;
+    }
+
+    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+    {
+        return null;
+    }
+
+    public List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass, boolean searchAncestors)
+    {
+        return null;
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpClassTransformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpComponentResources.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpComponentResources.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpComponentResources.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpComponentResources.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,134 @@
+package org.apache.tapestry.internal.services;
+
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.tapestry.AnnotationProvider;
+import org.apache.tapestry.Block;
+import org.apache.tapestry.ComponentEventHandler;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.Link;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.model.ComponentModel;
+import org.apache.tapestry.runtime.Component;
+
+public class NoOpComponentResources implements ComponentResources
+{
+
+    public ComponentModel getComponentModel()
+    {
+        return null;
+    }
+
+    public Component getComponent()
+    {
+        return null;
+    }
+
+    public Component getContainer()
+    {
+        return null;
+    }
+
+    public ComponentResources getContainerResources()
+    {
+        return null;
+    }
+
+    public Messages getContainerMessages()
+    {
+        return null;
+    }
+
+    public Component getPage()
+    {
+        return null;
+    }
+
+    public Component getEmbeddedComponent(String embeddedId)
+    {
+        return null;
+    }
+
+    public boolean isBound(String parameterName)
+    {
+        return false;
+    }
+
+    public void renderInformalParameters(MarkupWriter writer)
+    {
+
+    }
+
+    public Messages getMessages()
+    {
+        return null;
+    }
+
+    public Class getBoundType(String parameterName)
+    {
+        return null;
+    }
+
+    public AnnotationProvider getAnnotationProvider(String parameterName)
+    {
+        return null;
+    }
+
+    public String getId()
+    {
+        return null;
+    }
+
+    public String getNestedId()
+    {
+        return null;
+    }
+
+    public Link createActionLink(String action, boolean forForm, Object... context)
+    {
+        return null;
+    }
+
+    public Link createPageLink(String pageName)
+    {
+        return null;
+    }
+
+    public String getCompleteId()
+    {
+        return null;
+    }
+
+    public boolean triggerEvent(String eventType, Object[] context, ComponentEventHandler handler)
+    {
+        return false;
+    }
+
+    public boolean isRendering()
+    {
+        return false;
+    }
+
+    public Log getLog()
+    {
+        return null;
+    }
+
+    public Locale getLocale()
+    {
+        return null;
+    }
+
+    public String getElementName()
+    {
+        return null;
+    }
+
+    public Block getBlock(String blockId)
+    {
+        return null;
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpComponentResources.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpField.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpField.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpField.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,28 @@
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.Field;
+
+public class NoOpField implements Field
+{
+
+    public String getElementName()
+    {
+        return null;
+    }
+
+    public String getClientId()
+    {
+        return null;
+    }
+
+    public String getLabel()
+    {
+        return null;
+    }
+
+    public boolean isDisabled()
+    {
+        return false;
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpField.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpFieldComponent.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpFieldComponent.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpFieldComponent.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpFieldComponent.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,83 @@
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.runtime.Component;
+import org.apache.tapestry.runtime.ComponentEvent;
+import org.apache.tapestry.runtime.Event;
+
+public class NoOpFieldComponent extends NoOpField implements Component
+{
+
+    public void postRenderCleanup()
+    {
+        
+    }
+
+    public void setupRender(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void beginRender(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void beforeRenderTemplate(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void afterRenderTemplate(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void beforeRenderBody(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void afterRenderBody(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void afterRender(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public void cleanupRender(MarkupWriter writer, Event event)
+    {
+        
+    }
+
+    public boolean handleComponentEvent(ComponentEvent event)
+    {
+        return false;
+    }
+
+    public ComponentResources getComponentResources()
+    {
+        return null;
+    }
+
+    public void containingPageDidLoad()
+    {
+        
+    }
+
+    public void containingPageDidDetach()
+    {
+        
+    }
+
+    public void containingPageDidAttach()
+    {
+        
+    }
+
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpFieldComponent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpValidator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpValidator.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpValidator.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpValidator.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,30 @@
+package org.apache.tapestry.internal.services;
+
+import java.io.Serializable;
+
+import org.apache.tapestry.Field;
+import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.Validator;
+import org.apache.tapestry.ioc.MessageFormatter;
+
+public class NoOpValidator<T> implements Validator<T>, Serializable
+{
+    private static final long serialVersionUID = 1L;
+
+    public String getMessageKey()
+    {
+        return null;
+    }
+
+    public void validate(Field field, MessageFormatter formatter, T value)
+            throws ValidationException
+    {
+        
+    }
+
+    public boolean invokeIfBlank()
+    {
+        return false;
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/NoOpValidator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/NoOpBindingSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/NoOpBindingSource.java?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/NoOpBindingSource.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/NoOpBindingSource.java Sun Feb  4 06:40:39 2007
@@ -0,0 +1,20 @@
+package org.apache.tapestry.services;
+
+import org.apache.tapestry.Binding;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.ioc.Location;
+
+public class NoOpBindingSource implements BindingSource
+{
+
+    public Binding newBinding(String description, ComponentResources container, ComponentResources component, String defaultPrefix, String expression, Location location)
+    {
+        return null;
+    }
+
+    public Binding newBinding(String description, ComponentResources container, String expression)
+    {
+        return null;
+    }
+
+}

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/services/NoOpBindingSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MaxLengthTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MaxLengthTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MaxLengthTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MaxLengthTest.java Sun Feb  4 06:40:39 2007
@@ -16,6 +16,7 @@
 
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.internal.services.NoOpField;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.apache.tapestry.ioc.MessageFormatter;
 import org.testng.annotations.Test;
@@ -31,9 +32,9 @@
 
         replay();
 
-        MaxLength validator = new MaxLength();
+        MaxLength validator = new MaxLength(value.length());
 
-        validator.validate(field, value.length(), formatter, value);
+        validator.validate(field, formatter, value);
 
         verify();
     }
@@ -41,29 +42,35 @@
     @Test
     public void long_value() throws Exception
     {
-        String label = "My Field";
-        Field field = newFieldWithLabel(label);
-        MessageFormatter formatter = newMessageFormatter();
-        String value = "Now the student has become the master.";
-        String message = "{message}";
-        Integer constraint = value.length() - 1;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        MaxLength validator = new MaxLength();
+        Field field = new NoOpField()
+        {
+        
+            @Override
+            public String getLabel()
+            {
+                return "foo";
+            }
+        
+        }; 
+        MessageFormatter formatter = new MessageFormatter()
+        {
+        
+            public String format(Object... args)
+            {
+                return String.format("aaa %1$s %2$s bbb", args);
+            }
+        
+        };
+        MaxLength validator = new MaxLength(5);
 
         try
         {
-            validator.validate(field, constraint, formatter, value);
+            validator.validate(field, formatter, "abcdef");
             unreachable();
         }
         catch (ValidationException ex)
         {
-            assertEquals(ex.getMessage(), message);
+            assertEquals(ex.getMessage(), "aaa 5 foo bbb");
         }
-
-        verify();
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MinLengthTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MinLengthTest.java?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MinLengthTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/validator/MinLengthTest.java Sun Feb  4 06:40:39 2007
@@ -16,6 +16,7 @@
 
 import org.apache.tapestry.Field;
 import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.internal.services.NoOpField;
 import org.apache.tapestry.internal.test.InternalBaseTestCase;
 import org.apache.tapestry.ioc.MessageFormatter;
 import org.testng.annotations.Test;
@@ -32,9 +33,9 @@
 
         replay();
 
-        MinLength validator = new MinLength();
+        MinLength validator = new MinLength(value.length());
 
-        validator.validate(field, value.length(), formatter, value);
+        validator.validate(field, formatter, value);
 
         verify();
     }
@@ -42,29 +43,35 @@
     @Test
     public void short_value() throws Exception
     {
-        String label = "My Field";
-        Field field = newFieldWithLabel(label);
-        MessageFormatter formatter = newMessageFormatter();
-        String value = "Now the student has become the master.";
-        String message = "{message}";
-        Integer constraint = value.length() + 1;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        MinLength validator = new MinLength();
+        Field field = new NoOpField()
+        {
+        
+            @Override
+            public String getLabel()
+            {
+                return "foo";
+            }
+        
+        }; 
+        MessageFormatter formatter = new MessageFormatter()
+        {
+        
+            public String format(Object... args)
+            {
+                return String.format("aaa %1$s %2$s bbb", args);
+            }
+        
+        };
+        MinLength validator = new MinLength(5);
 
         try
         {
-            validator.validate(field, constraint, formatter, value);
+            validator.validate(field, formatter, "abcd");
             unreachable();
         }
         catch (ValidationException ex)
         {
-            assertEquals(ex.getMessage(), message);
+            assertEquals(ex.getMessage(), "aaa 5 foo bbb");
         }
-
-        verify();
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/ValidForm.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/ValidForm.html?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/ValidForm.html (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/ValidForm.html Sun Feb  4 06:40:39 2007
@@ -8,17 +8,17 @@
         <t:comp type="Errors"/>
         
         <label t:type="Label"  for="email">This isn't used</label>: <input
-            t:type="TextField" t:id="email" value="incident.email" size="50" t:validate="required"/>
+            t:id="email" size="50"/>
         <br/>
-        <label t:type="Label"  for="message"/>: <textarea t:type="TextArea" t:id="message" t:label="Incident Message"
-            value="incident.message" cols="50" rows="10"> You can put text here, but it isn't used. </textarea>
+        <label t:type="Label"  for="message"/>: <textarea t:id="message"
+            cols="50" rows="10"> You can put text here, but it isn't used. </textarea>
         <br/>
-        <input t:type="Checkbox" t:id="urgent" value="incident.urgent"/>
+        <input t:id="urgent" />
         <label t:type="Label" for="urgent"/>
         <br/>
         
         <label t:type="Label" for="hours"/>:
-        <input t:type="TextField" t:id="hours" value="incident.hours" size="10" t:validate="required"/>
+        <input t:id="hours" size="10"/>
         
         <br/>
         

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForForm.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForForm.html?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForForm.html (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForForm.html Sun Feb  4 06:40:39 2007
@@ -1,6 +1,6 @@
 <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
 <p><t:comp id="form1" type="Form">
-	<t:comp type="TextField" id="t1" value="value" size="50"/>
+	<t:comp id="t1" size="50"/>
 </t:comp></p>
 <p>
 	You entered: ${value}.

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSelect.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSelect.html?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSelect.html (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSelect.html Sun Feb  4 06:40:39 2007
@@ -0,0 +1,21 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<p><form t:id="form1" >
+	<span t:id="errors"/> 
+	<select t:id="select1">
+		<option>a</option>
+		<option>b</option>
+	</select>
+</form></p>
+<p>
+	You entered: <span id="v1">${v1}</span>.
+</p>
+<p><form t:id="form2" >
+	<select t:id="select2">
+		<option>a</option>
+		<option>b</option>
+	</select>
+</form></p>
+<p>
+	You entered: <span id="v2">${v2}</span>.
+</p>
+</html>

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSelect.html
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.html?view=diff&rev=503415&r1=503414&r2=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.html (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.html Sun Feb  4 06:40:39 2007
@@ -1,12 +1,12 @@
 <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
 <p>
 <form t:id="form1">
-	<t:comp id="t1" type="TextField"/>
+	<t:comp id="t1"/>
 	<t:comp id="capitalize1"/>
 </form>	
 <form t:id="form2">
 	<t:comp id="capitalize2"/>
-	<t:comp id="t2" type="TextField"/>
+	<t:comp id="t2"/>
 </form></p>
 <input type="submit" id="orphanedSubmit"/>
 <p>

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.html?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.html (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.html Sun Feb  4 06:40:39 2007
@@ -0,0 +1,27 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<p><form t:id="form1" >
+	<span t:id="errors"/>
+	<input t:id="t1" />
+</form></p>
+<p>
+	You entered: <span id="v1">${v1}</span>.
+</p>
+<p><form t:id="form2" >
+	<input t:id="t2" />
+</form></p>
+<p>
+	You entered: <span id="v2">${t2}</span>.
+</p>
+<p><form t:id="form3" >
+	<input t:id="t3" />
+</form></p>
+<p>
+	You entered: <span id="v3">${v3}</span>.
+</p>
+<p><form t:id="form4" >
+	<input t:id="t4" />
+</form></p>
+<p>
+	You entered: <span id="v4">${v4}</span>.
+</p>
+</html>

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.properties?view=auto&rev=503415
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.properties (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.properties Sun Feb  4 06:40:39 2007
@@ -0,0 +1 @@
+t1-max-integer=Error: %2$s is larger than %1$d. 

Propchange: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForTextField.properties
------------------------------------------------------------------------------
    svn:eol-style = native