You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/08/26 23:31:32 UTC
svn commit: r689238 [3/3] - in /tapestry/tapestry5/trunk: src/site/apt/
src/site/apt/cookbook/ src/site/apt/guide/
tapestry-core/src/main/java/org/apache/tapestry5/
tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/
tapestry-core/src/main/j...
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()