Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java?rev=689238&r1=689237&r2=689238&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java
 Tue Aug 26 14:31:30 2008
@@ -17,16 +17,14 @@
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.corelib.internal.InternalMessages;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ValidationMessagesSource;
 import org.easymock.EasyMock;
+import static org.easymock.EasyMock.eq;
 import org.easymock.IAnswer;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.util.Locale;
-
 public class FieldValidationSupportImplTest extends InternalBaseTestCase
 {
     private TypeCoercer typeCoercer;
@@ -38,20 +36,19 @@
     }
 
 
-    @SuppressWarnings({ "unchecked" })
+    @SuppressWarnings({"unchecked"})
     @Test
     public void parse_client_via_event() throws ValidationException
     {
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
+        FieldTranslator translator = mockFieldTranslator();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         String clientValue = "abracadabra";
 
         IAnswer answer = new IAnswer()
         {
-            @SuppressWarnings({ "unchecked" })
+            @SuppressWarnings({"unchecked"})
             public Object answer() throws Throwable
             {
                 Object[] args = EasyMock.getCurrentArguments();
@@ -72,7 +69,7 @@
         replay();
 
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         Object actual = support.parseClient(clientValue, resources, 
translator, nullFieldStrategy);
 
@@ -84,11 +81,8 @@
     @Test
     public void 
parse_client_for_null_value_returns_null_and_bypasses_events_and_translator() 
throws Exception
     {
-        Messages messages = mockMessages();
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
-        Locale locale = Locale.GERMAN;
+        FieldTranslator translator = mockFieldTranslator();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         String clientValue = "";
@@ -97,15 +91,11 @@
 
         ignoreEvent(resources, FieldValidationSupportImpl.PARSE_CLIENT_EVENT, 
clientValue);
 
-        train_getLocale(resources, locale);
-
-        train_getValidationMessages(source, locale, messages);
-
-        expect(translator.parseClient(clientValue, messages)).andReturn("");
+        expect(translator.parse(clientValue)).andReturn("");
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         Object actual = support.parseClient(clientValue, resources, 
translator, nullFieldStrategy);
 
@@ -126,14 +116,13 @@
         
expect(nullFieldStrategy.replaceFromClient()).andReturn(value).atLeastOnce();
     }
 
-    @SuppressWarnings({ "ThrowableInstanceNeverThrown" })
+    @SuppressWarnings({"ThrowableInstanceNeverThrown"})
     @Test
     public void parse_client_event_handler_throws_validation_exception() 
throws Exception
     {
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
+        FieldTranslator translator = mockFieldTranslator();
         ValidationException ve = new ValidationException("Just didn't feel 
right.");
-        ValidationMessagesSource source = mockValidationMessagesSource();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         String clientValue = "abracadabra";
@@ -146,7 +135,7 @@
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         try
         {
@@ -163,14 +152,13 @@
         verify();
     }
 
-    @SuppressWarnings({ "ThrowableInstanceNeverThrown" })
+    @SuppressWarnings({"ThrowableInstanceNeverThrown"})
     @Test
     public void parse_client_event_handler_fails_with_other_exception() throws 
Exception
     {
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
+        FieldTranslator translator = mockFieldTranslator();
         RuntimeException re = new RuntimeException("Just didn't feel right.");
-        ValidationMessagesSource source = mockValidationMessagesSource();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         String clientValue = "abracadabra";
@@ -183,7 +171,7 @@
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         try
         {
@@ -203,26 +191,20 @@
     @Test
     public void parse_client_via_translator() throws ValidationException
     {
-        Messages messages = mockMessages();
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
+        FieldTranslator translator = mockFieldTranslator();
         ValidationMessagesSource source = mockValidationMessagesSource();
-        Locale locale = Locale.GERMAN;
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         String clientValue = "abracadabra";
 
         ignoreEvent(resources, FieldValidationSupportImpl.PARSE_CLIENT_EVENT, 
clientValue);
 
-        train_getLocale(resources, locale);
-
-        train_getValidationMessages(source, locale, messages);
-
-        expect(translator.parseClient(clientValue, 
messages)).andReturn("foobar");
+        expect(translator.parse(clientValue)).andReturn("foobar");
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         Object actual = support.parseClient(clientValue, resources, 
translator, nullFieldStrategy);
 
@@ -231,14 +213,13 @@
         verify();
     }
 
-    @SuppressWarnings({ "unchecked" })
+    @SuppressWarnings({"unchecked"})
     @Test
     public void to_client_via_translator()
     {
         Object value = new Integer(99);
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
+        FieldTranslator translator = mockFieldTranslator();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         expect(translator.getType()).andReturn(Integer.class);
@@ -246,14 +227,14 @@
         String clientValue = "abracadabra";
 
         
EasyMock.expect(resources.triggerEvent(EasyMock.eq(FieldValidationSupportImpl.TO_CLIENT_EVENT),
-                                               EasyMock.aryEq(new Object[] { 
value }),
+                                               EasyMock.aryEq(new Object[] 
{value}),
                                                
EasyMock.isA(ComponentEventCallback.class))).andReturn(false);
 
         expect(translator.toClient(value)).andReturn(clientValue);
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         String actual = support.toClient(value, resources, translator, 
nullFieldStrategy);
 
@@ -262,21 +243,20 @@
         verify();
     }
 
-    @SuppressWarnings({ "unchecked" })
+    @SuppressWarnings({"unchecked"})
     @Test
     public void to_client_via_event_handler() throws Exception
     {
         Object value = new Object();
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
+        FieldTranslator translator = mockFieldTranslator();
         NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
 
         final String clientValue = "abracadabra";
 
         IAnswer answer = new IAnswer()
         {
-            @SuppressWarnings({ "unchecked" })
+            @SuppressWarnings({"unchecked"})
             public Object answer() throws Throwable
             {
                 Object[] args = EasyMock.getCurrentArguments();
@@ -287,13 +267,13 @@
         };
 
         
EasyMock.expect(resources.triggerEvent(EasyMock.eq(FieldValidationSupportImpl.TO_CLIENT_EVENT),
-                                               EasyMock.aryEq(new Object[] { 
value }),
+                                               EasyMock.aryEq(new Object[] 
{value}),
                                                
EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
 
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, null);
+        FieldValidationSupport support = new FieldValidationSupportImpl(null);
 
         String actual = support.toClient(value, resources, translator, 
nullFieldStrategy);
 
@@ -302,17 +282,16 @@
         verify();
     }
 
-    @SuppressWarnings({ "unchecked" })
+    @SuppressWarnings({"unchecked"})
     public void to_client_via_event_handler_returns_non_string() throws 
Exception
     {
         Object value = new Object();
         ComponentResources resources = mockComponentResources();
-        Translator translator = mockTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
+        FieldTranslator translator = mockFieldTranslator();
 
         IAnswer answer = new IAnswer()
         {
-            @SuppressWarnings({ "unchecked" })
+            @SuppressWarnings({"unchecked"})
             public Object answer() throws Throwable
             {
                 Object[] args = EasyMock.getCurrentArguments();
@@ -325,13 +304,13 @@
         };
 
         
EasyMock.expect(resources.triggerEvent(EasyMock.eq(FieldValidationSupportImpl.TO_CLIENT_EVENT),
-                                               EasyMock.aryEq(new Object[] { 
value }),
+                                               EasyMock.aryEq(new Object[] 
{value}),
                                                
EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
 
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, null);
+        FieldValidationSupport support = new FieldValidationSupportImpl(null);
 
         try
         {
@@ -348,7 +327,7 @@
         verify();
     }
 
-    @SuppressWarnings({ "unchecked" })
+    @SuppressWarnings({"unchecked"})
     @Test
     public void event_triggered_after_delegate_invoked() throws Exception
     {
@@ -356,7 +335,6 @@
 
         ComponentResources resources = mockComponentResources();
         FieldValidator fv = mockFieldValidator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
 
         Object value = new Object();
 
@@ -365,25 +343,24 @@
         ComponentEventCallback handler = null;
 
         
expect(resources.triggerEvent(EasyMock.eq(FieldValidationSupportImpl.VALIDATE_EVENT),
-                                      EasyMock.aryEq(new Object[] { value }), 
EasyMock.eq(handler))).andReturn(true);
+                                      EasyMock.aryEq(new Object[] {value}), 
EasyMock.eq(handler))).andReturn(true);
 
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
         support.validate(value, resources, fv);
 
         verify();
     }
 
-    @SuppressWarnings({ "unchecked", "ThrowableInstanceNeverThrown" })
+    @SuppressWarnings({"unchecked", "ThrowableInstanceNeverThrown"})
     @Test
     public void event_trigger_throws_validation_exception() throws Exception
     {
         ComponentResources resources = mockComponentResources();
         FieldValidator fv = mockFieldValidator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
 
         Object value = new Object();
 
@@ -394,13 +371,13 @@
 
         fv.validate(value);
 
-        
expect(resources.triggerEvent(EasyMock.eq(FieldValidationSupportImpl.VALIDATE_EVENT),
-                                      EasyMock.aryEq(new Object[] { value }), 
EasyMock.eq(handler))).andThrow(re);
+        
expect(resources.triggerEvent(eq(FieldValidationSupportImpl.VALIDATE_EVENT),
+                                      EasyMock.aryEq(new Object[] {value}), 
eq(handler))).andThrow(re);
 
 
         replay();
 
-        FieldValidationSupport support = new 
FieldValidationSupportImpl(source, typeCoercer);
+        FieldValidationSupport support = new 
FieldValidationSupportImpl(typeCoercer);
 
 
         try

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java?rev=689238&r1=689237&r2=689238&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
 Tue Aug 26 14:31:30 2008
@@ -204,7 +204,7 @@
     {
         DocumentLinker linker = mockDocumentLinker();
 
-        linker.addScript("Tapestry.focus('foo');");
+        linker.addScript("$('foo').activate();");
 
         replay();
 
@@ -222,7 +222,7 @@
     {
         DocumentLinker linker = mockDocumentLinker();
 
-        linker.addScript("Tapestry.focus('foo');");
+        linker.addScript("$('foo').activate();");
 
         replay();
 
@@ -241,7 +241,7 @@
     {
         DocumentLinker linker = mockDocumentLinker();
 
-        linker.addScript("Tapestry.focus('bar');");
+        linker.addScript("$('bar').activate();");
 
         replay();
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java?rev=689238&r1=689237&r2=689238&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java
 Tue Aug 26 14:31:30 2008
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.Field;
 import org.apache.tapestry5.Translator;
 import org.apache.tapestry5.ValidationException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
@@ -24,9 +25,7 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Map;
+import java.util.Collection;
 
 public class TranslatorSourceImplTest extends InternalBaseTestCase
 {
@@ -45,11 +44,9 @@
     @Test
     public void found_translator_by_name()
     {
-        Translator translator = mockTranslator();
+        Translator translator = mockTranslator("mock", String.class);
 
-        train_getType(translator, String.class);
-
-        Map<String, Translator> configuration = 
Collections.singletonMap("mock", translator);
+        Collection<Translator> configuration = 
CollectionFactory.newList(translator);
 
         replay();
 
@@ -60,24 +57,13 @@
         verify();
     }
 
-    protected final void train_getType(Translator translator, Class type)
-    {
-        expect(translator.getType()).andReturn(type).atLeastOnce();
-    }
-
     @Test
     public void unknown_translator_is_failure()
     {
-        Translator fred = mockTranslator();
-        Translator barney = mockTranslator();
-
-        train_getType(fred, Long.class);
-        train_getType(barney, String.class);
+        Translator fred = mockTranslator("fred", String.class);
+        Translator barney = mockTranslator("barney", Long.class);
 
-        Map<String, Translator> configuration = CollectionFactory.newMap();
-
-        configuration.put("fred", fred);
-        configuration.put("barney", barney);
+        Collection<Translator> configuration = CollectionFactory.newList(fred, 
barney);
 
         replay();
 
@@ -94,14 +80,13 @@
                     ex.getMessage(),
                     "Unknown translator type 'wilma'.  Configured translators 
are barney, fred.");
         }
-
     }
 
 
     @DataProvider(name = "to_client_data")
     public Object[][] to_client_data()
     {
-        return new Object[][]{
+        return new Object[][] {
 
                 {Byte.class, (byte) 65, "65"},
 
@@ -116,7 +101,6 @@
                 {Short.class, (short) 95, "95"},
 
                 {Float.class, (float) -22.7, "-22.7"}
-
         };
     }
 
@@ -133,7 +117,7 @@
     @DataProvider(name = "parse_client_success_data")
     public Object[][] parse_client_success_data()
     {
-        return new Object[][]{
+        return new Object[][] {
 
                 {Byte.class, " 23 ", (byte) 23},
 
@@ -148,7 +132,6 @@
                 {String.class, " abcdef ", " abcdef "},
 
                 {Float.class, " 28.95 ", (float) 28.95},
-
         };
     }
 
@@ -157,7 +140,7 @@
     {
         Translator t = source.getByType(type);
 
-        Object actual = t.parseClient(input, 
messagesSource.getValidationMessages(Locale.ENGLISH));
+        Object actual = t.parseClient(null, input, null);
 
         assertEquals(actual, expected);
     }
@@ -165,10 +148,10 @@
     @DataProvider(name = "parse_client_failure_data")
     public Object[][] parse_client_failure_data()
     {
-        String intError = "The input value 'fred' is not parseable as an 
integer value.";
-        String floatError = "The input value 'fred' is not parseable as a 
numeric value.";
+        String intError = "You must provide an integer value for Fred.";
+        String floatError = "You must provide a numeric value for Fred.";
 
-        return new Object[][]{
+        return new Object[][] {
 
                 {Byte.class, "fred", intError},
 
@@ -187,29 +170,29 @@
     @Test(dataProvider = "parse_client_failure_data")
     public void parse_client_failure(Class type, String input, String 
expectedMessage)
     {
-
         Translator t = source.getByType(type);
+        Field field = mockField();
+
+        replay();
 
         try
         {
-            t.parseClient(input, 
messagesSource.getValidationMessages(Locale.ENGLISH));
+            t.parseClient(field, input, expectedMessage);
             unreachable();
         }
         catch (ValidationException ex)
         {
             assertEquals(ex.getMessage(), expectedMessage);
         }
+
+        verify();
     }
 
     @Test
     public void find_by_type()
     {
-        Translator t = mockTranslator();
-        Map<String, Translator> configuration = CollectionFactory.newMap();
-
-        configuration.put("string", t);
-
-        train_getType(t, String.class);
+        Translator t = mockTranslator("string", String.class);
+        Collection<Translator> configuration = CollectionFactory.newList(t);
 
         replay();
 
@@ -225,16 +208,10 @@
     @Test
     public void get_by_type_not_found()
     {
-        Translator string = mockTranslator();
-        Translator bool = mockTranslator();
-
-        Map<String, Translator> configuration = CollectionFactory.newMap();
-
-        configuration.put("string", string);
-        configuration.put("boolean", bool);
+        Translator string = mockTranslator("string", String.class);
+        Translator bool = mockTranslator("bool", Boolean.class);
 
-        train_getType(string, String.class);
-        train_getType(bool, Boolean.class);
+        Collection<Translator> configuration = 
CollectionFactory.newList(string, bool);
 
         replay();
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java?rev=689238&r1=689237&r2=689238&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
 Tue Aug 26 14:31:30 2008
@@ -42,7 +42,6 @@
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.TapestryModule;
-import org.apache.tapestry5.services.TranslatorSource;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.easymock.EasyMock;
 import static org.easymock.EasyMock.eq;
@@ -153,7 +152,6 @@
                                               T service)
     {
         expect(registry.getService(serviceId, 
serviceInterface)).andReturn(service);
-
     }
 
     protected final ComponentInstantiatorSource 
mockComponentInstantiatorSource()
@@ -613,11 +611,6 @@
         expect(context.getCount()).andReturn(count).atLeastOnce();
     }
 
-    protected final TranslatorSource mockTranslatorSource()
-    {
-        return newMock(TranslatorSource.class);
-    }
-
     protected final void train_getPropertyAdapter(ClassPropertyAdapter 
classPropertyAdapter,
                                                   String propertyName, 
PropertyAdapter propertyAdapter)
     {
@@ -653,4 +646,9 @@
 
         return model;
     }
+
+    protected final FieldComponent mockFieldComponent()
+    {
+        return newMock(FieldComponent.class);
+    }
 }

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties?rev=689238&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties
 Tue Aug 26 14:31:30 2008
@@ -0,0 +1 @@
+quantity-integer-message=Provide quantity as a number.

Modified: 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java?rev=689238&r1=689237&r2=689238&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
 Tue Aug 26 14:31:30 2008
@@ -21,6 +21,7 @@
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.mixins.RenderDisabled;
 import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.FieldValidatorDefaultSource;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.upload.services.MultipartDecoder;
@@ -49,7 +50,7 @@
      */
     @Parameter(defaultPrefix = BindingConstants.VALIDATE)
     @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate = NOOP_VALIDATOR;
+    private FieldValidator<Object> validate;
 
     @Environmental
     private ValidationTracker tracker;
@@ -61,7 +62,7 @@
     private FormSupport formSupport;
 
     @Inject
-    private FieldValidatorDefaultSource fieldValidatorDefaultSource;
+    private ComponentDefaultProvider defaultProvider;
 
     @Inject
     private ComponentResources resources;
@@ -81,13 +82,7 @@
      */
     final FieldValidator defaultValidate()
     {
-        Class type = resources.getBoundType("value");
-
-        if (type == null) return null;
-
-        return fieldValidatorDefaultSource.createDefaultValidator(this, 
resources.getId(),
-                                                                  
resources.getContainerMessages(), locale, type,
-                                                                  
resources.getAnnotationProvider("value"));
+        return defaultProvider.defaultValidator("value", resources);
     }
 
     public Upload()


Reply via email to