You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by fr...@apache.org on 2007/02/04 15:06:49 UTC
svn commit: r503409 [2/3] - in
/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support: ./
src/main/java/org/apache/tapestry/
src/main/java/org/apache/tapestry/corelib/base/
src/main/java/org/apache/tapestry/corelib/components/ src/main/java...
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/TapestryModule.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/TapestryModule.java Sun Feb 4 06:06:46 2007
@@ -30,7 +30,6 @@
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.SelectModel;
import org.apache.tapestry.Translator;
-import org.apache.tapestry.Validator;
import org.apache.tapestry.annotations.AfterRender;
import org.apache.tapestry.annotations.AfterRenderBody;
import org.apache.tapestry.annotations.AfterRenderTemplate;
@@ -40,18 +39,21 @@
import org.apache.tapestry.annotations.CleanupRender;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.SetupRender;
-import org.apache.tapestry.beaneditor.Validate;
import org.apache.tapestry.dom.DefaultMarkupModel;
import org.apache.tapestry.dom.Document;
import org.apache.tapestry.internal.InternalConstants;
import org.apache.tapestry.internal.TapestryUtils;
-import org.apache.tapestry.internal.beaneditor.PrimitiveFieldConstraintGenerator;
-import org.apache.tapestry.internal.beaneditor.ValidateAnnotationConstraintGenerator;
+import org.apache.tapestry.internal.beaneditor.AnnotationValidatorGenerator;
+import org.apache.tapestry.internal.beaneditor.LengthRangeValidateAnnotationWorker;
+import org.apache.tapestry.internal.beaneditor.MaxValidateAnnotationWorker;
+import org.apache.tapestry.internal.beaneditor.MinValidateAnnotationWorker;
+import org.apache.tapestry.internal.beaneditor.PrimitiveFieldValidatorGenerator;
+import org.apache.tapestry.internal.beaneditor.RequiredValidateAnnotationWorker;
+import org.apache.tapestry.internal.beaneditor.ValidateAnnotationWorker;
import org.apache.tapestry.internal.bindings.ComponentBindingFactory;
import org.apache.tapestry.internal.bindings.LiteralBindingFactory;
import org.apache.tapestry.internal.bindings.MessageBindingFactory;
import org.apache.tapestry.internal.bindings.TranslateBindingFactory;
-import org.apache.tapestry.internal.bindings.ValidateBindingFactory;
import org.apache.tapestry.internal.services.ActionLinkHandler;
import org.apache.tapestry.internal.services.ActionLinkHandlerImpl;
import org.apache.tapestry.internal.services.ApplicationGlobalsImpl;
@@ -80,13 +82,14 @@
import org.apache.tapestry.internal.services.CookieSink;
import org.apache.tapestry.internal.services.CookieSource;
import org.apache.tapestry.internal.services.CookiesImpl;
-import org.apache.tapestry.internal.services.FieldValidatorDefaultSourceImpl;
import org.apache.tapestry.internal.services.DefaultInjectionProvider;
import org.apache.tapestry.internal.services.DefaultValidationDelegateCommand;
import org.apache.tapestry.internal.services.EnvironmentImpl;
import org.apache.tapestry.internal.services.EnvironmentalWorker;
-import org.apache.tapestry.internal.services.FieldValidatorSourceImpl;
+import org.apache.tapestry.internal.services.FieldValidatorMessages;
+import org.apache.tapestry.internal.services.FieldValidatorMessagesImpl;
import org.apache.tapestry.internal.services.FlashPersistentFieldStrategy;
+import org.apache.tapestry.internal.services.FormPersistWorker;
import org.apache.tapestry.internal.services.HeartbeatImpl;
import org.apache.tapestry.internal.services.InfrastructureImpl;
import org.apache.tapestry.internal.services.InfrastructureManagerImpl;
@@ -133,8 +136,8 @@
import org.apache.tapestry.internal.services.TranslatorSourceImpl;
import org.apache.tapestry.internal.services.UnclaimedFieldWorker;
import org.apache.tapestry.internal.services.UpdateListenerHub;
-import org.apache.tapestry.internal.services.ValidationConstraintGeneratorImpl;
import org.apache.tapestry.internal.services.ValidationMessagesSourceImpl;
+import org.apache.tapestry.internal.services.CompoundalidatorGenerator;
import org.apache.tapestry.ioc.Configuration;
import org.apache.tapestry.ioc.IOCUtilities;
import org.apache.tapestry.ioc.MappedConfiguration;
@@ -166,11 +169,6 @@
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;
-import org.apache.tapestry.validator.Min;
-import org.apache.tapestry.validator.MinLength;
-import org.apache.tapestry.validator.Required;
/**
* The root module for Tapestry.
@@ -471,7 +469,8 @@
*/
public static void contributeInfrastructure(
Configuration<InfrastructureContribution> configuration, ServiceLocator locator,
- @InjectService("tapestry.ioc.TypeCoercer")
+ @InjectService("ValidatorGenerator")
+ ValidatorGenerator validatorGenerator, @InjectService("tapestry.ioc.TypeCoercer")
TypeCoercer typeCoercer, @InjectService("tapestry.ioc.PropertyAccess")
PropertyAccess propertyAccess)
@@ -491,8 +490,6 @@
ComponentMessagesSource.class,
ComponentSource.class,
Environment.class,
- FieldValidatorDefaultSource.class,
- FieldValidatorSource.class,
MarkupWriterFactory.class,
PersistentFieldManager.class,
Request.class,
@@ -501,9 +498,10 @@
Response.class,
TranslatorDefaultSource.class,
TranslatorSource.class,
- ValidationConstraintGenerator.class,
- ValidationMessagesSource.class);
+ ValidationMessagesSource.class,
+ FieldValidatorMessages.class);
+ configuration.add(new InfrastructureContribution("ValidatorGenerator", validatorGenerator));
configuration.add(new InfrastructureContribution("TypeCoercer", typeCoercer));
configuration.add(new InfrastructureContribution("PropertyAccess", propertyAccess));
}
@@ -590,15 +588,13 @@
public static void contributeBindingSource(
MappedConfiguration<String, BindingFactory> configuration,
@InjectService("tapestry.internal.PropBindingFactory")
- BindingFactory propBindingFactory, @Inject("infrastructure:FieldValidatorSource")
- FieldValidatorSource fieldValidatorSource, @Inject("infrastructure:TranslatorSource")
+ BindingFactory propBindingFactory, @Inject("infrastructure:TranslatorSource")
TranslatorSource translatorSource)
{
configuration.add(InternalConstants.LITERAL_BINDING_PREFIX, new LiteralBindingFactory());
configuration.add(InternalConstants.PROP_BINDING_PREFIX, propBindingFactory);
configuration.add("component", new ComponentBindingFactory());
configuration.add("message", new MessageBindingFactory());
- configuration.add("validate", new ValidateBindingFactory(fieldValidatorSource));
configuration.add("translate", new TranslateBindingFactory(translatorSource));
}
@@ -741,6 +737,7 @@
configuration.add("Retain", new RetainWorker());
configuration.add("Persist", new PersistWorker());
+ configuration.add("RestoreOnSubmit", new FormPersistWorker());
configuration.add("UnclaimedField", new UnclaimedFieldWorker(), "after:*.*");
}
@@ -927,32 +924,11 @@
configuration.add("tapestry/", "org/apache/tapestry/");
}
- public static FieldValidatorSource buildFieldValidatorSource(
+ public static FieldValidatorMessages buildFieldValidatorMessages(
@Inject("infrastructure:ValidationMessagesSource")
- ValidationMessagesSource messagesSource, @Inject("infrastructure:TypeCoercer")
- TypeCoercer typeCoercer, Map<String, Validator> configuration)
+ ValidationMessagesSource messagesSource)
{
- return new FieldValidatorSourceImpl(messagesSource, typeCoercer, configuration);
- }
-
- /**
- * Contributes the basic set of validators:
- * <ul>
- * <li>required</li>
- * <li>minlength</li>
- * <li>maxlength</li>
- * <li>min</li>
- * <li>max</li>
- * </ul>
- */
- public static void contributeFieldValidatorSource(
- MappedConfiguration<String, Validator> configuration)
- {
- configuration.add("required", new Required());
- configuration.add("minlength", new MinLength());
- configuration.add("maxlength", new MaxLength());
- configuration.add("min", new Min());
- configuration.add("max", new Max());
+ return new FieldValidatorMessagesImpl(messagesSource);
}
public static TranslatorSource buildTranslatorSource(Map<String, Translator> configuration)
@@ -1171,33 +1147,40 @@
configuration.add(Boolean.class, "checkbox");
}
- public static ValidationConstraintGenerator buildValidationConstraintGenerator(
- List<ValidationConstraintGenerator> configuration)
+ public static ValidatorGenerator buildValidatorGenerator(List<ValidatorGenerator> configuration)
{
- return new ValidationConstraintGeneratorImpl(configuration);
+ return new CompoundalidatorGenerator(configuration);
}
/**
- * Adds built-in constraint generators:
+ * Adds built-in validator generators:
* <ul>
* <li>PrimtiveField -- primitive fields are always required
- * <li>ValidateAnnotation -- adds constraints from a {@link Validate} annotation
+ * <li>Annotation -- adds constraints from a various annotations
* </ul>
*/
- public static void contributeValidationConstraintGenerator(
- OrderedConfiguration<ValidationConstraintGenerator> configuration)
+ public static void contributeValidatorGenerator(
+ OrderedConfiguration<ValidatorGenerator> configuration,
+ @InjectService("AnnotationValidatorGenerator")
+ ValidatorGenerator annotationValidatorGenerator)
{
- configuration.add("PrimitiveField", new PrimitiveFieldConstraintGenerator());
- configuration.add("ValidateAnnotation", new ValidateAnnotationConstraintGenerator());
+ configuration.add("PrimitiveField", new PrimitiveFieldValidatorGenerator());
+ configuration.add("Annotation", annotationValidatorGenerator);
}
- public static FieldValidatorDefaultSource buildFieldValidatorDefaultSource(
- @Inject("infrastructure:ValidationConstraintGenerator")
- ValidationConstraintGenerator validationConstraintGenerator,
- @Inject("infrastructure:FieldValidatorSource")
- FieldValidatorSource fieldValidatorSource)
+ public static ValidatorGenerator buildAnnotationValidatorGenerator(
+ List<ValidateAnnotationWorker> configuration)
{
- return new FieldValidatorDefaultSourceImpl(validationConstraintGenerator,
- fieldValidatorSource);
+ return new AnnotationValidatorGenerator(configuration);
}
+
+ public static void contributeAnnotationValidatorGenerator(
+ OrderedConfiguration<ValidateAnnotationWorker> configuration)
+ {
+ configuration.add("required", new RequiredValidateAnnotationWorker());
+ configuration.add("min", new MinValidateAnnotationWorker());
+ configuration.add("max", new MaxValidateAnnotationWorker());
+ configuration.add("lengthRange", new LengthRangeValidateAnnotationWorker());
+ }
+
}
Copied: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/ValidatorGenerator.java (from r503165, tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ValidationConstraintGenerator.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/ValidatorGenerator.java?view=diff&rev=503409&p1=tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ValidationConstraintGenerator.java&r1=503165&p2=tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/ValidatorGenerator.java&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ValidationConstraintGenerator.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/services/ValidatorGenerator.java Sun Feb 4 06:06:46 2007
@@ -17,30 +17,25 @@
import java.util.List;
import org.apache.tapestry.AnnotationProvider;
-import org.apache.tapestry.FieldValidator;
+import org.apache.tapestry.Validator;
/**
- * Invoked to generate a list of validation constraint strings for a property. This typically
- * involves scanning the property for annotations or naming conventions that confer the desired
- * validation. The constraint strings are ultimately handed to
- * {@link FieldValidatorSource#createValidator(org.apache.tapestry.Field, String, String, String, org.apache.tapestry.ioc.Messages, java.util.Locale)}.
+ * Invoked to generate a list of {@link org.apache.tapestry.Validator} for a property. This
+ * typically involves scanning the property for annotations or naming conventions that confer the
+ * desired validation.
*/
-public interface ValidationConstraintGenerator
+public interface ValidatorGenerator
{
/**
- * For a given property, identify all the approprite validation constraints. Each returned value
- * is the name of a validator (i.e., "required") or a validator name and configuration (i.e.,
- * "minlength=5"). These contraints are exactly the individual terms in a
- * {@link FieldValidatorSource#createValidators(org.apache.tapestry.Field, String) validate specification}.
- * These will ultimately be used to create {@link FieldValidator}s for the field that edits the
- * property.
+ * For a given property, identify all the approprite validators. Each returned value is a
+ * {@link Validator} (i.e., {@link org.apache.tapestry.validator.Required}).
*
* @param propertyType
- * the type of the property for which constraints are needed
+ * the type of the property for which validators are needed
* @param annotationProvider
* provides access to any annotations conceerning the property
- * @return a list of constraints
- * @see FieldValidatorSource
+ * @return a list of validators
*/
- List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider);
+ List<? extends Validator> buildValidators(Class propertyType,
+ AnnotationProvider annotationProvider);
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Sun Feb 4 06:06:46 2007
@@ -72,7 +72,6 @@
import org.apache.tapestry.services.ComponentClassResolver;
import org.apache.tapestry.services.Context;
import org.apache.tapestry.services.Environment;
-import org.apache.tapestry.services.FieldValidatorSource;
import org.apache.tapestry.services.Heartbeat;
import org.apache.tapestry.services.InjectionProvider;
import org.apache.tapestry.services.MethodFilter;
@@ -82,7 +81,6 @@
import org.apache.tapestry.services.ResourceDigestGenerator;
import org.apache.tapestry.services.Response;
import org.apache.tapestry.services.Session;
-import org.apache.tapestry.services.ValidationConstraintGenerator;
import org.apache.tapestry.services.ValidationMessagesSource;
import org.easymock.EasyMock;
import org.easymock.IAnswer;
@@ -532,11 +530,6 @@
expect(resources.getLocale()).andReturn(locale).atLeastOnce();
}
- protected <C, T> void train_getConstraintType(Validator<C, T> validator, Class<C> constraintType)
- {
- expect(validator.getConstraintType()).andReturn(constraintType);
- }
-
protected final Validator newValidator()
{
return newMock(Validator.class);
@@ -552,11 +545,6 @@
return newMock(FieldValidator.class);
}
- protected FieldValidatorSource newFieldValidatorSource()
- {
- return newMock(FieldValidatorSource.class);
- }
-
protected final Component newComponent()
{
return newMock(Component.class);
@@ -717,11 +705,6 @@
expect(resources.getMessages()).andReturn(messages).atLeastOnce();
}
- protected final void train_getValueType(Validator validator, Class valueType)
- {
- expect(validator.getValueType()).andReturn(valueType).atLeastOnce();
- }
-
protected final void train_invokeIfBlank(Validator validator, boolean invokeIfBlank)
{
expect(validator.invokeIfBlank()).andReturn(invokeIfBlank).atLeastOnce();
@@ -801,26 +784,4 @@
return newMock(AnnotationProvider.class);
}
- protected final void train_createValidator(FieldValidatorSource source, Field field, String validatorType, String constraintValue, String overrideId, Messages overrideMessages, Locale locale, FieldValidator result)
- {
- expect(
- source.createValidator(
- field,
- validatorType,
- constraintValue,
- overrideId,
- overrideMessages,
- locale)).andReturn(result);
- }
-
- protected final void train_buildConstraints(ValidationConstraintGenerator generator, Class propertyType, AnnotationProvider provider, String... constraints)
- {
- expect(generator.buildConstraints(propertyType, provider)).andReturn(
- Arrays.asList(constraints));
- }
-
- protected final ValidationConstraintGenerator newValidationConstraintGenerator()
- {
- return newMock(ValidationConstraintGenerator.class);
- }
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/DoubleTranslator.java Sun Feb 4 06:06:46 2007
@@ -14,13 +14,17 @@
package org.apache.tapestry.translator;
+import java.io.Serializable;
+
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>
+public class DoubleTranslator implements Translator<Double>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
/**
* Parses blank values to null, otherwise parses the client value to a long
*
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/IntegerTranslator.java Sun Feb 4 06:06:46 2007
@@ -14,6 +14,8 @@
package org.apache.tapestry.translator;
+import java.io.Serializable;
+
import org.apache.tapestry.Translator;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.ioc.Messages;
@@ -22,8 +24,10 @@
/**
* A translator for type integer.
*/
-public final class IntegerTranslator implements Translator<Integer>
+public final class IntegerTranslator implements Translator<Integer>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
/**
* Parses blank values to null, otherwise parses the client value to an integer.
*
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/LongTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/LongTranslator.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/LongTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/LongTranslator.java Sun Feb 4 06:06:46 2007
@@ -14,14 +14,18 @@
package org.apache.tapestry.translator;
+import java.io.Serializable;
+
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>
+public class LongTranslator implements Translator<Long>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
/**
* Parses blank values to null, otherwise parses the client value to a long
*
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/StringTranslator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/StringTranslator.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/StringTranslator.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/translator/StringTranslator.java Sun Feb 4 06:06:46 2007
@@ -14,12 +14,16 @@
package org.apache.tapestry.translator;
+import java.io.Serializable;
+
import org.apache.tapestry.Translator;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.ioc.Messages;
-public class StringTranslator implements Translator<String>
+public class StringTranslator implements Translator<String>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
/** Returns the client value (or the empty string, if the client value is null). */
public String parseClient(String clientValue, Messages messages) throws ValidationException
{
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Max.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Max.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Max.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Max.java Sun Feb 4 06:06:46 2007
@@ -14,17 +14,23 @@
package org.apache.tapestry.validator;
+import java.io.Serializable;
+
import org.apache.tapestry.Field;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
import org.apache.tapestry.ioc.MessageFormatter;
/** Enforces a maximum integer value. */
-public class Max implements Validator<Long, Number>
+public class Max implements Validator<Number>, Serializable
{
- public Class<Long> getConstraintType()
+ private static final long serialVersionUID = 1L;
+
+ private long _max;
+
+ public Max(long max)
{
- return Long.class;
+ _max = max;
}
public String getMessageKey()
@@ -32,20 +38,15 @@
return "max-integer";
}
- public Class<Number> getValueType()
- {
- return Number.class;
- }
-
public boolean invokeIfBlank()
{
return false;
}
- public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
+ public void validate(Field field, MessageFormatter formatter, Number value)
throws ValidationException
{
- if (value.longValue() > constraintValue)
- throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+ if (value.longValue() > _max)
+ throw new ValidationException(formatter.format(_max, field.getLabel()));
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MaxLength.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MaxLength.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MaxLength.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MaxLength.java Sun Feb 4 06:06:46 2007
@@ -14,16 +14,22 @@
package org.apache.tapestry.validator;
+import java.io.Serializable;
+
import org.apache.tapestry.Field;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
import org.apache.tapestry.ioc.MessageFormatter;
-public final class MaxLength implements Validator<Integer, String>
+public final class MaxLength implements Validator<String>, Serializable
{
- public Class<Integer> getConstraintType()
+ private static final long serialVersionUID = 1L;
+
+ private int _maxLength;
+
+ public MaxLength(int maxLength)
{
- return Integer.class;
+ _maxLength = maxLength;
}
public String getMessageKey()
@@ -31,20 +37,15 @@
return "maximum-string-length";
}
- public Class<String> getValueType()
- {
- return String.class;
- }
-
public boolean invokeIfBlank()
{
return false;
}
- public void validate(Field field, Integer constraintValue, MessageFormatter formatter, String value)
+ public void validate(Field field, MessageFormatter formatter, String value)
throws ValidationException
{
- if (value.length() > constraintValue)
- throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+ if (value.length() > _maxLength)
+ throw new ValidationException(formatter.format(_maxLength, field.getLabel()));
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Min.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Min.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Min.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Min.java Sun Feb 4 06:06:46 2007
@@ -14,17 +14,23 @@
package org.apache.tapestry.validator;
+import java.io.Serializable;
+
import org.apache.tapestry.Field;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
import org.apache.tapestry.ioc.MessageFormatter;
/* A vaidator that enforces that a number is greater than some minimum integer value. */
-public class Min implements Validator<Long, Number>
+public class Min implements Validator<Number>, Serializable
{
- public Class<Long> getConstraintType()
+ private static final long serialVersionUID = 1L;
+
+ private long _min;
+
+ public Min(long min)
{
- return Long.class;
+ _min = min;
}
public String getMessageKey()
@@ -32,20 +38,15 @@
return "min-integer";
}
- public Class<Number> getValueType()
- {
- return Number.class;
- }
-
public boolean invokeIfBlank()
{
return false;
}
- public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
+ public void validate(Field field, MessageFormatter formatter, Number value)
throws ValidationException
{
- if (value.longValue() < constraintValue)
- throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
+ if (value.longValue() < _min)
+ throw new ValidationException(formatter.format(_min, field.getLabel()));
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MinLength.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MinLength.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MinLength.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/MinLength.java Sun Feb 4 06:06:46 2007
@@ -14,6 +14,8 @@
package org.apache.tapestry.validator;
+import java.io.Serializable;
+
import org.apache.tapestry.Field;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
@@ -22,23 +24,26 @@
/**
* Validates that a string value has a minimum length.
*/
-public final class MinLength implements Validator<Integer, String>
+public final class MinLength implements Validator<String>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
+ private int _minLength;
+
+ public MinLength(int minLength)
+ {
+ _minLength = minLength;
+ }
public String getMessageKey()
{
return "minimum-string-length";
}
- public void validate(Field field, Integer constraintValue, MessageFormatter formatter,
+ public void validate(Field field, MessageFormatter formatter,
String value) throws ValidationException
{
- if (value.length() < constraintValue)
- throw new ValidationException(formatter.format(constraintValue, field.getLabel()));
- }
-
- public Class<Integer> getConstraintType()
- {
- return Integer.class;
+ if (value.length() < _minLength)
+ throw new ValidationException(formatter.format(_minLength, field.getLabel()));
}
public boolean invokeIfBlank()
@@ -46,8 +51,4 @@
return false;
}
- public Class<String> getValueType()
- {
- return String.class;
- }
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Required.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Required.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Required.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/java/org/apache/tapestry/validator/Required.java Sun Feb 4 06:06:46 2007
@@ -14,6 +14,8 @@
package org.apache.tapestry.validator;
+import java.io.Serializable;
+
import org.apache.tapestry.Field;
import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
@@ -23,32 +25,25 @@
* A validator that enforces that the value is not null and not the empty string. This validator is
* not configurable.
*/
-public final class Required implements Validator<Void, Object>
+public final class Required implements Validator<Object>, Serializable
{
+ private static final long serialVersionUID = 1L;
+
public String getMessageKey()
{
return "required";
}
- public void validate(Field field, Void constraintValue, MessageFormatter formatter, Object value)
+ public void validate(Field field, MessageFormatter formatter, Object value)
throws ValidationException
{
if (value == null || value.toString().equals(""))
throw new ValidationException(formatter.format(field.getLabel()));
}
- public Class<Void> getConstraintType()
- {
- return null;
- }
-
public boolean invokeIfBlank()
{
return true;
}
- public Class<Object> getValueType()
- {
- return Object.class;
- }
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/main/resources/org/apache/tapestry/internal/ValidationMessages.properties Sun Feb 4 06:06:46 2007
@@ -19,6 +19,7 @@
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.
+max-integer=%2$s requires a value of at most %1$d.
# This is where the translator messages go.
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/BlockDemo.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/BlockDemo.html?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/BlockDemo.html (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/BlockDemo.html Sun Feb 4 06:06:46 2007
@@ -8,7 +8,7 @@
</p>
<form t:type="Form">
- <select t:type="Select" t:id="blockName" model="',fred,barney'" onchange="this.form.submit();"/> <label t:type="Label" for="blockName">Block to display</label>
+ <select t:id="blockName" onchange="this.form.submit();"/> <label t:type="Label" for="blockName">Block to display</label>
</form>
<p>The block: [<t:comp type="Render" value="blockToRender"/>]</p>
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/PasswordFieldDemo.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/PasswordFieldDemo.html?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/PasswordFieldDemo.html (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/PasswordFieldDemo.html Sun Feb 4 06:06:46 2007
@@ -8,10 +8,10 @@
<span t:type="Errors"/>
<label t:type="Label" for="userName"/>
- <input t:type="TextField" t:id="userName" t:validate="required" size="30"/>
+ <input t:id="userName" size="30"/>
<br/>
<label t:type="Label" for="password"/>
- <input t:id="password" t:validate="required" size="30"/>
+ <input t:id="password" size="30"/>
<br/>
<input type="submit" value="Login"/>
</form>
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/SimpleForm.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/SimpleForm.html?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/SimpleForm.html (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/SimpleForm.html Sun Feb 4 06:06:46 2007
@@ -11,25 +11,21 @@
<div class="t-beaneditor">
<label id="l2" t:type="Label" for="email">This isn't used</label>
- <input t:type="TextField"
- t:id="email" value="incident.email" size="50" disabled="disabled"/>
+ <input
+ t:id="email" size="50"/>
<br/>
<label id="l3" t:type="Label" for="message"/>
- <input t:type="TextArea" t:id="message"
- label="Incident Message" value="incident.message" cols="50" rows="10"
- disabled="disabled"> You can put text here, but it isn't used. </input>
+ <input t:id="message"
+ cols="50" rows="10"> You can put text here, but it isn't used. </input>
<br/>
<label id="l4" t:type="Label" for="operatingSystem"/>
- <select t:type="Select"
- t:id="operatingSystem" value="incident.operatingSystem" model="message:os-values"
- disabled="disabled"/>
+ <select t:id="operatingSystem" />
<br/>
<label id="l5" t:type="Label" for="department"/>
- <select t:type="Select" t:id="department"
- value="incident.department" disabled="disabled"/>
+ <select t:id="department"/>
<br/>
<label id="l6" t:type="Label" for="urgent"/>
- <input t:type="Checkbox" t:id="urgent" value="incident.urgent" disabled="disabled"/>
+ <input t:id="urgent"/>
<br/>
<input type="submit"/></div>
</form>
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoList.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoList.html?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoList.html (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoList.html Sun Feb 4 06:06:46 2007
@@ -13,8 +13,7 @@
</tr>
<tr t:type="Loop" source="items" value="item" encoder="encoder">
<td>
- <input t:type="TextField" t:id="title" value="item.title" size="30"
- validate="required"/>
+ <input t:id="title" size="30"/>
</td>
<td> NOT YET </td>
</tr>
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoListVolatile.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoListVolatile.html?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoListVolatile.html (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/app1/WEB-INF/ToDoListVolatile.html Sun Feb 4 06:06:46 2007
@@ -13,8 +13,7 @@
</tr>
<tr t:type="Loop" source="items" value="item" volatile="true">
<td>
- <input t:type="TextField" t:id="title" value="item.title" size="30"
- validate="required"/>
+ <input t:id="title" size="30"/>
</td>
<td> NOT YET </td>
</tr>
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/EnumSelectModelTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/EnumSelectModelTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/EnumSelectModelTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/EnumSelectModelTest.java Sun Feb 4 06:06:46 2007
@@ -30,9 +30,9 @@
replay();
- SelectModel model = new EnumSelectModel(Stooge.class, messages);
+ SelectModel<Stooge> model = new EnumSelectModel<Stooge>(Stooge.class, messages);
- List<OptionModel> options = model.getOptions();
+ List<OptionModel<Stooge>> options = model.getOptions();
assertEquals(options.size(), 3);
@@ -54,9 +54,9 @@
replay();
- SelectModel model = new EnumSelectModel(Stooge.class, messages);
+ SelectModel<Stooge> model = new EnumSelectModel<Stooge>(Stooge.class, messages);
- List<OptionModel> options = model.getOptions();
+ List<OptionModel<Stooge>> options = model.getOptions();
assertEquals(options.size(), 3);
@@ -78,9 +78,9 @@
replay();
- SelectModel model = new EnumSelectModel(Stooge.class, messages);
+ SelectModel<Stooge> model = new EnumSelectModel<Stooge>(Stooge.class, messages);
- List<OptionModel> options = model.getOptions();
+ List<OptionModel<Stooge>> options = model.getOptions();
assertEquals(options.size(), 3);
@@ -91,7 +91,7 @@
verify();
}
- private void checkOption(List<OptionModel> options, int i, String label, Stooge value)
+ private void checkOption(List<OptionModel<Stooge>> options, int i, String label, Stooge value)
{
OptionModel model = options.get(i);
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/corelib/components/SelectTest.java Sun Feb 4 06:06:46 2007
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Map;
+import org.apache.tapestry.ConstantValueConduit;
import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.OptionGroupModel;
import org.apache.tapestry.OptionModel;
@@ -46,9 +47,9 @@
@Test
public void empty_model()
{
- Select select = new Select();
+ Select<Object> select = new Select<Object>();
- select.setModel(new SelectModelImpl(null, null));
+ select.setModel(new SelectModelImpl<Object>(null, null));
select.options(null);
}
@@ -79,21 +80,16 @@
@Test
public void just_options() throws Exception
{
- List<OptionModel> options = TapestryUtils
+ List<OptionModel<String>> options = TapestryUtils
.toOptionModels("fred=Fred Flintstone,barney=Barney Rubble");
- Select select = new Select();
-
- select.setModel(new SelectModelImpl(null, options));
- select.setValue("barney");
-
+ Select<String> select = new Select<String>();
+ select.setModel(new SelectModelImpl<String>(null, options));
+ select.setValueConduit(new ConstantValueConduit<String>("barney"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("just_options.html"));
}
@@ -103,21 +99,19 @@
{
// Extra cast needed for Sun compiler, not Eclipse compiler.
- List<OptionModel> options = Arrays.asList((OptionModel) new OptionModelImpl("Fred", false,
- "fred", "class", "pixie"));
+ List<OptionModel<String>> options = Arrays
+ .asList((OptionModel<String>) new OptionModelImpl<String>("Fred", false, "fred",
+ "class", "pixie"));
- Select select = new Select();
+ Select<String> select = new Select<String>();
- select.setModel(new SelectModelImpl(null, options));
- select.setValue("barney");
+ select.setModel(new SelectModelImpl<String>(null, options));
+ select.setValueConduit(new ConstantValueConduit<String>("barney"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("option_attributes.html"));
}
@@ -127,21 +121,19 @@
{
// Extra cast needed for Sun compiler, not Eclipse compiler.
- List<OptionModel> options = CollectionFactory.newList((OptionModel) new OptionModelImpl(
- "Fred", true, "fred", "class", "pixie"));
+ List<OptionModel<String>> options = CollectionFactory
+ .newList((OptionModel<String>) new OptionModelImpl<String>("Fred", true, "fred",
+ "class", "pixie"));
- Select select = new Select();
+ Select<String> select = new Select<String>();
- select.setModel(new SelectModelImpl(null, options));
- select.setValue("barney");
+ select.setModel(new SelectModelImpl<String>(null, options));
+ select.setValueConduit(new ConstantValueConduit<String>("barney"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("disabled_option.html"));
@@ -150,24 +142,21 @@
@Test
public void option_groups() throws Exception
{
- OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false, TapestryUtils
- .toOptionModels("Fred,Barney"));
- OptionGroupModel wives = new OptionGroupModelImpl("Wives", true, TapestryUtils
- .toOptionModels("Wilma,Betty"));
- List<OptionGroupModel> groupModels = CollectionFactory.newList(husbands, wives);
+ OptionGroupModel<String> husbands = new OptionGroupModelImpl<String>("Husbands", false,
+ TapestryUtils.toOptionModels("Fred,Barney"));
+ OptionGroupModel<String> wives = new OptionGroupModelImpl<String>("Wives", true,
+ TapestryUtils.toOptionModels("Wilma,Betty"));
+ List<OptionGroupModel<String>> groupModels = CollectionFactory.newList(husbands, wives);
- Select select = new Select();
+ Select<String> select = new Select<String>();
- select.setModel(new SelectModelImpl(groupModels, null));
- select.setValue("Fred");
+ select.setModel(new SelectModelImpl<String>(groupModels, null));
+ select.setValueConduit(new ConstantValueConduit<String>("Fred"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("option_groups.html"));
}
@@ -175,22 +164,19 @@
@Test
public void option_groups_precede_ungroup_options() throws Exception
{
- OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false, TapestryUtils
- .toOptionModels("Fred,Barney"));
+ OptionGroupModel<String> husbands = new OptionGroupModelImpl<String>("Husbands", false,
+ TapestryUtils.toOptionModels("Fred,Barney"));
- Select select = new Select();
+ Select<String> select = new Select<String>();
- select.setModel(new SelectModelImpl(Collections.singletonList(husbands), TapestryUtils
- .toOptionModels("Wilma,Betty")));
- select.setValue("Fred");
+ select.setModel(new SelectModelImpl<String>(Collections.singletonList(husbands),
+ TapestryUtils.toOptionModels("Wilma,Betty")));
+ select.setValueConduit(new ConstantValueConduit<String>("Fred"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("option_groups_precede_ungroup_options.html"));
}
@@ -200,21 +186,18 @@
{
Map<String, String> attributes = Collections.singletonMap("class", "pixie");
- OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false, TapestryUtils
+ OptionGroupModel<String> husbands = new OptionGroupModelImpl<String>("Husbands", false, TapestryUtils
.toOptionModels("Fred,Barney"), attributes);
- Select select = new Select();
+ Select<String> select = new Select<String>();
- select.setModel(new SelectModelImpl(Collections.singletonList(husbands), null));
- select.setValue("Fred");
+ select.setModel(new SelectModelImpl<String>(Collections.singletonList(husbands), null));
+ select.setValueConduit(new ConstantValueConduit<String>("Fred"));
MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel(), null);
-
- writer.element("select");
-
+ select.beginRender(writer);
select.options(writer);
-
- writer.end();
+ select.afterRender(writer);
assertEquals(writer.toString(), read("option_group_attributes.html"));
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/data/RegistrationData.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/data/RegistrationData.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/data/RegistrationData.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/data/RegistrationData.java Sun Feb 4 06:06:46 2007
@@ -14,8 +14,11 @@
package org.apache.tapestry.integration.app1.data;
+import org.apache.tapestry.beaneditor.LengthRange;
+import org.apache.tapestry.beaneditor.Max;
+import org.apache.tapestry.beaneditor.Min;
import org.apache.tapestry.beaneditor.Order;
-import org.apache.tapestry.beaneditor.Validate;
+import org.apache.tapestry.beaneditor.Required;
public class RegistrationData
{
@@ -30,7 +33,8 @@
private boolean _citizen;
@Order(300)
- @Validate("min=1900,max=2007")
+ @Min(1900)
+ @Max(2007)
public int getBirthYear()
{
return _birthYear;
@@ -47,13 +51,15 @@
}
@Order(100)
- @Validate("required,minlength=3")
+ @Required
+ @LengthRange(minLength=3)
public void setFirstName(String firstName)
{
_firstName = firstName;
}
- @Validate("required,minlength=5")
+ @Required
+ @LengthRange(minLength=5)
public String getLastName()
{
return _lastName;
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/BlockDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/BlockDemo.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/BlockDemo.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/BlockDemo.java Sun Feb 4 06:06:46 2007
@@ -17,15 +17,21 @@
import java.util.Map;
import org.apache.tapestry.Block;
+import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.annotations.Retain;
+import org.apache.tapestry.corelib.components.Select;
+import org.apache.tapestry.internal.TapestryUtils;
import org.apache.tapestry.ioc.internal.util.CollectionFactory;
@ComponentClass
public class BlockDemo
{
+ @Component(id="blockName")
+ private Select<String> _blockNameField;
+
@Inject
private Block _fred;
@@ -61,4 +67,9 @@
_blockName = blockName;
}
+ public void configureBlockName()
+ {
+ _blockNameField.useDefaultEncoder(String.class);
+ _blockNameField.setModel(TapestryUtils.toSelectModel(",fred,barney"));
+ }
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/PasswordFieldDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/PasswordFieldDemo.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/PasswordFieldDemo.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/PasswordFieldDemo.java Sun Feb 4 06:06:46 2007
@@ -20,11 +20,16 @@
import org.apache.tapestry.annotations.Retain;
import org.apache.tapestry.corelib.components.Form;
import org.apache.tapestry.corelib.components.PasswordField;
+import org.apache.tapestry.corelib.components.TextField;
import org.apache.tapestry.integration.app1.services.UserAuthenticator;
+import org.apache.tapestry.validator.Required;
@ComponentClass
public class PasswordFieldDemo
{
+ @Component(id="userName")
+ private TextField<String> _userNameField;
+
@Retain
private String _userName;
@@ -36,7 +41,7 @@
private UserAuthenticator _authenticator;
@Component(id = "password")
- private PasswordField _passwordField;
+ private PasswordField<String> _passwordField;
@Component
private Form _form;
@@ -72,4 +77,12 @@
_userName = userName;
}
+ public void configureUserName()
+ {
+ _userNameField.setValidators(new Required());
+ }
+ public void configurePassword()
+ {
+ _passwordField.setValidators(new Required());
+ }
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java Sun Feb 4 06:06:46 2007
@@ -14,13 +14,78 @@
package org.apache.tapestry.integration.app1.pages;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.corelib.components.Checkbox;
+import org.apache.tapestry.corelib.components.Select;
+import org.apache.tapestry.corelib.components.TextArea;
+import org.apache.tapestry.corelib.components.TextField;
+import org.apache.tapestry.integration.app1.data.Department;
import org.apache.tapestry.integration.app1.data.IncidentData;
+import org.apache.tapestry.internal.TapestryUtils;
+import org.apache.tapestry.validator.Required;
@ComponentClass
public class SimpleForm
{
+ @Component
+ private TextField<String> _email;
+
+ @Component
+ private TextArea<String> _message;
+
+ @Component
+ private Select<Department> _department;
+
+ @Component
+ private Select<String> _operatingSystem;
+
+ @Component
+ private Checkbox _urgent;
+
+ public void configureEmail()
+ {
+ _email.setValueBindingExpr("incident.email");
+ _email.setValidators(new Required());
+ _email.setDisabled(_disabled);
+ }
+
+ public void configureMessage()
+ {
+ _message.setValueBindingExpr("incident.message");
+ _message.setValidators(new Required());
+ _message.setLabel("Incident Message");
+ _message.setDisabled(_disabled);
+ }
+
+ public void configureDepartment()
+ {
+ _department.setValueBindingExpr("incident.department");
+ _department.setDisabled(_disabled);
+ _department.useDefaultsFor(Department.class);
+ }
+
+ @Inject
+ private ComponentResources _resources;
+
+ public void configureOperatingSystem()
+ {
+ _operatingSystem.setValueBindingExpr("incident.operatingSystem");
+ _operatingSystem.setDisabled(_disabled);
+ _operatingSystem.setModel(TapestryUtils.toSelectModel(_resources.getMessages().get(
+ "os-values")));
+ _operatingSystem.useDefaultEncoder(String.class);
+ }
+
+ public void configureUrgent()
+ {
+ _urgent.setValueBindingExpr("incident.urgent");
+ _urgent.setDisabled(_disabled);
+ }
+
@Persist
private IncidentData _incident;
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoList.java Sun Feb 4 06:06:46 2007
@@ -22,12 +22,17 @@
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.corelib.components.Form;
+import org.apache.tapestry.corelib.components.TextField;
import org.apache.tapestry.integration.app1.data.ToDoItem;
import org.apache.tapestry.integration.app1.services.ToDoDatabase;
+import org.apache.tapestry.validator.Required;
@ComponentClass
public class ToDoList
{
+ @Component
+ private TextField<String> _title;
+
@Inject
private ToDoDatabase _database;
@@ -101,5 +106,11 @@
void onActionFromReset()
{
_database.reset();
+ }
+
+ public void configureTitle()
+ {
+ _title.setValueBindingExpr("item.title");
+ _title.setValidators(new Required());
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoListVolatile.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoListVolatile.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoListVolatile.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ToDoListVolatile.java Sun Feb 4 06:06:46 2007
@@ -20,12 +20,17 @@
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.corelib.components.Form;
+import org.apache.tapestry.corelib.components.TextField;
import org.apache.tapestry.integration.app1.data.ToDoItem;
import org.apache.tapestry.integration.app1.services.ToDoDatabase;
+import org.apache.tapestry.validator.Required;
@ComponentClass
public class ToDoListVolatile
{
+ @Component
+ private TextField<String> _title;
+
@Inject
private ToDoDatabase _database;
@@ -87,5 +92,11 @@
void onActionFromReset()
{
_database.reset();
+ }
+
+ public void configureTitle()
+ {
+ _title.setValueBindingExpr("item.title");
+ _title.setValidators(new Required());
}
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ValidForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ValidForm.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ValidForm.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app1/pages/ValidForm.java Sun Feb 4 06:06:46 2007
@@ -14,13 +14,54 @@
package org.apache.tapestry.integration.app1.pages;
+import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.corelib.components.Checkbox;
+import org.apache.tapestry.corelib.components.TextArea;
+import org.apache.tapestry.corelib.components.TextField;
import org.apache.tapestry.integration.app1.data.IncidentData;
+import org.apache.tapestry.validator.Required;
@ComponentClass
public class ValidForm
{
+ @Component
+ private TextField<String> _email;
+
+ @Component
+ private TextArea<String> _message;
+
+ @Component
+ private Checkbox _urgent;
+
+ @Component
+ private TextField<Integer> _hours;
+
+ public void configureEmail()
+ {
+ _email.setValueBindingExpr("incident.email");
+ _email.setValidators(new Required());
+ }
+
+ public void configureMessage()
+ {
+ _message.setValueBindingExpr("incident.message");
+ _message.setValidators(new Required());
+ _message.setLabel("Incident Message");
+ }
+
+ public void configureUrgent()
+ {
+ _urgent.setValueBindingExpr("incident.urgent");
+ }
+
+ public void configureHours()
+ {
+ _hours.setValueBindingExpr("incident.hours");
+ _hours.setValidators(new Required());
+ }
+
@Persist
private IncidentData _incident;
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForForm.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForForm.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForForm.java Sun Feb 4 06:06:46 2007
@@ -14,12 +14,22 @@
package org.apache.tapestry.integration.app2.pages;
+import org.apache.tapestry.annotations.Component;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.corelib.components.TextField;
@ComponentClass
public class TestPageForForm
{
+ @Component
+ private TextField _t1;
+
+ public void configureT1()
+ {
+ _t1.setValueBindingExpr("value");
+ }
+
@Persist
private String value;
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForSubmit.java Sun Feb 4 06:06:46 2007
@@ -27,27 +27,35 @@
{
@SuppressWarnings("unused")
@Component
- private Form form1;
+ private Form _form1;
@SuppressWarnings("unused")
@Component
- private Form form2;
+ private Form _form2;
@SuppressWarnings("unused")
@Component
- private Submit capitalize1;
+ private Submit _capitalize1;
@SuppressWarnings("unused")
@Component
- private Submit capitalize2;
+ private Submit _capitalize2;
- @SuppressWarnings("unused")
- @Component(parameters = "value=value")
- private TextField t1;
+ @Component
+ private TextField _t1;
- @SuppressWarnings("unused")
- @Component(parameters = "value=value")
- private TextField t2;
+ public void configureT1()
+ {
+ _t1.setValueBindingExpr("value");
+ }
+
+ @Component
+ private TextField _t2;
+
+ public void configureT2()
+ {
+ _t2.setValueBindingExpr("value");
+ }
@Persist
private String value;
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionGroupModelImplTest.java Sun Feb 4 06:06:46 2007
@@ -28,9 +28,9 @@
@Test
public void basics()
{
- List<OptionModel> options = Collections.emptyList();
+ List<OptionModel<String>> options = Collections.emptyList();
- OptionGroupModel group = new OptionGroupModelImpl("Label", true, options);
+ OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options);
assertEquals(group.toString(), "OptionGroupModel[Label]");
assertTrue(group.isDisabled());
@@ -41,10 +41,11 @@
@Test
public void map_contructor_retains_map()
{
- List<OptionModel> options = Collections.emptyList();
+ List<OptionModel<String>> options = Collections.emptyList();
Map<String, String> attributes = Collections.emptyMap();
- OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, attributes);
+ OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options,
+ attributes);
assertSame(group.getAttributes(), attributes);
}
@@ -52,10 +53,10 @@
@Test
public void strings_contructor_builds_map()
{
- List<OptionModel> options = Collections.emptyList();
+ List<OptionModel<String>> options = Collections.emptyList();
- OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, "fred",
- "flintstone", "barney", "rubble");
+ OptionGroupModel<String> group = new OptionGroupModelImpl<String>("Label", true, options,
+ "fred", "flintstone", "barney", "rubble");
Map<String, String> attributes = group.getAttributes();
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/OptionModelImplTest.java Sun Feb 4 06:06:46 2007
@@ -26,14 +26,14 @@
@Test
public void basics()
{
- OptionModel model = new OptionModelImpl("Label", false, this);
+ OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this);
assertEquals(model.getLabel(), "Label");
assertFalse(model.isDisabled());
assertSame(model.getValue(), this);
assertNull(model.getAttributes());
- model = new OptionModelImpl("Fred", true, "fred");
+ model = new OptionModelImpl<String>("Fred", true, "fred");
assertEquals(model.getLabel(), "Fred");
assertTrue(model.isDisabled());
@@ -44,8 +44,8 @@
@Test
public void attributes_as_extra_parameters()
{
- OptionModel model = new OptionModelImpl("Label", false, this, "fred", "flintstone",
- "barney", "rubble");
+ OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this, "fred",
+ "flintstone", "barney", "rubble");
Map<String, String> attributes = model.getAttributes();
@@ -59,7 +59,7 @@
{
Map<String, String> attributes = Collections.emptyMap();
- OptionModel model = new OptionModelImpl("Label", false, this, attributes);
+ OptionModel<?> model = new OptionModelImpl<Object>("Label", false, this, attributes);
assertSame(model.getAttributes(), attributes);
}
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java Sun Feb 4 06:06:46 2007
@@ -133,7 +133,7 @@
@Test
public void to_option_models()
{
- List<OptionModel> options = TapestryUtils.toOptionModels("UK,USA,DE=Germany");
+ List<OptionModel<String>> options = TapestryUtils.toOptionModels("UK,USA,DE=Germany");
assertEquals(options.size(), 3);
@@ -150,7 +150,7 @@
@Test
public void whitespace_around_terms_is_trimmed()
{
- List<OptionModel> options = TapestryUtils.toOptionModels(" UK , USA , DE=Germany ");
+ List<OptionModel<String>> options = TapestryUtils.toOptionModels(" UK , USA , DE=Germany ");
assertEquals(options.size(), 3);
Added: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java?view=auto&rev=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java (added)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java Sun Feb 4 06:06:46 2007
@@ -0,0 +1,111 @@
+// 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.internal.beaneditor;
+
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tapestry.AnnotationProvider;
+import org.apache.tapestry.Validator;
+import org.apache.tapestry.internal.services.CompoundalidatorGenerator;
+import org.apache.tapestry.services.ValidatorGenerator;
+import org.apache.tapestry.validator.Max;
+import org.apache.tapestry.validator.Min;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class CompoundValidatorGeneratorTest extends Assert
+{
+ @Test
+ public void no_validator()
+ {
+ final AnnotationProvider provider = new AnnotationProvider()
+ {
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+ {
+ return null;
+ }
+
+ };
+ ValidatorGenerator g1 = new ValidatorGenerator()
+ {
+
+ public List<? extends Validator> buildValidators(Class propertyType,
+ AnnotationProvider annotationProvider)
+ {
+ assertSame(provider, annotationProvider);
+ return null;
+ }
+
+ };
+ ValidatorGenerator g2 = new ValidatorGenerator()
+ {
+
+ public List<? extends Validator> buildValidators(Class propertyType,
+ AnnotationProvider annotationProvider)
+ {
+ assertSame(provider, annotationProvider);
+ return null;
+ }
+
+ };
+ List<ValidatorGenerator> generators = Arrays.asList(g1, g2);
+ ValidatorGenerator gen = new CompoundalidatorGenerator(generators);
+ assertNull(gen.buildValidators(Object.class, provider));
+ }
+
+ @Test
+ public void two_validators()
+ {
+ final AnnotationProvider provider = new AnnotationProvider()
+ {
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
+ {
+ return null;
+ }
+
+ };
+ ValidatorGenerator g1 = new ValidatorGenerator()
+ {
+
+ public List<? extends Validator> buildValidators(Class propertyType,
+ AnnotationProvider annotationProvider)
+ {
+ assertSame(provider, annotationProvider);
+ return Arrays.asList(new Min(10));
+ }
+
+ };
+ ValidatorGenerator g2 = new ValidatorGenerator()
+ {
+
+ public List<? extends Validator> buildValidators(Class propertyType,
+ AnnotationProvider annotationProvider)
+ {
+ assertSame(provider, annotationProvider);
+ return Arrays.asList(new Max(12));
+ }
+
+ };
+ List<ValidatorGenerator> generators = Arrays.asList(g1, g2);
+ ValidatorGenerator gen = new CompoundalidatorGenerator(generators);
+ List<? extends Validator> validators = gen.buildValidators(Object.class, provider);
+ assertEquals(validators.size(), 2);
+ }
+
+}
Propchange: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/beaneditor/CompoundValidatorGeneratorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java?view=diff&rev=503409&r1=503165&r2=503409
==============================================================================
--- tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/branches/kt-20070204-IDE-support/src/test/java/org/apache/tapestry/internal/services/FieldValidatorImplTest.java Sun Feb 4 06:06:46 2007
@@ -16,9 +16,12 @@
import org.apache.tapestry.Field;
import org.apache.tapestry.FieldValidator;
+import org.apache.tapestry.ValidationException;
import org.apache.tapestry.Validator;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
import org.apache.tapestry.ioc.MessageFormatter;
+import org.apache.tapestry.validator.Max;
+import org.apache.tapestry.validator.Min;
import org.testng.annotations.Test;
/**
@@ -26,83 +29,200 @@
*/
public class FieldValidatorImplTest extends InternalBaseTestCase
{
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("serial")
@Test
public void null_value_skipped() throws Exception
{
- Field field = newField();
- MessageFormatter formatter = newMessageFormatter();
- Validator validator = newValidator();
+ Field field = null;
+ FieldValidatorMessages messages = new FieldValidatorMessages()
+ {
+ public MessageFormatter get(Field field, Validator validator)
+ {
+ return null;
+ }
+
+ };
+ Validator<Object> validator = new NoOpValidator<Object>()
+ {
+
+ @Override
+ public void validate(Field field, MessageFormatter formatter, Object value)
+ throws ValidationException
+ {
+ fail();
+ }
+ };
- train_invokeIfBlank(validator, false);
-
- replay();
-
- FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+ FieldValidator<Object> fv = new FieldValidatorImpl<Object>(field, messages, validator);
fv.validate(null);
-
- verify();
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings("serial")
@Test
public void blank_value_skipped() throws Exception
{
- Field field = newField();
- MessageFormatter formatter = newMessageFormatter();
- Validator validator = newValidator();
-
- train_invokeIfBlank(validator, false);
-
- replay();
+ Field field = null;
+ FieldValidatorMessages messages = new FieldValidatorMessages()
+ {
+ public MessageFormatter get(Field field, Validator validator)
+ {
+ return null;
+ }
+
+ };
+ Validator<Object> validator = new NoOpValidator<Object>()
+ {
+
+ @Override
+ public void validate(Field field, MessageFormatter formatter, Object value)
+ throws ValidationException
+ {
+ fail();
+ }
+ };
- FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+ FieldValidator<Object> fv = new FieldValidatorImpl<Object>(field, messages, validator);
fv.validate("");
- verify();
}
- @SuppressWarnings("unchecked")
@Test
- public void nonmatching_value_type_skipped() throws Exception
+ public void single_validator() throws Exception
{
- Field field = newField();
- MessageFormatter formatter = newMessageFormatter();
- Validator validator = newValidator();
- Integer value = 15;
-
- train_invokeIfBlank(validator, true);
- train_getValueType(validator, String.class);
-
- replay();
-
- FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
-
- fv.validate(value);
+ final Field field = new NoOpField()
+ {
- verify();
+ @Override
+ public String getLabel()
+ {
+ return "foo";
+ }
+
+ };
+ final Min min = new Min(10);
+ FieldValidatorMessages messages = new FieldValidatorMessages()
+ {
+ public MessageFormatter get(Field field2, Validator validator)
+ {
+ assertSame(field2, field);
+ assertSame(validator, min);
+ return new MessageFormatter()
+ {
+
+ public String format(Object... args)
+ {
+ return String.format("%2$s must be at least %1$s", args);
+ }
+
+ };
+ }
+
+ };
+ FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages, min);
+ fv.validate(10);
+ fv.validate(11);
+ try
+ {
+ fv.validate(9);
+ unreachable();
+ }
+ catch (ValidationException ex)
+ {
+ assertEquals(ex.getMessage(), "foo must be at least 10");
+ }
}
- @SuppressWarnings("unchecked")
@Test
- public void value_type_check_skipped_for_null_values() throws Exception
+ public void two_validators() throws Exception
{
- Field field = newField();
- MessageFormatter formatter = newMessageFormatter();
- Validator validator = newValidator();
+ final Field field = new NoOpField()
+ {
- train_invokeIfBlank(validator, true);
-
- validator.validate(field, null, formatter, null);
-
- replay();
-
- FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator);
+ @Override
+ public String getLabel()
+ {
+ return "foo";
+ }
+
+ };
+ final Min min = new Min(10);
+ final Max max = new Max(12);
+ FieldValidatorMessages messages = new FieldValidatorMessages()
+ {
+ public MessageFormatter get(Field field2, Validator validator)
+ {
+ assertSame(field2, field);
+ if (validator == min)
+ {
+ return null;
+ }
+ return validator == max ? new MessageFormatter()
+ {
+
+ public String format(Object... args)
+ {
+ return String.format("%2$s must be at most %1$s", args);
+ }
+
+ } : null;
+ }
+
+ };
+ FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages, min, max);
+ fv.validate(10);
+ fv.validate(11);
+ fv.validate(12);
+ try
+ {
+ fv.validate(13);
+ unreachable();
+ }
+ catch (ValidationException ex)
+ {
+ assertEquals(ex.getMessage(), "foo must be at most 12");
+ }
+ FieldValidator<Number> fv2 = new FieldValidatorImpl<Number>(field, messages, max, min);
+ fv2.validate(10);
+ fv2.validate(11);
+ fv2.validate(12);
+ try
+ {
+ fv2.validate(13);
+ unreachable();
+ }
+ catch (ValidationException ex)
+ {
+ assertEquals(ex.getMessage(), "foo must be at most 12");
+ }
+ }
- fv.validate(null);
+ @Test
+ public void null_validators() throws Exception
+ {
+ final Field field = new NoOpField()
+ {
- verify();
+ @Override
+ public String getLabel()
+ {
+ return "foo";
+ }
+
+ };
+ FieldValidatorMessages messages = new FieldValidatorMessages()
+ {
+ public MessageFormatter get(Field field2, Validator validator)
+ {
+ return null;
+ }
+
+ };
+ FieldValidator<Number> fv = new FieldValidatorImpl<Number>(field, messages,
+ (Validator<? super Number>[]) null);
+ fv.validate(10);
+ fv.validate(11);
}
+
}