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