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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to