You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/12/10 06:25:35 UTC
svn commit: r485142 - in /tapestry/tapestry4/trunk:
tapestry-examples/Workbench/src/context/WEB-INF/
tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/
tapestry-framework/src/java/org/apache/tapestry/form/translator/
tapestry-fr...
Author: jkuhnert
Date: Sat Dec 9 21:25:29 2006
New Revision: 485142
URL: http://svn.apache.org/viewvc?view=rev&rev=485142
Log:
Upgraded some of the validation/translation logic wrt client side number formatting.
Updated dojotest task as it got upgraded in dojo. (by me...heh )
Modified:
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Fields.properties
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/Fields.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Max.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Min.java
tapestry/tapestry4/trunk/tapestry-framework/src/js/lib/ant-dojotest.jar
tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_form_validation.js
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMax.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMin.java
Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Fields.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Fields.properties?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Fields.properties (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Fields.properties Sat Dec 9 21:25:29 2006
@@ -14,4 +14,4 @@
zip-code-label=Zip Code
zip-code-pattern=^\\d{5}(-\\d{4})?$
-zip-code-message=Zip codes are either five or nine digits; 02134 or 90125-1234.
\ No newline at end of file
+zip-code-message=Zip codes are either five or nine digits; 02134 or 90125-1234.
Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/Fields.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/Fields.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/Fields.java (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/fields/Fields.java Sat Dec 9 21:25:29 2006
@@ -37,12 +37,11 @@
public static final double DOUBLE_MIN = 3.14;
public static final double DOUBLE_MAX = 27.5;
-
+
public static final BigDecimal DECIMAL_MIN = new BigDecimal("2");
-
- public static final BigDecimal DECIMAL_MAX = new BigDecimal(
- "100.123456234563456734563456356734567456784567456784567845675678456785678");
-
+
+ public static final BigDecimal DECIMAL_MAX = new BigDecimal("100.123456234563456734563456356734567456784567456784567845675678456785678");
+
public static final long LONG_MIN = 6;
public static final long LONG_MAX = 21;
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java Sat Dec 9 21:25:29 2006
@@ -127,14 +127,11 @@
cons.accumulate(field.getClientId(),
new JSONLiteral("[dojo.validate.isRealNumber,{"
- + ((format.getMaximumFractionDigits() > 0)
- ? "" : "places:" + format.getMaximumFractionDigits() + ",")
- + "decimal:"
- + JSONObject.quote(format.getDecimalFormatSymbols().getDecimalSeparator())
- + (format.isGroupingUsed()
- ? ",separator:" + JSONObject.quote(format.getDecimalFormatSymbols().getGroupingSeparator())
- : "")
- + "}]"));
+ + "places:" + format.getMaximumFractionDigits() + ","
+ + "decimal:"
+ + JSONObject.quote(format.getDecimalFormatSymbols().getDecimalSeparator())
+ + ",separator:" + JSONObject.quote(format.getDecimalFormatSymbols().getGroupingSeparator())
+ + "}]"));
accumulateProfileProperty(field, profile, ValidationConstants.CONSTRAINTS, message);
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Max.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Max.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Max.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Max.java Sat Dec 9 21:25:29 2006
@@ -21,6 +21,7 @@
import org.apache.tapestry.form.FormComponentContributorContext;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
+import org.apache.tapestry.form.translator.NumberTranslator;
import org.apache.tapestry.json.JSONLiteral;
import org.apache.tapestry.json.JSONObject;
import org.apache.tapestry.valid.ValidationConstants;
@@ -83,10 +84,19 @@
// TODO: Should find some way to provide this globally and cache.
DecimalFormatSymbols symbols = new DecimalFormatSymbols(context.getLocale());
+ String maxString = null;
+ NumberTranslator translator = (NumberTranslator)super.getFieldTranslator(field, NumberTranslator.class);
+
+ if (translator != null)
+ maxString = translator.format(field, context.getLocale(), _max);
+ else
+ maxString = String.valueOf(_max);
+
accumulateProperty(cons, field.getClientId(),
new JSONLiteral("[dojo.validate.isInRange,{"
- + "max:" + _max + ","
+ + "max:" + maxString + ","
+ "decimal:" + JSONObject.quote(symbols.getDecimalSeparator())
+ + ",separator:" + JSONObject.quote(symbols.getGroupingSeparator())
+ "}]"));
accumulateProfileProperty(field, profile,
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Min.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Min.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Min.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Min.java Sat Dec 9 21:25:29 2006
@@ -21,6 +21,7 @@
import org.apache.tapestry.form.FormComponentContributorContext;
import org.apache.tapestry.form.IFormComponent;
import org.apache.tapestry.form.ValidationMessages;
+import org.apache.tapestry.form.translator.NumberTranslator;
import org.apache.tapestry.json.JSONLiteral;
import org.apache.tapestry.json.JSONObject;
import org.apache.tapestry.valid.ValidationConstants;
@@ -83,10 +84,19 @@
// TODO: Should find some way to provide this globally and cache.
DecimalFormatSymbols symbols = new DecimalFormatSymbols(context.getLocale());
+ String minString = null;
+ NumberTranslator translator = (NumberTranslator)super.getFieldTranslator(field, NumberTranslator.class);
+
+ if (translator != null)
+ minString = translator.format(field, context.getLocale(), _min);
+ else
+ minString = String.valueOf(_min);
+
accumulateProperty(cons, field.getClientId(),
new JSONLiteral("[dojo.validate.isInRange,{"
- + "min:" + _min + ","
+ + "min:" + minString + ","
+ "decimal:" + JSONObject.quote(symbols.getDecimalSeparator())
+ + ",separator:" + JSONObject.quote(symbols.getGroupingSeparator())
+ "}]"));
accumulateProfileProperty(field, profile,
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/lib/ant-dojotest.jar
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/lib/ant-dojotest.jar?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
Binary files - no diff available.
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_form_validation.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_form_validation.js?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_form_validation.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_form_validation.js Sat Dec 9 21:25:29 2006
@@ -35,6 +35,13 @@
jum.assertFalse(value, dojo.validate.isRealNumber(value, {places:0,decimal:".",separator:","}));
}
+function test_validate_decimals(){
+ var input = "1,124.12";
+ jum.assertTrue(dojo.validate.isRealNumber(input, {decimal:".",separator:","}));
+ jum.assertTrue(dojo.validate.isInRange(input, {min:2.0,decimal:".",separator:",",symbol:"¤"}));
+ jum.assertTrue(dojo.validate.isInRange(input, {max:1000000001,decimal:".",separator:",",symbol:"¤"}));
+}
+
function test_validate_required(){
// A generic form
var f = {
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java Sat Dec 9 21:25:29 2006
@@ -217,10 +217,10 @@
verify();
- assertEquals( "{\"constraints\":{\"numberField\":[[dojo.validate.isRealNumber,"
- + "{places:0,decimal:\".\"}]]},"
- + "\"numberField\":{\"constraints\":[\"invalid number message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"numberField\":[[dojo.validate.isRealNumber," +
+ "{places:0,decimal:\".\",separator:\",\"}]]},\"numberField\":" +
+ "{\"constraints\":[\"invalid number message\"]}}");
}
public void testMessageRenderContribution()
@@ -240,7 +240,7 @@
expect(context.getProfile()).andReturn(json);
trainGetLocale(context, Locale.ENGLISH);
-
+
trainBuildMessage(
context,
messageOverride,
@@ -249,17 +249,17 @@
"Blah Blah 'Field Name' Blah.");
replay();
-
+
translator.setMessage(messageOverride);
translator.renderContribution(writer, cycle, context, field);
verify();
- assertEquals("{\"constraints\":{\"myfield\":[[dojo.validate.isRealNumber,"
- + "{places:0,decimal:\".\"}]]},"
- + "\"myfield\":{\"constraints\":[\"Blah Blah \'Field Name\' Blah.\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"myfield\":[[dojo.validate.isRealNumber," +
+ "{places:0,decimal:\".\",separator:\",\"}]]},\"myfield\":" +
+ "{\"constraints\":[\"Blah Blah \'Field Name\' Blah.\"]}}");
}
public void testTrimRenderContribution()
@@ -291,11 +291,10 @@
verify();
- assertEquals("{\"trim\":[\"myfield\"],"
- + "\"constraints\":{\"myfield\":[[dojo.validate.isRealNumber,"
- + "{places:0,decimal:\".\"}]]},"
- + "\"myfield\":{\"constraints\":[\"invalid number message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"trim\":[\"myfield\"],\"constraints\":{\"myfield\":" +
+ "[[dojo.validate.isRealNumber,{places:0,decimal:\".\",separator:\",\"}]]}," +
+ "\"myfield\":{\"constraints\":[\"invalid number message\"]}}");
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMax.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMax.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMax.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMax.java Sat Dec 9 21:25:29 2006
@@ -16,7 +16,6 @@
import static org.easymock.EasyMock.expect;
-import java.text.DecimalFormatSymbols;
import java.util.Locale;
import org.apache.tapestry.IMarkupWriter;
@@ -110,8 +109,7 @@
FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
- Locale locale = Locale.FRANCE;
- DecimalFormatSymbols symbols = new DecimalFormatSymbols(locale);
+ Locale locale = Locale.GERMAN;
expect(context.getLocale()).andReturn(locale);
@@ -126,10 +124,10 @@
verify();
- assertEquals("{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,{max:20.0,decimal:\""
- + symbols.getDecimalSeparator() + "\"}]]},"
- + "\"myfield\":{\"constraints\":[\"default message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"myfield\":" +
+ "[[dojo.validate.isInRange,{max:20.0,decimal:\",\",separator:\".\"}]]}," +
+ "\"myfield\":{\"constraints\":[\"default message\"]}}");
}
public void test_Render_Contribution_Custom_Message()
@@ -143,8 +141,7 @@
FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
- Locale locale = Locale.FRANCE;
- DecimalFormatSymbols symbols = new DecimalFormatSymbols(locale);
+ Locale locale = Locale.JAPAN;
expect(context.getLocale()).andReturn(locale);
@@ -164,10 +161,10 @@
verify();
- assertEquals("{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,{max:20.0,decimal:\""
- + symbols.getDecimalSeparator() + "\"}]]},"
- +"\"myfield\":{\"constraints\":[\"custom\\\\message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"myfield\":[[dojo.validate.isInRange," +
+ "{max:20.0,decimal:\".\",separator:\",\"}]]}," +
+ "\"myfield\":{\"constraints\":[\"custom\\\\message\"]}}");
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMin.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMin.java?view=diff&rev=485142&r1=485141&r2=485142
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMin.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestMin.java Sat Dec 9 21:25:29 2006
@@ -16,7 +16,6 @@
import static org.easymock.EasyMock.expect;
-import java.text.DecimalFormatSymbols;
import java.util.Locale;
import org.apache.tapestry.IMarkupWriter;
@@ -94,7 +93,7 @@
}
catch (ValidatorException ex)
{
- assertEquals("custom message", ex.getMessage());
+ assertEquals(ex.getMessage(), "custom message");
assertEquals(ValidationConstraint.TOO_SMALL, ex.getConstraint());
}
}
@@ -110,7 +109,6 @@
FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
Locale locale = Locale.FRANCE;
- DecimalFormatSymbols symbols = new DecimalFormatSymbols(locale);
expect(context.getLocale()).andReturn(locale);
@@ -125,10 +123,10 @@
verify();
- assertEquals("{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,{min:20.0,decimal:\""
- + symbols.getDecimalSeparator() + "\"}]]},"
- + "\"myfield\":{\"constraints\":[\"default message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,"
+ + "{min:20.0,decimal:\",\",separator:\"Â \"}]]},"
+ + "\"myfield\":{\"constraints\":[\"default message\"]}}");
}
public void test_Render_Contribution_Custom_Message()
@@ -143,7 +141,6 @@
FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
Locale locale = Locale.FRANCE;
- DecimalFormatSymbols symbols = new DecimalFormatSymbols(locale);
expect(context.getLocale()).andReturn(locale);
@@ -160,13 +157,13 @@
replay();
new Min("min=20,message=custom").renderContribution(writer, cycle, context, field);
-
+
verify();
- assertEquals("{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,{min:20.0,decimal:\""
- + symbols.getDecimalSeparator() + "\"}]]},"
- + "\"myfield\":{\"constraints\":[\"custom\\\\message\"]}}",
- json.toString());
+ assertEquals(json.toString(),
+ "{\"constraints\":{\"myfield\":[[dojo.validate.isInRange,"
+ + "{min:20.0,decimal:\",\",separator:\"Â \"}]]},"
+ + "\"myfield\":{\"constraints\":[\"custom\\\\message\"]}}");
}
}