You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2010/01/20 07:09:39 UTC
svn commit: r901075 - in /labs/magma/trunk:
beans-richtext/src/main/java/org/apache/magma/beans/
foundation-beans-view/src/main/java/org/apache/magma/view/
foundation-beans/src/main/java/org/apache/magma/view/
foundation-database/src/main/java/org/apac...
Author: simoneg
Date: Wed Jan 20 06:08:38 2010
New Revision: 901075
URL: http://svn.apache.org/viewvc?rev=901075&view=rev
Log:
Layers on validation
Added:
labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/
labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/MagDefaultLayers.java
- copied, changed from r827961, labs/magma/trunk/foundation-beans-view/src/main/java/org/apache/magma/view/MagDefaultLayers.java
Removed:
labs/magma/trunk/foundation-beans-view/src/main/java/org/apache/magma/view/MagDefaultLayers.java
Modified:
labs/magma/trunk/beans-richtext/src/main/java/org/apache/magma/beans/RichTextString.java
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/AddDefaultJPAValidation.aj
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidationInHandler.aj
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidatorInPropertyInfo.aj
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/CompoundValidator.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/Validators.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Email.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/FloatingPointRange.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Length.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/MagValExactValue.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Range.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Regex.java
labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Required.java
labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/BaseConverterValidationTest.java
labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/TestValidationClass.java
labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/ValidationMapTest.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/htmlpieces/AbstractSelectionHtmlFormPiece.java
labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js
Modified: labs/magma/trunk/beans-richtext/src/main/java/org/apache/magma/beans/RichTextString.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/beans-richtext/src/main/java/org/apache/magma/beans/RichTextString.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/beans-richtext/src/main/java/org/apache/magma/beans/RichTextString.java (original)
+++ labs/magma/trunk/beans-richtext/src/main/java/org/apache/magma/beans/RichTextString.java Wed Jan 20 06:08:38 2010
@@ -50,7 +50,7 @@
* @param property The property this instance is used on.
*/
public void bindProperty(PropertyInfo property) {
- CompoundValidator<Object> val = property.getValidator();
+ CompoundValidator val = property.getValidator();
if (val != null) {
this.validator = val.getValidator(RichTextValidator.class);
}
Copied: labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/MagDefaultLayers.java (from r827961, labs/magma/trunk/foundation-beans-view/src/main/java/org/apache/magma/view/MagDefaultLayers.java)
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/MagDefaultLayers.java?p2=labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/MagDefaultLayers.java&p1=labs/magma/trunk/foundation-beans-view/src/main/java/org/apache/magma/view/MagDefaultLayers.java&r1=827961&r2=901075&rev=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-beans-view/src/main/java/org/apache/magma/view/MagDefaultLayers.java (original)
+++ labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/view/MagDefaultLayers.java Wed Jan 20 06:08:38 2010
@@ -1,9 +1,13 @@
package org.apache.magma.view;
+// TODO : rename in MagDefaultGroups
+// TODO : move to beans package
+// TODO : is there a better way than strings for this? Like a typesafe enum? enum based on classes?
public class MagDefaultLayers {
public static final String LIST = "list";
public static final String DEFAULT = "default";
public static final String ALL = "all";
+ public static final String NONE = "--none--";
}
Modified: labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/AddDefaultJPAValidation.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/AddDefaultJPAValidation.aj?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/AddDefaultJPAValidation.aj (original)
+++ labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/AddDefaultJPAValidation.aj Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.database;
import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.MagDefaultLayers;
import java.beans.PropertyDescriptor;
import org.apache.magma.validation.AddValidatorInPropertyInfo;
import javax.persistence.Entity;
@@ -38,6 +39,8 @@
return jpaTransient;
}
+ public static final String MagDefaultLayers.DATABASE = "database";
+
after(PropertyInfo info, PropertyDescriptor desc, Class beanClass) :
execution(* PropertyInfo.init(PropertyDescriptor, Class)) && this(info) && args(desc, beanClass) {
@@ -63,7 +66,7 @@
DatabaseValidator dbv = new DatabaseValidator();
dbv.setLength(255);
- Validators.addValidator(info, dbv);
+ Validators.addValidator(info, dbv, new String[] { MagDefaultLayers.DATABASE });
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidationInHandler.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidationInHandler.aj?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidationInHandler.aj (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidationInHandler.aj Wed Jan 20 06:08:38 2010
@@ -23,22 +23,25 @@
import org.apache.magma.beans.BeanHandler;
import org.apache.magma.basics.MagmaException;
import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.MagDefaultLayers;
public privileged aspect AddValidationInHandler {
- public boolean BeanHandler.needsValidation(String field) {
+ public boolean BeanHandler.needsValidation(String field, String[] layers) {
PropertyInfo property = data.getProperty(field);
if (property == null) throw new MagmaException("Cannot find a property named {0} in class {1}", field, bean.getClass().getName());
- Validator v = property.getValidator();
- return (v != null);
+ CompoundValidator v = property.getValidator();
+ if (v == null) return false;
+ List<Validator> validators = v.getValidators(layers);
+ return validators != null && validators.size() > 0;
}
- public void BeanHandler.validate(String field, Object value) {
+ public void BeanHandler.validate(String field, Object value, String[] layers) {
PropertyInfo property = data.getProperty(field);
if (property == null) throw new MagmaException("Cannot find a property named {0} in class {1}", field, bean.getClass().getName());
- Validator v = property.getValidator();
+ CompoundValidator v = property.getValidator();
if (v != null) {
- List<LocalizableString> errs = v.validate(bean,property,value);
+ List<LocalizableString> errs = v.validate(bean,property,value, layers);
if (errs != null && errs.size() > 0) {
ValidationError err = new ValidationError(errs);
err.setSubject(property);
@@ -47,20 +50,26 @@
}
}
- public void BeanHandler.validate(String field) {
- if (needsValidation(field)) {
+ public void BeanHandler.validate(String field, String[] layers) {
+ if (needsValidation(field, layers)) {
Object val = getValue(field);
- validate(field, val);
+ validate(field, val, layers);
}
}
public void BeanHandler.validate() {
+ validate(new String[] { MagDefaultLayers.ALL });
+ }
+
+
+ // TODO consider layers here
+ public void BeanHandler.validate(String[] layers) {
prepare();
Set<String> names = data.getPropertyNames();
ValidationError err = null;
for (String name : names) {
try {
- validate(name);
+ validate(name, layers);
} catch (ValidationError e) {
if (err == null) {
err = e;
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidatorInPropertyInfo.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidatorInPropertyInfo.aj?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidatorInPropertyInfo.aj (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/AddValidatorInPropertyInfo.aj Wed Jan 20 06:08:38 2010
@@ -18,6 +18,7 @@
import org.apache.magma.basics.utils.AnnotationToInstance;
import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.view.MagDefaultLayers;
import java.beans.PropertyDescriptor;
import java.lang.annotation.Annotation;
@@ -28,13 +29,13 @@
public aspect AddValidatorInPropertyInfo {
- private CompoundValidator<Object> PropertyInfo.validator = null;
+ private CompoundValidator PropertyInfo.validator = null;
- public CompoundValidator<Object> PropertyInfo.getValidator() {
+ public CompoundValidator PropertyInfo.getValidator() {
return this.validator;
}
- void PropertyInfo.setValidator(CompoundValidator<Object> validator) {
+ void PropertyInfo.setValidator(CompoundValidator validator) {
this.validator = validator;
}
@@ -54,13 +55,19 @@
for (Annotation annotation : annotations) {
Validator validator = Validators.getValidatorFor(annotation);
if (validator != null) {
- Validators.addValidator(info, validator);
+ String[] layers = null;
+ try {
+ Method method = annotation.getClass().getMethod("layers");
+ layers = (String[]) method.invoke(annotation);
+ } catch (Exception e) {}
+ Validators.addValidator(info, validator, layers);
}
}
}
+ // TODO this is a mixed converter/formatter/view concern
if (info.getValidator() != null) {
- info.alterMaximumStringSize(info.getValidator().maxCharacterLength());
+ info.alterMaximumStringSize(info.getValidator().maxCharacterLength(new String[] { MagDefaultLayers.ALL }));
}
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/CompoundValidator.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/CompoundValidator.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/CompoundValidator.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/CompoundValidator.java Wed Jan 20 06:08:38 2010
@@ -22,23 +22,38 @@
import org.apache.magma.validation.validators.RangeValidator;
import org.apache.magma.validation.validators.Required;
import org.apache.magma.validation.validators.RequiredValidator;
+import org.apache.magma.view.MagDefaultLayers;
+
+import com.sun.org.apache.xerces.internal.impl.dtd.models.DFAContentModel;
import java.util.ArrayList;
import java.util.List;
-public class CompoundValidator<C> implements Validator<C> {
+public class CompoundValidator {
- private List<Validator<? extends C>> validators = null;
+ private List<Validator> validators = null;
+ private List<String[]> layers = null;
+ private String[] defaultLayers;
+
+ public void addValidator(Validator validator) {
+ if (validators == null) validators = new ArrayList<Validator>(1);
+ if (layers == null) layers = new ArrayList<String[]>();
+ validators.add(validator);
+ layers.add(null);
+ }
- public void addValidator(Validator<? extends C> validator) {
- if (validators == null) validators = new ArrayList<Validator<? extends C>>(1);
+ public void addValidator(Validator validator, String[] onlayers) {
+ if (validators == null) validators = new ArrayList<Validator>(1);
+ if (layers == null) layers = new ArrayList<String[]>();
validators.add(validator);
+ layers.add(onlayers);
}
- public List<LocalizableString> validate(Object bean, PropertyInfo property, C value) {
+ public List<LocalizableString> validate(Object bean, PropertyInfo property, Object value, String[] onlayers) {
List<LocalizableString> errs = null;
if (this.validators != null) {
- for (Validator validator : this.validators) {
+ List<Validator> subvalidators = getValidators(onlayers);
+ for (Validator validator : subvalidators) {
List<LocalizableString> err = validator.validate(bean, property, value);
if (err != null) {
if (errs == null) errs = new ArrayList<LocalizableString>();
@@ -49,38 +64,69 @@
return errs;
}
- public List<Validator<? extends C>> getValidators() {
+ public List<Validator> getValidators() {
return validators;
}
- public <T extends Validator<? extends C>> T getValidator(Class<T> clazz) {
- if (this.validators == null) return null;
- for (Validator<? extends C> val : this.validators) {
- if (clazz.isAssignableFrom(val.getClass())) {
- return (T)val;
+ public List<Validator> getValidators(String[] onlayers) {
+ List<Validator> ret = new ArrayList<Validator>();
+ for (int i = 0; i < validators.size(); i++) {
+ String[] vallayers = layers.get(i);
+ if (vallayers == null) vallayers = defaultLayers;
+ if (vallayers == null || isOnLayer(vallayers, onlayers)) {
+ ret.add(validators.get(i));
+ continue;
}
}
- return null;
+ return ret;
}
- protected <T extends Validator> T rawGetValidator(Class<T> clazz) {
+ protected boolean isOnLayer(String[] valLayers, String[] searchLayers) {
+ if (searchLayers == null || searchLayers.length == 0) return true;
+ boolean res = false;
+ for (String aclayer : searchLayers) {
+ if (aclayer.charAt(0) == '!') {
+ if (isOnLayer(valLayers, aclayer.substring(1))) return false;
+ } else {
+ if (isOnLayer(valLayers, aclayer)) res = true;
+ }
+ }
+ return res;
+ }
+
+ protected boolean isOnLayer(String[] valLayers, String searchLayer) {
+ if (searchLayer.equalsIgnoreCase(MagDefaultLayers.ALL)) return true;
+ if (valLayers == null) return false;
+ for (String aclayer : valLayers) {
+ if (aclayer.equalsIgnoreCase(searchLayer)) return true;
+ }
+ return false;
+ }
+
+
+ public <T extends Validator> T getValidator(Class<T> clazz) {
if (this.validators == null) return null;
- for (Validator<? extends C> val : this.validators) {
+ for (Validator val : this.validators) {
if (clazz.isAssignableFrom(val.getClass())) {
return (T)val;
}
}
return null;
}
-
- public boolean acceptsNulls() {
- return rawGetValidator(RequiredValidator.class) == null;
+
+ public boolean acceptsNulls(String[] onlayers) {
+ List<Validator> validators = getValidators(onlayers);
+ for (Validator validator : validators) {
+ if (validator instanceof RequiredValidator) return false;
+ }
+ return true;
}
- public int maxCharacterLength() {
+ public int maxCharacterLength(String[] onlayers) {
int size = -1;
- for (Validator<?> val : this.validators) {
+ List<Validator> validators = getValidators(onlayers);
+ for (Validator<?> val : validators) {
int length = val.maxCharacterLength();
if (length != -1) {
if (size == -1) {
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/Validators.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/Validators.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/Validators.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/Validators.java Wed Jan 20 06:08:38 2010
@@ -55,11 +55,11 @@
AnnotationToInstance.setup(annotation, ret);
}
- public static void addValidator(PropertyInfo info, Validator validator) {
+ public static void addValidator(PropertyInfo info, Validator validator, String[] layers) {
if (info.getValidator() == null) {
- info.setValidator(new CompoundValidator<Object>());
+ info.setValidator(new CompoundValidator());
}
- info.getValidator().addValidator(validator);
+ info.getValidator().addValidator(validator, layers);
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Email.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Email.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Email.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Email.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -27,5 +28,5 @@
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Email {
-
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/FloatingPointRange.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/FloatingPointRange.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/FloatingPointRange.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/FloatingPointRange.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -30,5 +31,6 @@
public double min() default Double.MIN_VALUE;
public double max() default Double.MAX_VALUE;
-
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
+
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Length.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Length.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Length.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Length.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -30,5 +31,6 @@
public int min() default Integer.MIN_VALUE;
public int max() default Integer.MAX_VALUE;
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/MagValExactValue.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/MagValExactValue.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/MagValExactValue.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/MagValExactValue.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -29,5 +30,6 @@
public @interface MagValExactValue {
public String value();
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Range.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Range.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Range.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Range.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -30,5 +31,6 @@
public long min() default Long.MIN_VALUE;
public long max() default Long.MAX_VALUE;
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Regex.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Regex.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Regex.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Regex.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -29,5 +30,6 @@
public @interface Regex {
public String value();
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Required.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Required.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Required.java (original)
+++ labs/magma/trunk/foundation-validation/src/main/java/org/apache/magma/validation/validators/Required.java Wed Jan 20 06:08:38 2010
@@ -17,6 +17,7 @@
package org.apache.magma.validation.validators;
import org.apache.magma.validation.ValidationAnnotation;
+import org.apache.magma.view.MagDefaultLayers;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -27,5 +28,5 @@
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Required {
-
+ public String[] layers() default { MagDefaultLayers.DEFAULT };
}
Modified: labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/BaseConverterValidationTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/BaseConverterValidationTest.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/BaseConverterValidationTest.java (original)
+++ labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/BaseConverterValidationTest.java Wed Jan 20 06:08:38 2010
@@ -29,11 +29,11 @@
public class BaseConverterValidationTest {
- private CompoundValidator<Object> compound;
+ private CompoundValidator compound;
@Before
public void setupValidate() {
- compound = new CompoundValidator<Object>();
+ compound = new CompoundValidator();
compound.addValidator(new RequiredValidator());
compound.addValidator(new RangeValidator(0, 10));
@@ -43,23 +43,23 @@
@Test
public void workingValidations() {
- nullOrthrow(compound.validate(null,null,2));
- nullOrthrow(compound.validate(null,null,5));
+ nullOrthrow(compound.validate(null,null,2, null));
+ nullOrthrow(compound.validate(null,null,5, null));
}
@Test(expected=ValidationError.class)
public void fails1() {
- nullOrthrow(compound.validate(null,null,null));
+ nullOrthrow(compound.validate(null,null,null, null));
}
@Test(expected=ValidationError.class)
public void fails2() {
- nullOrthrow(compound.validate(null,null,-1));
+ nullOrthrow(compound.validate(null,null,-1, null));
}
@Test(expected=ValidationError.class)
public void fails3() {
- nullOrthrow(compound.validate(null,null,11));
+ nullOrthrow(compound.validate(null,null,11, null));
}
private void nullOrthrow(List<LocalizableString> validate) {
Modified: labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/TestValidationClass.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/TestValidationClass.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/TestValidationClass.java (original)
+++ labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/TestValidationClass.java Wed Jan 20 06:08:38 2010
@@ -37,7 +37,7 @@
}
@Required
- @Range(min=1, max=10)
+ @Range(min=1, max=10, layers="test")
public void setIntegerField(int integerField) {
this.integerField = integerField;
}
Modified: labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/ValidationMapTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/ValidationMapTest.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/ValidationMapTest.java (original)
+++ labs/magma/trunk/foundation-validation/src/test/java/org/apache/magma/validation/ValidationMapTest.java Wed Jan 20 06:08:38 2010
@@ -33,9 +33,9 @@
BeanData d = bean.beanData();
PropertyInfo property = d.getProperty("integerField");
- CompoundValidator<Object> c = property.getValidator();
+ CompoundValidator c = property.getValidator();
assertNotNull(c);
- List<Validator<? extends Object>> validators = c.getValidators();
+ List<Validator> validators = c.getValidators();
assertNotNull(validators);
assertTrue(validators.size() > 0);
}
@@ -64,6 +64,30 @@
}
@Test
+ public void validOnOneLayer() throws Exception {
+ TestValidationClass bean = new TestValidationClass();
+ BeanHandler handler = bean.handler();
+ handler.setValue("integerField", 5);
+ handler.setValue("stringField", "a");
+ handler.validate(new String[] { "test" });
+ handler.commit();
+
+ assertEquals("a", bean.getStringField());
+ assertEquals(5, bean.getIntegerField());
+ }
+
+ @Test(expected=ValidationError.class)
+ public void wrongOnOneLayer() throws Exception {
+ TestValidationClass bean = new TestValidationClass();
+ BeanHandler handler = bean.handler();
+ handler.setValue("integerField", 0);
+ handler.setValue("stringField", "ciao");
+ handler.validate(new String[] { "test" });
+ handler.commit();
+ }
+
+
+ @Test
public void jointException() throws Exception {
try {
TestValidationClass bean = new TestValidationClass();
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanFormProducer.java Wed Jan 20 06:08:38 2010
@@ -57,13 +57,14 @@
protected String code;
protected BeanHandler handler;
protected List<FormAction> actions;
- protected boolean withoutValidation;
+ protected String[] validationLayers;
public BeanFormProducer(Object bean, List<LocalizableStringWithSubject> errors, String code, String... layers) {
super(bean, layers);
this.handler = this.bean.handler();
this.errors = errors;
this.code = code;
+ this.validationLayers = layers;
}
public void setActions(List<FormAction> actions) {
@@ -102,7 +103,7 @@
beanStyle = new BeanStyleTable();
}
beanStyle.setWithCustomClasses(true);
- beanStyle.setWithoutValidation(this.withoutValidation);
+ beanStyle.setValidationLayers(this.validationLayers);
out.write("<form name=\"form" + this.code + "\" action=\"filled\" method=\"post\" enctype=\"multipart/form-data\" accept-charset=\"utf-8\"><div>");
out.write("<input type=\"submit\" class=\"DefaultHiddenSubmit\" value=\"-\"/>");
out.flush();
@@ -169,23 +170,19 @@
out.append("<label for=\"" + node.getCorrespondingFieldId() + "\">");
out.append(super.labelFor(gennode));
PropertyInfo property = node.getProperty();
- if (!withoutValidation) {
- CompoundValidator allvals = property.getValidator();
- if (allvals != null && !allvals.acceptsNulls()) {
- out.append("<span class=\"NotNullableSign\">*</span>");
- }
- List<LocalizableString> errs = findErrors(property);
- if (errs.size() > 0) {
- createInlineErrorsOutput(node, out, errs);
- }
- out.append("</label>");
- if (errs.size() > 0) {
- createBlockErrorsOutput(node, out, errs);
- }
- sentErrors.addAll(errs);
- } else {
- out.append("</label>");
+ CompoundValidator allvals = property.getValidator();
+ if (allvals != null && !allvals.acceptsNulls(this.validationLayers)) {
+ out.append("<span class=\"NotNullableSign\">*</span>");
}
+ List<LocalizableString> errs = findErrors(property);
+ if (errs.size() > 0) {
+ createInlineErrorsOutput(node, out, errs);
+ }
+ out.append("</label>");
+ if (errs.size() > 0) {
+ createBlockErrorsOutput(node, out, errs);
+ }
+ sentErrors.addAll(errs);
return out.toString();
}
@@ -249,14 +246,16 @@
return ret;
}
- public boolean isWithoutValidation() {
- return withoutValidation;
+ public String[] getValidationLayers() {
+ return validationLayers;
}
- public void setWithoutValidation(boolean withoutValidation) {
- this.withoutValidation = withoutValidation;
+ public void setValidationLayers(String[] validationLayers) {
+ this.validationLayers = validationLayers;
}
+
+
/*
@Override
protected void createLabelNodeOutput(LabelNode node, Writer out) throws IOException {
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java Wed Jan 20 06:08:38 2010
@@ -23,6 +23,7 @@
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
@@ -62,7 +63,7 @@
protected RootNode root;
protected StringBuilder buff;
protected boolean withCustomClasses;
- protected boolean withoutValidation;
+ protected String[] validationLayers;
protected int maxFieldSize = 80;
protected String outerCssClass = null;
@@ -94,8 +95,8 @@
this.elementCssClass = elementCssClass;
}
- public void setWithoutValidation(boolean withoutValidation) {
- this.withoutValidation = withoutValidation;
+ public void setValidationLayers(String[] validationLayers) {
+ this.validationLayers = validationLayers;
}
@LateConfigurationTrigger
@@ -216,7 +217,7 @@
if (withCustomClasses) {
PropertyInfo property = node.getProperty();
CompoundValidator allvals = property.getValidator();
- if (allvals != null && !allvals.acceptsNulls() && !withoutValidation) {
+ if (allvals != null && !allvals.acceptsNulls(this.validationLayers)) {
baseclass += " NotNullable";
}
if (!property.isWriteable()) {
@@ -262,9 +263,9 @@
baseclass += " ForBean";
}
}
- if (withCustomClasses && !withoutValidation) {
+ if (withCustomClasses) {
CompoundValidator allvals = node.getProperty().getValidator();
- if (allvals != null && !allvals.acceptsNulls()) {
+ if (allvals != null && !allvals.acceptsNulls(this.validationLayers)) {
baseclass += " NotNullable";
}
}
@@ -305,7 +306,7 @@
}
public String getStyleKey() {
- return "CC" + this.withCustomClasses + "WV" + this.withoutValidation + "MF" + this.maxFieldSize + "CSS" + this.outerCssClass + this.elementCssClass;
+ return "CC" + this.withCustomClasses + "VL" + (this.validationLayers == null ? "null" : Arrays.toString(this.validationLayers)) + "MF" + this.maxFieldSize + "CSS" + this.outerCssClass + this.elementCssClass;
}
protected void openOuterContainer() {
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java Wed Jan 20 06:08:38 2010
@@ -69,7 +69,7 @@
protected BeanStyle beanStyle;
- protected boolean dontValidate = false;
+ protected String[] validationLayers = null;
// Delegate fields
protected String outerCssClass = null;
@@ -141,7 +141,7 @@
producer.setBeanStyle(this.beanStyle);
producer.setOuterCssClass(outerCssClass);
producer.setElementCssClass(elementCssClass);
- producer.setWithoutValidation(dontValidate);
+ producer.setValidationLayers(validationLayers);
producer.compoundWith(prodHeader, CompoundType.BEFORE);
producer.compoundWith(prodFooter, CompoundType.AFTER);
return producer;
@@ -250,7 +250,7 @@
void checkValidity() {
for (BeanHandler handler : handlers.values()) {
try {
- if (!dontValidate) handler.validate();
+ handler.validate(this.validationLayers);
handler.commit();
} catch (ValidationError ve) {
List<LocalizableString> messages = ve.getMessages();
@@ -349,14 +349,15 @@
this.elementCssClass = elementCssClass;
}
- public boolean isDontValidate() {
- return dontValidate;
+ public String[] getValidationLayers() {
+ return validationLayers;
}
@LateConfigurable
- public void setDontValidate(boolean dontValidate) {
- this.dontValidate = dontValidate;
+ public SmartForm setValidationLayers(String[] validationLayers) {
+ this.validationLayers = validationLayers;
+ return this;
}
-
+
}
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java Wed Jan 20 06:08:38 2010
@@ -236,7 +236,7 @@
SmartForm filterform = new SmartForm(this.sessionReservedQbe, "hiddenFiltered");
filterform.setBeanStyle(new BeanStyleDyna());
filterform.setLayers(MagDefaultLayers.LIST);
- filterform.setDontValidate(true);
+ filterform.setValidationLayers(new String[] { MagDefaultLayers.NONE });
return filterform;
}
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/htmlpieces/AbstractSelectionHtmlFormPiece.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/htmlpieces/AbstractSelectionHtmlFormPiece.java?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/htmlpieces/AbstractSelectionHtmlFormPiece.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/htmlpieces/AbstractSelectionHtmlFormPiece.java Wed Jan 20 06:08:38 2010
@@ -64,11 +64,12 @@
}
String acval = property == null ? conv.to(value) : property.toString(value);
if (property != null) {
- CompoundValidator<Object> val = property.getValidator();
- boolean needsNull = val == null || (val.acceptsNulls() && !elements.contains(null));
- if (!needsNull && getForm() != null) {
- needsNull = getForm().isDontValidate();
+ CompoundValidator val = property.getValidator();
+ String[] vl = null;
+ if (getForm() != null) {
+ vl = getForm().getValidationLayers();
}
+ boolean needsNull = val == null || (val.acceptsNulls(vl) && !elements.contains(null));
if (needsNull) {
createDropDownOption(out, null, property.toString(null), acval);
}
Modified: labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js?rev=901075&r1=901074&r2=901075&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js (original)
+++ labs/magma/trunk/website-beansview/src/main/resources/org/apache/magma/website/beansview/dynaForm.js Wed Jan 20 06:08:38 2010
@@ -46,16 +46,22 @@
$(this).addClass('block_' + rc);
form.df_labels[rc] = ($('label',labdiv).text());
form.df_blocks[rc] = this;
- var val = $('input:radio:checked,input:checkbox:checked,input:text,select', this).val();
+ var input = $('input:radio:checked,input:checkbox:checked,input:text,select', this);
+ var val = input.val();
+ this.preval = "on " + input + " got:" + val;
+ this.preinput = input;
if (val && val != '') {
DynaForm_set(form, rc);
this.style.display='block';
} else {
form.df_set[rc] = false;
+ this.style.display='none';
}
rc++;
}
- if (!nn) this.style.display='block';
+ if (!nn) {
+ this.style.display='block';
+ }
});
var cookie = DynaForm_getCookie(form);
if (cookie != null && cookie != '') {
@@ -77,12 +83,11 @@
}
DynaForm_setCookie(form, cookie);
}
- this.df_select = $('<div class="MagmaDynaSelection"><select/></div>');
+ this.df_select = $('<div class="MagmaDynaSelection"><select><option>---</option></select></div>');
$(this).parent().append(this.df_select);
DynaForm_resetSelection(this);
$('select',this.df_select).change(DynaForm_selected);
});
-
});
DynaForm_resetSelection = function(form) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org