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()
