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 2007/01/30 03:08:00 UTC
svn commit: r501291 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/services/
main/java/org/apache/tapestry/translator/
main/resources/org/apache/tapestry/internal/
test/java/org/apache/tapestry/translator/
Author: hlship
Date: Mon Jan 29 18:07:59 2007
New Revision: 501291
URL: http://svn.apache.org/viewvc?view=rev&rev=501291
Log:
Add in translators for double and long.
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/DoubleTranslatorTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/LongTranslatorTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java
tapestry/tapestry5/tapestry-core/trunk/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=501291&r1=501290&r2=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java Mon Jan 29 18:07:59 2007
@@ -156,7 +156,9 @@
import org.apache.tapestry.ioc.util.StrategyRegistry;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.runtime.RenderCommand;
+import org.apache.tapestry.translator.DoubleTranslator;
import org.apache.tapestry.translator.IntegerTranslator;
+import org.apache.tapestry.translator.LongTranslator;
import org.apache.tapestry.translator.StringTranslator;
import org.apache.tapestry.validator.Max;
import org.apache.tapestry.validator.MaxLength;
@@ -961,6 +963,8 @@
* <ul>
* <li>integer</li>
* <li>string</li>
+ * <li>long</li>
+ * <li>double</li>
* </ul>
*/
public static void contributeTranslatorSource(
@@ -973,6 +977,8 @@
configuration.add("integer", new IntegerTranslator());
configuration.add("string", new StringTranslator());
+ configuration.add("long", new LongTranslator());
+ configuration.add("double", new DoubleTranslator());
}
/**
@@ -980,6 +986,8 @@
* <ul>
* <li>Integer</li>
* <li>String</li>
+ * <li>Long</li>
+ * <li>Double</li>
* </li>
*/
public static void contributeTranslatorDefaultSource(
@@ -987,6 +995,8 @@
{
configuration.add(Integer.class, new IntegerTranslator());
configuration.add(String.class, new StringTranslator());
+ configuration.add(Long.class, new LongTranslator());
+ configuration.add(Double.class, new DoubleTranslator());
}
/**
Added: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java?view=auto&rev=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java Mon Jan 29 18:07:59 2007
@@ -0,0 +1,52 @@
+// 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.translator;
+
+import org.apache.tapestry.Translator;
+import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.ioc.internal.util.InternalUtils;
+
+public class DoubleTranslator implements Translator<Double>
+{
+ /**
+ * Parses blank values to null, otherwise parses the client value to a long
+ *
+ * @throws ValidationException
+ * if the clientValue can not be parsed
+ */
+ public Double parseClient(String clientValue, Messages messages) throws ValidationException
+ {
+ if (InternalUtils.isBlank(clientValue))
+ return null;
+
+ try
+ {
+ return new Double(clientValue.trim());
+ }
+ catch (NumberFormatException ex)
+ {
+ throw new ValidationException(messages.format("number-format-exception", clientValue));
+ }
+ }
+
+ /**
+ * Converts null to the blank string, non-null to a string representation.
+ */
+ public String toClient(Double value)
+ {
+ return value == null ? "" : value.toString();
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java?view=diff&rev=501291&r1=501290&r2=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java Mon Jan 29 18:07:59 2007
@@ -37,7 +37,7 @@
try
{
- return Integer.parseInt(clientValue.trim());
+ return new Integer(clientValue.trim());
}
catch (NumberFormatException ex)
{
Added: 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=auto&rev=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/translator/LongTranslator.java Mon Jan 29 18:07:59 2007
@@ -0,0 +1,53 @@
+// 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.translator;
+
+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>
+{
+ /**
+ * Parses blank values to null, otherwise parses the client value to a long
+ *
+ * @throws ValidationException
+ * if the clientValue can not be parsed
+ */
+ public Long parseClient(String clientValue, Messages messages) throws ValidationException
+ {
+ if (InternalUtils.isBlank(clientValue))
+ return null;
+
+ try
+ {
+ return new Long(clientValue.trim());
+ }
+ catch (NumberFormatException ex)
+ {
+ throw new ValidationException(messages.format("integer-format-exception", clientValue));
+ }
+ }
+
+ /**
+ * Converts null to the blank string, non-null to a string representation.
+ */
+ public String toClient(Long value)
+ {
+ return value == null ? "" : value.toString();
+ }
+}
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=501291&r1=501290&r2=501291
==============================================================================
--- 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 Mon Jan 29 18:07:59 2007
@@ -1,4 +1,4 @@
-# Copyright 2006 The Apache Software Foundation
+# Copyright 2006, 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.
@@ -16,7 +16,11 @@
# as the first parameter, and the field's label as the second parameter.
required=You must provide a value for %s.
-integer-format-exception=The input value '%s' is not parseable as an integer value.
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.
\ No newline at end of file
+min-integer=%2$s requires a value of at least %1$d.
+
+# This is where the translator messages go.
+
+integer-format-exception=The input value '%s' is not parseable as an integer value.
+number-format-exception=The input value '%s' is not parseable as a numeric value.
\ No newline at end of file
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/DoubleTranslatorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/DoubleTranslatorTest.java?view=auto&rev=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/DoubleTranslatorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/DoubleTranslatorTest.java Mon Jan 29 18:07:59 2007
@@ -0,0 +1,92 @@
+// 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.translator;
+
+import org.apache.tapestry.Translator;
+import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.Messages;
+import org.testng.annotations.Test;
+
+public class DoubleTranslatorTest extends InternalBaseTestCase
+{
+ @Test
+ public void parse_invalid_format()
+ {
+ Messages messages = validationMessages();
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ try
+ {
+ translator.parseClient("xyz", messages);
+ unreachable();
+ }
+ catch (ValidationException ex)
+ {
+ assertEquals(
+ ex.getMessage(),
+ "The input value 'xyz' is not parseable as a numeric value. ");
+ }
+ }
+
+ @Test
+ public void blank_parses_to_null() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ assertNull(translator.parseClient("", messages));
+ }
+
+ @Test
+ public void null_converts_to_client_as_blank()
+ {
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ assertEquals(translator.toClient(null), "");
+ }
+
+ @Test
+ public void convert_non_null()
+ {
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ assertEquals(translator.toClient(37.0d), "37.0");
+ }
+
+ @Test
+ public void successful_parse_from_client() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ assertEquals(translator.parseClient("-23823", messages), new Double(-23823));
+ }
+
+ @Test
+ public void parse_ignores_trimmed_whitespace() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Double> translator = new DoubleTranslator();
+
+ assertEquals(translator.parseClient(" -123 ", messages), new Double(-123));
+ }
+}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/LongTranslatorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/LongTranslatorTest.java?view=auto&rev=501291
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/LongTranslatorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/translator/LongTranslatorTest.java Mon Jan 29 18:07:59 2007
@@ -0,0 +1,95 @@
+// 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.translator;
+
+import org.apache.tapestry.Translator;
+import org.apache.tapestry.ValidationException;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.Messages;
+import org.testng.annotations.Test;
+
+public class LongTranslatorTest extends InternalBaseTestCase
+{
+ @Test
+ public void parse_invalid_format()
+ {
+ Messages messages = validationMessages();
+
+ Translator<Long> translator = new LongTranslator();
+
+ try
+ {
+ translator.parseClient("xyz", messages);
+ unreachable();
+ }
+ catch (ValidationException ex)
+ {
+ // It's okay that it says 'integer' (not 'long') here because users don't
+ // care about the distinction.
+
+ assertEquals(
+ ex.getMessage(),
+ "The input value 'xyz' is not parseable as an integer value. ");
+ }
+ }
+
+ @Test
+ public void blank_parses_to_null() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Long> translator = new LongTranslator();
+
+ assertNull(translator.parseClient("", messages));
+ }
+
+ @Test
+ public void null_converts_to_client_as_blank()
+ {
+
+ Translator<Long> translator = new LongTranslator();
+
+ assertEquals(translator.toClient(null), "");
+ }
+
+ @Test
+ public void convert_non_null()
+ {
+
+ Translator<Long> translator = new LongTranslator();
+
+ assertEquals(translator.toClient(37l), "37");
+ }
+
+ @Test
+ public void successful_parse_from_client() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Long> translator = new LongTranslator();
+
+ assertEquals(translator.parseClient("-23823", messages), new Long(-23823));
+ }
+
+ @Test
+ public void parse_ignores_trimmed_whitespace() throws Exception
+ {
+ Messages messages = validationMessages();
+
+ Translator<Long> translator = new LongTranslator();
+
+ assertEquals(translator.parseClient(" -123 ", messages), new Long(-123));
+ }
+}