You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/11/17 02:02:41 UTC
svn commit: r1202963 [1/2] - in /wicket/trunk:
testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/
wicket-core/src/main/java/org/apache/wicket/
wicket-core/src/main/java/org/apache/wicket/validation/
wicket-core/src/main/jav...
Author: ivaynberg
Date: Thu Nov 17 01:02:40 2011
New Revision: 1202963
URL: http://svn.apache.org/viewvc?rev=1202963&view=rev
Log:
remove abstract validator
rewrote date/string/range validators to use the same baseclass since they were all doing basically the same thing
Issue: WICKET-4234
Added:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractRangeValidator.java
Removed:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/MaximumValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/MinimumValidator.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/MaximumValidatorTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/MinimumValidatorTest.java
Modified:
wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/Home.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.properties
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/ValidationError.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/CreditCardValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/DateValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/PatternValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/RangeValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/StringValidator.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/UrlValidator.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadError.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/FormValidatorBehaviorTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/model/HomePage.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/MockAjaxFormPage.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidationErrorTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidatorBehaviorTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/CreditCardValidatorTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/RangeValidatorTest.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FormPage.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage1.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage2.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java
wicket/trunk/wicket-extensions/.settings/org.eclipse.jdt.core.prefs
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
Modified: wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/Home.java
URL: http://svn.apache.org/viewvc/wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/Home.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/Home.java (original)
+++ wicket/trunk/testing/wicket-threadtest/src/main/java/org/apache/wicket/threadtest/apps/app1/Home.java Thu Nov 17 01:02:40 2011
@@ -56,7 +56,6 @@ import org.apache.wicket.threadtest.apps
import org.apache.wicket.util.convert.ConversionException;
import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.util.convert.MaskConverter;
-import org.apache.wicket.validation.validator.MinimumValidator;
import org.apache.wicket.validation.validator.RangeValidator;
/**
@@ -124,7 +123,7 @@ public class Home extends WebPage
add(stringTextField);
TextField<Integer> integerTextField = new TextField<Integer>("integerProperty",
Integer.class);
- add(integerTextField.add(new MinimumValidator<Integer>(0)));
+ add(integerTextField.add(new RangeValidator<Integer>(0, null)));
add(new TextField<Double>("doubleProperty", Double.class));
WebMarkupContainer dateLabel = new WebMarkupContainer("dateLabel");
add(dateLabel);
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.properties
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.properties?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.properties (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.properties Thu Nov 17 01:02:40 2011
@@ -16,9 +16,17 @@ Required=Field '${label}' is required.
IConverter='${input}' is not a valid ${type}.
RangeValidator=${input} is not between ${minimum} and ${maximum}.
+RangeValidator.minimum='${input}' is smaller than the minimum of ${minimum}.
+RangeValidator.maximum='${input}' is larger than the maximum of ${maximum}.
+
+#deprecated, use RangeValidator.minimum
MinimumValidator='${input}' is smaller than the minimum of ${minimum}.
+#deprecated, use RangeValidator.maximum
MaximumValidator='${input}' is larger than the maximum of ${maximum}.
+
+#raplaced with RangeValidator
NumberValidator.positive='${input}' must be positive.
+#replaced with RangeValidator
NumberValidator.negative='${input}' must be negative.
StringValidator.range='${input}' is not between ${minimum} and ${maximum} characters long.
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/ValidationError.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/ValidationError.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/ValidationError.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/ValidationError.java Thu Nov 17 01:02:40 2011
@@ -44,7 +44,7 @@ import org.apache.wicket.util.string.Str
* @author Igor Vaynberg (ivaynberg)
* @since 1.2.6
*/
-public class ValidationError implements IValidationError
+public final class ValidationError implements IValidationError
{
private static final long serialVersionUID = 1L;
@@ -60,7 +60,7 @@ public class ValidationError implements
private String message;
/**
- * Constructor.
+ * Constructs an empty error
*/
public ValidationError()
{
@@ -68,6 +68,46 @@ public class ValidationError implements
}
/**
+ * Constructs a validation error with the validator's standard key. Equivalent to calling
+ * {@link #addKey(IValidator)}
+ *
+ * @param validator
+ * validator
+ */
+ public ValidationError(IValidator<?> validator)
+ {
+ addKey(validator);
+ }
+
+ /**
+ * Constructs a validation error with a variation of validator's standard key. Equivalent to
+ * calling {@link #addKey(IValidator, String)}
+ *
+ * @param validator
+ * validator
+ * @param variation
+ * key variation
+ *
+ *
+ */
+ public ValidationError(IValidator<?> validator, String variation)
+ {
+ addKey(validator, variation);
+ }
+
+ /**
+ * Constructs a validation error with the specified message. Equivalent to calling
+ * {@link #setMessage(String)}
+ *
+ * @param message
+ * message
+ */
+ public ValidationError(String message)
+ {
+ setMessage(message);
+ }
+
+ /**
* Adds a key to the list of keys that will be tried against <code>IErrorMessageSource</code> to
* locate the error message string.
*
@@ -154,7 +194,6 @@ public class ValidationError implements
public ValidationError setVariable(String name, Object value)
{
Args.notEmpty(name, "name");
- Args.notNull(value, "value");
getVariables().put(name, value);
Added: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractRangeValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractRangeValidator.java?rev=1202963&view=auto
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractRangeValidator.java (added)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/AbstractRangeValidator.java Thu Nov 17 01:02:40 2011
@@ -0,0 +1,201 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.wicket.validation.validator;
+
+import java.io.Serializable;
+
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
+
+/**
+ * Base class for validators that check if a given value falls within [min,max] range.
+ *
+ * If either min or max are {@code null} they are not checked.
+ *
+ * <p>
+ * Resource keys:
+ * <ul>
+ * <li>{@code <class.simpleName>.exact} if min==max</li>
+ * <li>{@code <class.simpleName>.range} if both min and max are not {@code null}</li>
+ * <li>{@code <class.simpleName>.minimum} if max is {@code null}</li>
+ * <li>{@code <class.simpleName>.maximum} if min is {@code null}</li>
+ * </ul>
+ * </p>
+ *
+ * <p>
+ * Error Message Variables:
+ * <ul>
+ * <li>{@code name}: the id of {@code Component} that failed</li>
+ * <li>{@code label}: the label of the {@code Component} (either comes from
+ * {@code FormComponent.labelModel} or resource key {@code <form-id>.<form-component-id>}</li>
+ * <li>{@code input}: the input value</li>
+ * <li>{@code minimum}: the minimum allowed value</li>
+ * <li>{@code maximum}: the maximum allowed value</li>
+ * </ul>
+ * </p>
+ *
+ * @param <R>
+ * type of range value
+ * @param <V>
+ * type of validatable
+ *
+ * @author igor
+ */
+public abstract class AbstractRangeValidator<R extends Comparable<R> & Serializable, V extends Serializable>
+ extends Behavior implements IValidator<V>
+{
+ private static final long serialVersionUID = 1L;
+ private R minimum;
+ private R maximum;
+
+ /**
+ * Constructor that sets the minimum and maximum values.
+ *
+ * @param minimum
+ * the minimum value
+ * @param maximum
+ * the maximum value
+ */
+ public AbstractRangeValidator(R minimum, R maximum)
+ {
+ setRange(minimum, maximum);
+ }
+
+ /**
+ * Constructor used for subclasses who want to set the range using
+ * {@link #setRange(Comparable, Comparable)}
+ */
+ protected AbstractRangeValidator()
+ {
+ }
+
+ /**
+ * Sets validator range
+ *
+ * @param minimum
+ * @param maximum
+ */
+ protected final void setRange(R minimum, R maximum)
+ {
+ if (minimum == null && maximum == null)
+ {
+ throw new IllegalArgumentException("Both minimum and maximum values cannot be null");
+ }
+ this.minimum = minimum;
+ this.maximum = maximum;
+ }
+
+ @Override
+ public void validate(IValidatable<V> validatable)
+ {
+ R value = getValue(validatable);
+ final R min = getMinimum();
+ final R max = getMaximum();
+ if ((min != null && value.compareTo(min) < 0) || (max != null && value.compareTo(max) > 0))
+ {
+ ValidationError error = new ValidationError(this, getMode().getVariation());
+ error.setVariable("minimum", min);
+ error.setVariable("maximum", max);
+ validatable.error(decorate(error, validatable));
+ }
+ }
+
+ /**
+ * Gets the value that should be validated against the range
+ *
+ * @param validatable
+ * @return value to validate
+ */
+ protected abstract R getValue(IValidatable<V> validatable);
+
+ /**
+ * Gets the minimum value.
+ *
+ * @return minimum value
+ */
+ public R getMinimum()
+ {
+ return minimum;
+ }
+
+ /**
+ * Gets the maximum value.
+ *
+ * @return maximum value
+ */
+ public R getMaximum()
+ {
+ return maximum;
+ }
+
+ /**
+ * Allows subclasses to decorate reported errors
+ *
+ * @param error
+ * @param validatable
+ * @return decorated error
+ */
+ protected ValidationError decorate(ValidationError error, IValidatable<V> validatable)
+ {
+ return error;
+ }
+
+ /**
+ * Gets validation mode which is determined by whether min, max, or both values are provided
+ *
+ * @return validation mode
+ */
+ public final Mode getMode()
+ {
+ final R min = getMinimum();
+ final R max = getMaximum();
+
+ if (min == null && max != null)
+ {
+ return Mode.MAXIMUM;
+ }
+ else if (max == null && min != null)
+ {
+ return Mode.MINIMUM;
+ }
+ else if (max.equals(min))
+ {
+ return Mode.EXACT;
+ }
+ else
+ {
+ return Mode.RANGE;
+ }
+ }
+
+ /**
+ * Validator mode
+ *
+ * @author igor
+ */
+ public static enum Mode {
+ MINIMUM, MAXIMUM, RANGE, EXACT;
+
+ public String getVariation()
+ {
+ return name().toLowerCase();
+ }
+ }
+
+}
\ No newline at end of file
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/CreditCardValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/CreditCardValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/CreditCardValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/CreditCardValidator.java Thu Nov 17 01:02:40 2011
@@ -17,6 +17,8 @@
package org.apache.wicket.validation.validator;
import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
/**
* Checks if a credit card number is valid. The number will be checked for "American Express",
@@ -33,7 +35,7 @@ import org.apache.wicket.validation.IVal
* @author Joachim F. Rohde
* @since 1.2.6
*/
-public class CreditCardValidator extends AbstractValidator<String>
+public class CreditCardValidator implements IValidator<String>
{
private static final long serialVersionUID = 1L;
@@ -119,11 +121,8 @@ public class CreditCardValidator extends
this.cardId = cardId;
}
- /**
- * {@inheritDoc}
- */
@Override
- protected void onValidate(final IValidatable<String> validatable)
+ public void validate(final IValidatable<String> validatable)
{
final String value = validatable.getValue();
@@ -131,16 +130,28 @@ public class CreditCardValidator extends
{
if (!isLengthAndPrefixCorrect(value))
{
- error(validatable);
+ validatable.error(decorate(new ValidationError(this), validatable));
}
}
catch (final NumberFormatException ex)
{
- error(validatable);
+ validatable.error(decorate(new ValidationError(this), validatable));
}
}
/**
+ * Allows subclasses to decorate reported errors
+ *
+ * @param error
+ * @param validatable
+ * @return decorated error
+ */
+ protected ValidationError decorate(ValidationError error, IValidatable<String> validatable)
+ {
+ return error;
+ }
+
+ /**
* Checks if the credit card number can be determined as a valid number.
*
* @param creditCardNumber
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/DateValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/DateValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/DateValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/DateValidator.java Thu Nov 17 01:02:40 2011
@@ -18,298 +18,81 @@ package org.apache.wicket.validation.val
import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Map;
-import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.validation.IValidatable;
-
+import org.apache.wicket.validation.ValidationError;
/**
- * Validator for checking dates. This validator can be extended or can be used for one of its static
- * factory methods to get the default <code>DateValidator</code> as a range, maximum, or minimum
- * type.
+ * Validator for checking if a given date falls within [min,max] range.
+ *
+ * If either min or max are {@code null} they are not checked.
+ *
+ * <p>
+ * Resource keys:
+ * <ul>
+ * <li>{@code DateValidator.exact} if min==max</li>
+ * <li>{@code DateValidator.range} if both min and max are not {@code null}</li>
+ * <li>{@code DateValidator.minimum} if max is {@code null}</li>
+ * <li>{@code DateValidator.maximum} if min is {@code null}</li>
+ * </ul>
+ * </p>
+ *
+ * <p>
+ * Error Message Variables:
+ * <ul>
+ * <li>{@code name}: the id of {@code Component} that failed</li>
+ * <li>{@code label}: the label of the {@code Component} (either comes from
+ * {@code FormComponent.labelModel} or resource key {@code <form-id>.<form-component-id>}</li>
+ * <li>{@code input}: the input value</li>
+ * <li>{@code inputdate}: the formatted input value</li>
+ * <li>{@code minimum}: the minimum allowed value</li>
+ * <li>{@code maximum}: the maximum allowed value</li>
+ * </ul>
+ * </p>
*
- * @author Jonathan Locke
- * @author Johan Compagner
- * @author Igor Vaynberg (ivaynberg)
- * @since 1.2.6
+ * @author igor
*/
-public abstract class DateValidator extends AbstractValidator<Date>
+public class DateValidator extends RangeValidator<Date>
{
- private static final long serialVersionUID = 1L;
-
- /**
- * Gets a <code>Date</code> range validator for checking if the <code>Date</code> value falls
- * between the minimum and maximum <code>Date</code> values. If that is not the case, an error
- * message will be generated with the key "DateValidator.range". The message keys that can be
- * used are:
- * <p>
- * <ul>
- * <li>${minimum}: the minimum date</li>
- * <li>${maximum}: the maximum date</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param minimum
- * the minimum <code>Date</code>
- * @param maximum
- * the maximum <code>Date</code>
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator range(Date minimum, Date maximum)
- {
- return new RangeValidator(minimum, maximum, null);
- }
-
- /**
- * @see #range(Date, Date)
- *
- * @param minimum
- * the minimum <code>Date</code>
- * @param maximum
- * the maximum <code>Date</code>
- * @param format
- * The format string used to format the date with SimpleDateFormat
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator range(Date minimum, Date maximum, String format)
- {
- return new RangeValidator(minimum, maximum, format);
- }
-
- /**
- * Gets a <code>Date</code> minimum validator for checking if a <code>Date</code> value is
- * greater than the given minimum <code>Date</code> value. If that is not the case, an error
- * message will be generated with the key "DateValidator.minimum". The message keys that can be
- * used are:
- * <p>
- * <ul>
- * <li>${minimum}: the minimum date</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param minimum
- * the minimum <code>Date</code>
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator minimum(Date minimum)
- {
- return new MinimumValidator(minimum, null);
- }
-
- /**
- * @see #minimum(Date)
- *
- * @param minimum
- * the minimum <code>Date</code>
- * @param format
- * The format string used to format the date with SimpleDateFormat
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator minimum(Date minimum, String format)
- {
- return new MinimumValidator(minimum, format);
- }
+ private String format;
- /**
- * Gets a <code>Date</code> maximum validator for checking if a <code>Date</code> value is
- * smaller than the given maximum value. If that is not the case, an error message will be
- * generated with the key "DateValidator.maximum". The message keys that can be used are:
- * <p>
- * <ul>
- * <li>${maximum}: the maximum date</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param maximum
- * the maximum <code>Date</code>
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator maximum(Date maximum)
+ public DateValidator(Date minimum, Date maximum, String format)
{
- return new MaximumValidator(maximum, null);
+ super(minimum, maximum);
+ this.format = format;
}
- /**
- * @see #maximum(Date)
- *
- * @param maximum
- * the maximum <code>Date</code>
- * @param format
- * The format string used to format the date with SimpleDateFormat
- *
- * @return the requested <code>DateValidator</code>
- */
- public static DateValidator maximum(Date maximum, String format)
+ public DateValidator(Date minimum, Date maximum)
{
- return new MaximumValidator(maximum, format);
- }
-
- /**
- *
- */
- private static class RangeValidator extends DateValidator
- {
- private static final long serialVersionUID = 1L;
- private final Date minimum;
- private final Date maximum;
- private final String format;
-
- private RangeValidator(Date minimum, Date maximum, String format)
- {
- this.minimum = minimum;
- this.maximum = maximum;
- this.format = format;
- }
-
- @Override
- protected Map<String, Object> variablesMap(IValidatable<Date> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- if (format == null)
- {
- map.put("minimum", minimum);
- map.put("maximum", maximum);
- map.put("inputdate", validatable.getValue());
- }
- else
- {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- map.put("minimum", sdf.format(minimum));
- map.put("maximum", sdf.format(maximum));
- map.put("inputdate", sdf.format(validatable.getValue()));
- }
- return map;
- }
-
- /**
- * @see AbstractValidator#resourceKey(FormComponent)
- */
- @Override
- protected String resourceKey()
- {
- return "DateValidator.range";
- }
-
- @Override
- protected void onValidate(IValidatable<Date> validatable)
- {
- Date value = validatable.getValue();
- if (value.before(minimum) || value.after(maximum))
- {
- error(validatable);
- }
- }
+ this(minimum, maximum, null);
}
- private static class MinimumValidator extends DateValidator
+ public DateValidator()
{
- private static final long serialVersionUID = 1L;
- private final Date minimum;
- private final String format;
-
- private MinimumValidator(Date minimum, String format)
- {
- this.minimum = minimum;
- this.format = format;
- }
-
- @Override
- protected Map<String, Object> variablesMap(IValidatable<Date> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- if (format == null)
- {
- map.put("minimum", minimum);
- map.put("inputdate", validatable.getValue());
- }
- else
- {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- map.put("minimum", sdf.format(minimum));
- map.put("inputdate", sdf.format(validatable.getValue()));
- }
- return map;
- }
-
- @Override
- protected String resourceKey()
- {
- return "DateValidator.minimum";
- }
-
- @Override
- protected void onValidate(IValidatable<Date> validatable)
- {
- Date value = validatable.getValue();
- if (value.before(minimum))
- {
- error(validatable);
- }
- }
}
- private static class MaximumValidator extends DateValidator
+ @Override
+ protected ValidationError decorate(ValidationError error, IValidatable<Date> validatable)
{
- private static final long serialVersionUID = 1L;
- private final Date maximum;
- private final String format;
+ error = super.decorate(error, validatable);
- private MaximumValidator(Date maximum, String format)
- {
- this.maximum = maximum;
- this.format = format;
- }
+ error.setVariable("inputdate", validatable.getValue());
- @Override
- protected Map<String, Object> variablesMap(IValidatable<Date> validatable)
+ // format variables if format has been specified
+ if (format != null)
{
- final Map<String, Object> map = super.variablesMap(validatable);
- if (format == null)
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
+ if (getMinimum() != null)
{
- map.put("maximum", maximum);
- map.put("inputdate", validatable.getValue());
+ error.setVariable("minimum", sdf.format(getMinimum()));
}
- else
+ if (getMaximum() != null)
{
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- map.put("maximum", sdf.format(maximum));
- map.put("inputdate", sdf.format(validatable.getValue()));
+ error.setVariable("maximum", sdf.format(getMaximum()));
}
- return map;
- }
-
- @Override
- protected String resourceKey()
- {
- return "DateValidator.maximum";
+ error.setVariable("inputdate", sdf.format(validatable.getValue()));
}
- @Override
- protected void onValidate(IValidatable<Date> validatable)
- {
- Date value = validatable.getValue();
- if (value.after(maximum))
- {
- error(validatable);
- }
- }
+ return error;
}
}
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/PatternValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/PatternValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/PatternValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/PatternValidator.java Thu Nov 17 01:02:40 2011
@@ -16,11 +16,12 @@
*/
package org.apache.wicket.validation.validator;
-import java.util.Map;
import java.util.regex.Pattern;
import org.apache.wicket.util.parse.metapattern.MetaPattern;
import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
// FIXME 2.0: ivaynberg: look over javadoc
/**
@@ -59,7 +60,7 @@ import org.apache.wicket.validation.IVal
*
* @since 1.2.6
*/
-public class PatternValidator extends StringValidator
+public class PatternValidator implements IValidator<String>
{
private static final long serialVersionUID = 1L;
@@ -139,20 +140,6 @@ public class PatternValidator extends St
}
/**
- * Checks a value against this <code>PatternValidator</code>'s {@link Pattern}.
- *
- * @param validatable
- * the <code>IValidatable</code> to check
- */
- @Override
- protected Map<String, Object> variablesMap(IValidatable<String> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- map.put("pattern", pattern.pattern());
- return map;
- }
-
- /**
* @see java.lang.Object#toString()
*/
@Override
@@ -168,12 +155,27 @@ public class PatternValidator extends St
* the <code>IValidatable</code> to check
*/
@Override
- protected void onValidate(IValidatable<String> validatable)
+ public void validate(IValidatable<String> validatable)
{
// Check value against pattern
if (pattern.matcher(validatable.getValue()).matches() == reverse)
{
- error(validatable);
+ ValidationError error = new ValidationError(this);
+ error.setVariable("pattern", pattern.pattern());
+ validatable.error(decorate(error, validatable));
}
}
+
+ /**
+ * Allows subclasses to decorate reported errors
+ *
+ * @param error
+ * @param validatable
+ * @return decorated error
+ */
+ protected ValidationError decorate(ValidationError error, IValidatable<String> validatable)
+ {
+ return error;
+ }
+
}
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/RangeValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/RangeValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/RangeValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/RangeValidator.java Thu Nov 17 01:02:40 2011
@@ -18,24 +18,45 @@ package org.apache.wicket.validation.val
import java.io.Serializable;
-import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.ValidationError;
/**
* Validator for checking if a given value falls within [min,max] range.
*
+ * If either min or max are {@code null} they are not checked.
+ *
+ * <p>
+ * Resource keys:
+ * <ul>
+ * <li>{@code RangeValidator.exact} if min==max</li>
+ * <li>{@code RangeValidator.range} if both min and max are not {@code null}</li>
+ * <li>{@code RangeValidator.minimum} if max is {@code null}</li>
+ * <li>{@code RangeValidator.maximum} if min is {@code null}</li>
+ * </ul>
+ * </p>
+ *
+ * <p>
+ * Error Message Variables:
+ * <ul>
+ * <li>{@code name}: the id of {@code Component} that failed</li>
+ * <li>{@code label}: the label of the {@code Component} (either comes from
+ * {@code FormComponent.labelModel} or resource key {@code <form-id>.<form-component-id>}</li>
+ * <li>{@code input}: the input value</li>
+ * <li>{@code minimum}: the minimum allowed value</li>
+ * <li>{@code maximum}: the maximum allowed value</li>
+ * </ul>
+ * </p>
+ *
* @param <Z>
* type of validatable
+ *
+ * @author igor
*/
-public class RangeValidator<Z extends Comparable<Z> & Serializable> extends Behavior
- implements
- IValidator<Z>
+public class RangeValidator<Z extends Comparable<Z> & Serializable> extends
+ AbstractRangeValidator<Z, Z>
{
private static final long serialVersionUID = 1L;
- private Z minimum;
- private Z maximum;
/**
* Constructor that sets the minimum and maximum values.
@@ -58,67 +79,26 @@ public class RangeValidator<Z extends Co
{
}
- /**
- * Sets validator range
- *
- * @param minimum
- * @param maximum
- */
- protected final void setRange(Z minimum, Z maximum)
+ @Override
+ protected Z getValue(IValidatable<Z> validatable)
{
- this.minimum = minimum;
- this.maximum = maximum;
+ return validatable.getValue();
}
- /** {@inheritDoc} */
@Override
- public void validate(IValidatable<Z> validatable)
+ protected ValidationError decorate(ValidationError error, IValidatable<Z> validatable)
{
- Z value = validatable.getValue();
- final Z min = getMinimum();
- final Z max = getMaximum();
- if ((min != null && value.compareTo(min) < 0) || (max != null && value.compareTo(max) > 0))
+ // TODO wicket 7: remove deprecated keys
+ error = super.decorate(error, validatable);
+ switch (getMode())
{
- ValidationError error = new ValidationError();
- error.addKey(resourceKey());
- error.setVariable("minimum", min);
- error.setVariable("maximum", max);
- validatable.error(error);
+ case MINIMUM :
+ error.addKey("MaximumValidator");
+ break;
+ case MAXIMUM :
+ error.addKey("MinimumValidator");
+ break;
}
+ return error;
}
-
- /**
- * Gets the minimum value.
- *
- * @return minimum value
- */
- public Z getMinimum()
- {
- return minimum;
- }
-
- /**
- * Gets the maximum value.
- *
- * @return maximum value
- */
- public Z getMaximum()
- {
- return maximum;
- }
-
- /**
- * Gets the message resource key for this validator's error message from the
- * <code>ApplicationSettings</code> class.
- *
- * <strong>NOTE</strong>: THIS METHOD SHOULD NEVER RETURN <code>null</code>.
- *
- * @return the message resource key for this validator
- */
- // TODO Wicket 1.6 - remove that method and make this class extending AbstractValidator
- protected String resourceKey()
- {
- return getClass().getSimpleName();
- }
-
}
\ No newline at end of file
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/StringValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/StringValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/StringValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/StringValidator.java Thu Nov 17 01:02:40 2011
@@ -16,404 +16,94 @@
*/
package org.apache.wicket.validation.validator;
-import java.util.Map;
-
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.validation.IValidatable;
-
+import org.apache.wicket.validation.ValidationError;
/**
- * Validator for checking <code>String</code> lengths. Usually this validator is used through the
- * static factory methods, but it and its inner classes can also be subclassed directly.
+ * Validator for checking if length of a string falls within [min,max] range.
+ *
+ * If either min or max are {@code null} they are not checked.
+ *
+ * <p>
+ * If the component is attached to an {@code input} tag, a {@code maxlen} attribute will be added if
+ * the maximum is set.
*
- * @author Jonathan Locke
- * @author Johan Compagner
- * @author Igor Vaynberg (ivaynberg)
- * @since 1.2.6
+ * *
+ * <p>
+ * Resource keys:
+ * <ul>
+ * <li>{@code RangeValidator.exact} if min==max</li>
+ * <li>{@code RangeValidator.range} if both min and max are not {@code null}</li>
+ * <li>{@code RangeValidator.minimum} if max is {@code null}</li>
+ * <li>{@code RangeValidator.maximum} if min is {@code null}</li>
+ * </ul>
+ * (for backwards compatibility reasons resource keys of form {@code StringValidator.*} are still
+ * checked)
+ * </p>
+ *
+ * <p>
+ * Error Message Variables:
+ * <ul>
+ * <li>{@code name}: the id of {@code Component} that failed</li>
+ * <li>{@code label}: the label of the {@code Component} (either comes from
+ * {@code FormComponent.labelModel} or resource key {@code <form-id>.<form-component-id>}</li>
+ * <li>{@code input}: the input value</li>
+ * <li>{@code length}: the length of the entered</li>
+ * <li>{@code minimum}: the minimum alloed length</li>
+ * <li>{@code maximum}: the maximum allowed length</li>
+ * </ul>
+ * </p>
+ *
+ * @author igor
*/
-public abstract class StringValidator extends AbstractValidator<String>
+public class StringValidator extends AbstractRangeValidator<Integer, String>
{
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
/**
- * Validator for checking if the length of a <code>String</code> is exactly the specified
- * length.
- */
- public static class ExactLengthValidator extends StringValidator
- {
- private static final long serialVersionUID = 1L;
- private final int length;
-
- /**
- * Constructor.
- *
- * @param length
- * the length value
- */
- public ExactLengthValidator(int length)
- {
- this.length = length;
- }
-
- /**
- * Retrieves the length value.
- *
- * @return the length value
- */
- public final int getLength()
- {
- return length;
- }
-
- /**
- * see AbstractValidator#onValidate(IValidatable)
- */
- @Override
- protected void onValidate(IValidatable<String> validatable)
- {
- if ((validatable.getValue()).length() != length)
- {
- error(validatable);
- }
- }
-
- /**
- * @see AbstractValidator#resourceKey()
- */
- @Override
- protected String resourceKey()
- {
- return "StringValidator.exact";
- }
-
- /**
- * @see AbstractValidator#variablesMap(IValidatable)
- */
- @Override
- protected Map<String, Object> variablesMap(IValidatable<String> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- map.put("length", (validatable.getValue() != null) ? (validatable.getValue()).length() : 0);
- map.put("exact", length);
- return map;
- }
-
- }
-
- /**
- * Validator for checking if the length of a <code>String</code> is within the specified range.
- */
- public static class LengthBetweenValidator extends StringValidator
- {
- private static final long serialVersionUID = 1L;
- private final int maximum;
- private final int minimum;
-
- /**
- * Constructor that sets the minimum and maximum values.
- *
- * @param minimum
- * the minimum value
- * @param maximum
- * the maximum value
- */
- public LengthBetweenValidator(int minimum, int maximum)
- {
- this.minimum = minimum;
- this.maximum = maximum;
-
- }
-
- /**
- * Retrieves the maximum value.
- *
- * @return the maximum value
- */
- public final int getMaximum()
- {
- return maximum;
- }
-
- /**
- * Retrieves the minimum value.
- *
- * @return the minimum value
- */
- public final int getMinimum()
- {
- return minimum;
- }
-
- /**
- * see AbstractValidator#onValidate(IValidatable)
- */
- @Override
- protected void onValidate(IValidatable<String> validatable)
- {
- final String value = validatable.getValue();
- if (value.length() < minimum || value.length() > maximum)
- {
- error(validatable);
- }
-
- }
-
- /**
- * @see AbstractValidator#resourceKey()
- */
- @Override
- protected String resourceKey()
- {
- return "StringValidator.range";
- }
-
- /**
- * @see AbstractValidator#variablesMap(IValidatable)
- */
- @Override
- protected Map<String, Object> variablesMap(IValidatable<String> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- map.put("minimum", minimum);
- map.put("maximum", maximum);
- map.put("length", (validatable.getValue()).length());
- return map;
- }
-
- }
-
- /**
- * Validator for checking if the length of a <code>String</code> meets the maximum length
- * requirement.
- */
- public static class MaximumLengthValidator extends StringValidator
- {
- private static final long serialVersionUID = 1L;
- private final int maximum;
-
- /**
- * Constructor that sets a maximum length value.
- *
- * @param maximum
- * the maximum length value
- */
- public MaximumLengthValidator(int maximum)
- {
- this.maximum = maximum;
- }
-
- /**
- * Retrieves the maximum length value.
- *
- * @return the maximum length value
- */
- public final int getMaximum()
- {
- return maximum;
- }
-
- /**
- * see AbstractValidator#onValidate(IValidatable)
- */
- @Override
- protected void onValidate(IValidatable<String> validatable)
- {
- if ((validatable.getValue()).length() > maximum)
- {
- error(validatable);
- }
- }
-
- /**
- * @see AbstractValidator#resourceKey()
- */
- @Override
- protected String resourceKey()
- {
- return "StringValidator.maximum";
- }
-
- /**
- * @see AbstractValidator#variablesMap(IValidatable)
- */
- @Override
- protected Map<String, Object> variablesMap(IValidatable<String> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- map.put("maximum", maximum);
- map.put("length", (validatable.getValue()).length());
- return map;
- }
- }
-
- /**
- * Validator for checking if the length of a <code>String</code> meets the minimum length
- * requirement.
+ * Constructor that sets the minimum and maximum length values.
+ *
+ * @param minimum
+ * the minimum lenghh
+ * @param maximum
+ * the maximum length
*/
- public static class MinimumLengthValidator extends StringValidator
+ public StringValidator(Integer minimum, Integer maximum)
{
- private static final long serialVersionUID = 1L;
- private final int minimum;
-
- /**
- * Constructor that sets a minimum length value.
- *
- * @param minimum
- * the minimum length value
- */
- public MinimumLengthValidator(int minimum)
- {
- this.minimum = minimum;
- }
-
- /**
- * Retrieves the minimum length value.
- *
- * @return the minimum length value
- */
- public final int getMinimum()
- {
- return minimum;
- }
-
- /**
- * see AbstractValidator#onValidate(IValidatable)
- */
- @Override
- protected void onValidate(IValidatable<String> validatable)
- {
- if ((validatable.getValue()).length() < minimum)
- {
- error(validatable);
- }
- }
-
- /**
- * @see AbstractValidator#resourceKey()
- */
- @Override
- protected String resourceKey()
- {
- return "StringValidator.minimum";
- }
-
- /**
- * @see AbstractValidator#variablesMap(IValidatable)
- */
- @Override
- protected Map<String, Object> variablesMap(IValidatable<String> validatable)
- {
- final Map<String, Object> map = super.variablesMap(validatable);
- map.put("minimum", minimum);
- map.put("length", (validatable.getValue()).length());
- return map;
- }
-
+ setRange(minimum, maximum);
}
/**
- * Gets a <code>String</code> exact length validator for checking if a string length is exactly
- * the same as the given length value. If that is not the case, then an error message will be
- * generated with the key "StringValidator.exact". The message keys that can be used are:
- * <p>
- * <ul>
- * <li>${exact}: the maximum length</li>
- * <li>${length}: the length of the user input</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param length
- * the required length of the string
- *
- * @return the requested <code>StringValidator</code>
+ * Constructor used for subclasses who want to set the range using
+ * {@link #setRange(Comparable, Comparable)}
*/
- public static StringValidator exactLength(int length)
+ protected StringValidator()
{
- return new ExactLengthValidator(length);
}
- /**
- * Gets a <code>String</code> range validator for checking if a string length falls between the
- * minimum and and maximum lengths. If that is not the case, then an error message will be
- * generated with the key "StringValidator.range". The message keys that can be used are:
- * <p>
- * <ul>
- * <li>${minimum}: the minimum length</li>
- * <li>${maximum}: the maximum length</li>
- * <li>${length}: the length of the user input</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param minimum
- * the minimum length of the string
- * @param maximum
- * the maximum length of the string
- *
- * @return the requested <code>StringValidator</code>
- */
- public static StringValidator lengthBetween(int minimum, int maximum)
+ @Override
+ protected Integer getValue(IValidatable<String> validatable)
{
- return new LengthBetweenValidator(minimum, maximum);
+ return validatable.getValue().length();
}
- /**
- * Gets a <code>String</code> maximum validator for checking if a string length is smaller than
- * the given maximum value. If that is not the case, then an error message will be generated
- * with the key "StringValidator.maximum". The message keys that can be used are:
- * <p>
- * <ul>
- * <li>${maximum}: the maximum length</li>
- * <li>${length}: the length of the user input</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param maximum
- * the maximum length of the string
- *
- * @return the requested <code>StringValidator</code>
- */
- public static StringValidator maximumLength(int maximum)
+ @Override
+ protected ValidationError decorate(ValidationError error, IValidatable<String> validatable)
{
- return new MaximumLengthValidator(maximum);
+ error = super.decorate(error, validatable);
+ error.setVariable("length", validatable.getValue().length());
+ return error;
}
- /**
- * Gets a <code>String</code> minimum validator for checking if a string length is greater than
- * the given minimum value. If that is not the case, then an error message will be generated
- * with the key "StringValidator.minimum". The message keys that can be used are:
- * <p>
- * <ul>
- * <li>${minimum}: the minimum length</li>
- * <li>${length}: the length of the user input</li>
- * <li>${input}: the input the user gave</li>
- * <li>${name}: the name of the <code>Component</code> that failed</li>
- * <li>${label}: the label of the <code>Component</code> - either comes from
- * <code>FormComponent.labelModel</code> or resource key [form-id].[form-component-id] in that
- * order</li>
- * </ul>
- *
- * @param minimum
- * the minimum length of the string
- *
- * @return the requested <code>StringValidator</code>
- */
- public static StringValidator minimumLength(int minimum)
+ @Override
+ public void onComponentTag(Component component, ComponentTag tag)
{
- return new MinimumLengthValidator(minimum);
+ super.onComponentTag(component, tag);
+ if (getMaximum() != null && "input".equalsIgnoreCase(tag.getName()))
+ {
+ tag.put("maxlen", getMaximum());
+ }
}
-}
+}
\ No newline at end of file
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/UrlValidator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/UrlValidator.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/UrlValidator.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/validation/validator/UrlValidator.java Thu Nov 17 01:02:40 2011
@@ -23,6 +23,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.ValidationError;
/**
* Validator for checking URLs. The default schemes allowed are <code>http://</code>,
@@ -52,7 +54,7 @@ import org.apache.wicket.validation.IVal
* @since 1.2.6
* @see "http://www.ietf.org/rfc/rfc2396.txt"
*/
-public class UrlValidator extends AbstractValidator<String>
+public class UrlValidator implements IValidator<String>
{
private static final long serialVersionUID = 1L;
@@ -217,20 +219,29 @@ public class UrlValidator extends Abstra
allowedSchemes.addAll(Arrays.asList(schemes));
}
- /**
- * @see AbstractValidator#onValidate(IValidatable)
- */
+
@Override
- protected void onValidate(IValidatable<String> validatable)
+ public void validate(IValidatable<String> validatable)
{
String url = validatable.getValue();
- if (url != null && !isValid(url))
+ if (!isValid(url))
{
- error(validatable);
+ validatable.error(decorate(new ValidationError(this), validatable));
}
}
/**
+ * Allows subclasses to decorate reported errors
+ *
+ * @param error
+ * @return decorated error
+ */
+ protected ValidationError decorate(ValidationError error, IValidatable<String> validatable)
+ {
+ return error;
+ }
+
+ /**
* Checks if a field has a valid <code>URL</code>. This method is public because it is directly
* used in tests.
*
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadError.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadError.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadError.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadError.java Thu Nov 17 01:02:40 2011
@@ -71,7 +71,7 @@ public class FileUploadError extends Web
}
});
- inputField.add(StringValidator.lengthBetween(3, 10));
+ inputField.add(new StringValidator(3, 10));
inputField.setRequired(true);
form.add(inputField);
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/FormValidatorBehaviorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/FormValidatorBehaviorTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/FormValidatorBehaviorTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/form/validation/FormValidatorBehaviorTest.java Thu Nov 17 01:02:40 2011
@@ -100,7 +100,7 @@ public class FormValidatorBehaviorTest e
ft.setValue("name", "22");
ft.submit();
assertEquals(1, tester.getSession().getFeedbackMessages().size());
- assertEquals("MIN", tester.getSession()
+ assertEquals("MINIMUM", tester.getSession()
.getFeedbackMessages()
.iterator()
.next()
@@ -199,7 +199,7 @@ public class FormValidatorBehaviorTest e
String value = field.getConvertedInput();
if (value.length() < len)
{
- form.error("MIN");
+ form.error("MINIMUM");
}
}
}
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/model/HomePage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/model/HomePage.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/model/HomePage.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/model/HomePage.java Thu Nov 17 01:02:40 2011
@@ -60,7 +60,7 @@ public class HomePage extends WebPage
TextField<String> name = new TextField<String>("partyDetails.name");
name.setRequired(Boolean.TRUE);
- name.add(new StringValidator.LengthBetweenValidator(1, 30));
+ name.add(new StringValidator(1, 30));
FormComponentFeedbackBorder nameBorder = new FormComponentFeedbackBorder("nameBorder");
add(nameBorder);
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/resource/loader/ClassStringResourceLoaderTest.java Thu Nov 17 01:02:40 2011
@@ -19,7 +19,7 @@ package org.apache.wicket.resource.loade
import org.apache.wicket.Component;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.validation.IValidatable;
-import org.apache.wicket.validation.validator.AbstractValidator;
+import org.apache.wicket.validation.IValidator;
import org.junit.Test;
/**
@@ -44,18 +44,14 @@ public class ClassStringResourceLoaderTe
/**
*
*/
- public static class MyValidator extends AbstractValidator<String>
+ public static class MyValidator implements IValidator<String>
{
private static final long serialVersionUID = 1L;
- /**
- *
- * @see org.apache.wicket.validation.validator.AbstractValidator#onValidate(org.apache.wicket.validation.IValidatable)
- */
@Override
- protected void onValidate(IValidatable<String> v)
+ public void validate(IValidatable<String> v)
{
- error(v);
+
}
}
}
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/MockAjaxFormPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/MockAjaxFormPage.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/MockAjaxFormPage.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/MockAjaxFormPage.java Thu Nov 17 01:02:40 2011
@@ -78,7 +78,7 @@ public class MockAjaxFormPage extends We
form.add(submit);
final TextField<String> text = new TextField<String>("text");
text.setRequired(true);
- text.add(StringValidator.minimumLength(4));
+ text.add(new StringValidator(4, null));
text.add(new AjaxFormValidatingBehavior(form, "onkeyup")
{
private static final long serialVersionUID = 1L;
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidationErrorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidationErrorTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidationErrorTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidationErrorTest.java Thu Nov 17 01:02:40 2011
@@ -37,22 +37,36 @@ public class ValidationErrorTest
e.addKey(new TestValidator());
assertEquals("TestValidator", e.getKeys().get(0));
+ e = new ValidationError(new TestValidator());
+ assertEquals("TestValidator", e.getKeys().get(0));
+
e = new ValidationError();
e.addKey(new TestValidator(), "foo");
assertEquals("TestValidator.foo", e.getKeys().get(0));
+ e = new ValidationError(new TestValidator(), "foo");
+ assertEquals("TestValidator.foo", e.getKeys().get(0));
+
e = new ValidationError();
e.addKey(new TestValidator(), null);
assertEquals("TestValidator", e.getKeys().get(0));
+ e = new ValidationError(new TestValidator(), null);
+ assertEquals("TestValidator", e.getKeys().get(0));
+
e = new ValidationError();
e.addKey(new TestValidator(), " ");
assertEquals("TestValidator", e.getKeys().get(0));
+ e = new ValidationError(new TestValidator(), " ");
+ assertEquals("TestValidator", e.getKeys().get(0));
+
e = new ValidationError();
e.addKey(new TestValidator(), " foo ");
assertEquals("TestValidator.foo", e.getKeys().get(0));
+ e = new ValidationError(new TestValidator(), " foo ");
+ assertEquals("TestValidator.foo", e.getKeys().get(0));
}
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidatorBehaviorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidatorBehaviorTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidatorBehaviorTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/ValidatorBehaviorTest.java Thu Nov 17 01:02:40 2011
@@ -98,7 +98,7 @@ public class ValidatorBehaviorTest exten
ft.setValue("name", "22");
ft.submit();
assertEquals(1, tester.getSession().getFeedbackMessages().size());
- assertEquals("MIN", tester.getSession()
+ assertEquals("MINIMUM", tester.getSession()
.getFeedbackMessages()
.iterator()
.next()
@@ -165,7 +165,7 @@ public class ValidatorBehaviorTest exten
if (value.length() < len)
{
ValidationError error = new ValidationError();
- error.setMessage("MIN");
+ error.setMessage("MINIMUM");
validatable.error(error);
}
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/CreditCardValidatorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/CreditCardValidatorTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/CreditCardValidatorTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/CreditCardValidatorTest.java Thu Nov 17 01:02:40 2011
@@ -38,27 +38,27 @@ public class CreditCardValidatorTest ext
// null value
CreditCardValidator test = new CreditCardValidator();
IValidatable<String> validatable = new Validatable<String>(null);
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(false, validatable.isValid());
// too short
validatable = new Validatable<String>("9845");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(false, validatable.isValid());
// too long
validatable = new Validatable<String>("1234678910111213141516");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(false, validatable.isValid());
// contains a char
validatable = new Validatable<String>("3782822X6310005");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(false, validatable.isValid());
// invalid number
validatable = new Validatable<String>("840898920205250");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(false, validatable.isValid());
}
@@ -72,78 +72,78 @@ public class CreditCardValidatorTest ext
// American Express
CreditCardValidator test = new CreditCardValidator();
IValidatable<String> validatable = new Validatable<String>("378282246310005");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// American Express
validatable = new Validatable<String>("371449635398431");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// American Express Corporate
validatable = new Validatable<String>("378734493671000");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// American Express Corporate with dashes and spaces (should be filtered
// and are therefor legal)
validatable = new Validatable<String>("378 - 7344-9367 1000");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Diners Club
validatable = new Validatable<String>("30569309025904");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Discover
validatable = new Validatable<String>("6011111111111117");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Discover
validatable = new Validatable<String>("6011000990139424");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// JCB
validatable = new Validatable<String>("3530111333300000");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// JCB
validatable = new Validatable<String>("3566002020360505");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Mastercard
validatable = new Validatable<String>("5555555555554444");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Mastercard
validatable = new Validatable<String>("5105105105105100");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Visa
validatable = new Validatable<String>("4111111111111111");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Visa
validatable = new Validatable<String>("4012888888881881");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Visa
validatable = new Validatable<String>("4222222222222");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
// Switch / Solo
validatable = new Validatable<String>("6331101999990016");
- test.onValidate(validatable);
+ test.validate(validatable);
assertEquals(true, validatable.isValid());
}
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/RangeValidatorTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/RangeValidatorTest.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/RangeValidatorTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/validation/validator/RangeValidatorTest.java Thu Nov 17 01:02:40 2011
@@ -16,27 +16,30 @@
*/
package org.apache.wicket.validation.validator;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.Validatable;
+import org.apache.wicket.validation.ValidationError;
+import org.junit.Test;
/**
* Tests range validator
*
* @author igor.vaynberg
*/
-public class RangeValidatorTest extends TestCase
+public class RangeValidatorTest
{
/**
* @throws Exception
*/
- public void testDoubleRange() throws Exception
+ @Test
+ public void doubleRange() throws Exception
{
IValidator<Double> validator = new RangeValidator<Double>(1.1, 1.8);
- Validatable<Double> validatable = new Validatable<Double>((double) 1);
+ Validatable<Double> validatable = new Validatable<Double>((double)1);
validator.validate(validatable);
assertEquals(1, validatable.getErrors().size());
@@ -52,7 +55,7 @@ public class RangeValidatorTest extends
validator.validate(validatable);
assertEquals(0, validatable.getErrors().size());
- validatable = new Validatable<Double>((double) 2);
+ validatable = new Validatable<Double>((double)2);
validator.validate(validatable);
assertEquals(1, validatable.getErrors().size());
}
@@ -61,7 +64,8 @@ public class RangeValidatorTest extends
/**
* @throws Exception
*/
- public void testIntegerRange() throws Exception
+ @Test
+ public void integerRange() throws Exception
{
IValidator<Integer> validator = new RangeValidator<Integer>(1, 8);
@@ -84,5 +88,37 @@ public class RangeValidatorTest extends
validatable = new Validatable<Integer>(9);
validator.validate(validatable);
assertEquals(1, validatable.getErrors().size());
+
+ }
+
+ @Test
+ public void resourceKeys()
+ {
+ Validatable<Integer> validatable = new Validatable<Integer>(10);
+
+ IValidator<Integer> validator = new RangeValidator<Integer>(15, null);
+ validator.validate(validatable);
+ assertEquals("RangeValidator.minimum", getError(validatable).getKeys().get(0));
+
+ validatable = new Validatable<Integer>(10);
+ validator = new RangeValidator<Integer>(null, 5);
+ validator.validate(validatable);
+ assertEquals("RangeValidator.maximum", getError(validatable).getKeys().get(0));
+
+ validatable = new Validatable<Integer>(10);
+ validator = new RangeValidator<Integer>(1, 2);
+ validator.validate(validatable);
+ assertEquals("RangeValidator.range", getError(validatable).getKeys().get(0));
+
+ validatable = new Validatable<Integer>(10);
+ validator = new RangeValidator<Integer>(1, 1);
+ validator.validate(validatable);
+ assertEquals("RangeValidator.exact", getError(validatable).getKeys().get(0));
+
+ }
+
+ private ValidationError getError(Validatable validatable)
+ {
+ return (ValidationError)validatable.getErrors().get(0);
}
}
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FormPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FormPage.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FormPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FormPage.java Thu Nov 17 01:02:40 2011
@@ -51,7 +51,7 @@ public class FormPage extends BasePage
add(feedback);
// add form with markup id setter so it can be updated via ajax
- Bean bean=new Bean();
+ Bean bean = new Bean();
Form<Bean> form = new Form<Bean>("form", new CompoundPropertyModel<Bean>(bean));
add(form);
form.setOutputMarkupId(true);
@@ -61,7 +61,7 @@ public class FormPage extends BasePage
// add form components to the form as usual
fc = new RequiredTextField<String>("name");
- fc.add(StringValidator.minimumLength(4));
+ fc.add(new StringValidator(4, null));
fc.setLabel(new ResourceModel("label.name"));
form.add(fc);
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java Thu Nov 17 01:02:40 2011
@@ -106,7 +106,7 @@ public final class EditBook extends Auth
// that edits the book's title
final TextField<String> title = new TextField<String>("title");
title.setRequired(true);
- title.add(StringValidator.maximumLength(30));
+ title.add(new StringValidator(null, 30));
final MarkupContainer titleFeedback = new FormComponentFeedbackBorder("titleFeedback");
add(titleFeedback);
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage.java Thu Nov 17 01:02:40 2011
@@ -23,7 +23,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.MaximumValidator;
+import org.apache.wicket.validation.validator.RangeValidator;
/**
* Another page of the stateless example.
@@ -49,7 +49,7 @@ public class StatelessPage extends Wicke
add(new BookmarkablePageLink<Void>("indexLink", Index.class));
final TextField<Integer> field = new TextField<Integer>("textfield",
new PropertyModel<Integer>(this, "number"));
- field.add(new MaximumValidator<Integer>(20));
+ field.add(new RangeValidator<Integer>(null, 20));
field.setRequired(true);
StatelessForm<?> statelessForm = new StatelessForm<Void>("statelessform")
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage1.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage1.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage1.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage1.java Thu Nov 17 01:02:40 2011
@@ -23,7 +23,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.MaximumValidator;
+import org.apache.wicket.validation.validator.RangeValidator;
/**
* Another page of the stateless example.
@@ -49,7 +49,7 @@ public class StatelessPage1 extends Wick
add(new BookmarkablePageLink<Void>("indexLink", Index.class));
final TextField<Integer> field = new TextField<Integer>("textfield",
new PropertyModel<Integer>(this, "number"));
- field.add(new MaximumValidator<Integer>(20));
+ field.add(new RangeValidator<Integer>(null, 20));
field.setRequired(true);
StatelessForm<?> statelessForm = new StatelessForm("statelessform")
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage2.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage2.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage2.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage2.java Thu Nov 17 01:02:40 2011
@@ -23,7 +23,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.MaximumValidator;
+import org.apache.wicket.validation.validator.RangeValidator;
/**
* Another page of the stateless example.
@@ -49,7 +49,7 @@ public class StatelessPage2 extends Wick
add(new BookmarkablePageLink<Void>("indexLink", Index.class));
final TextField<Integer> field = new TextField<Integer>("textfield",
new PropertyModel<Integer>(this, "number"));
- field.add(new MaximumValidator<Integer>(20));
+ field.add(new RangeValidator<Integer>(0, 20));
field.setRequired(true);
StatelessForm<?> statelessForm = new StatelessForm("statelessform")
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java?rev=1202963&r1=1202962&r2=1202963&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/stateless/StatelessPage3.java Thu Nov 17 01:02:40 2011
@@ -23,7 +23,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.MaximumValidator;
+import org.apache.wicket.validation.validator.RangeValidator;
/**
* Another page of the stateless example.
@@ -64,7 +64,7 @@ public class StatelessPage3 extends Wick
add(new BookmarkablePageLink<Void>("indexLink", Index.class));
final TextField<Integer> field = new TextField<Integer>("textfield",
new PropertyModel<Integer>(this, "number"));
- field.add(new MaximumValidator<Integer>(20));
+ field.add(new RangeValidator<Integer>(0, 20));
field.setRequired(true);
StatelessForm<?> statelessForm = new StatelessForm("statelessform")