You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2008/10/11 22:07:20 UTC

svn commit: r703722 [2/2] - in /myfaces/extensions/validator/trunk: core/src/main/java/org/apache/myfaces/extensions/validator/core/ core/src/main/java/org/apache/myfaces/extensions/validator/core/annotation/ core/src/main/java/org/apache/myfaces/exten...

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Sat Oct 11 13:07:19 2008
@@ -26,8 +26,8 @@
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.core.el.ELHelper;
 import org.apache.myfaces.extensions.validator.core.el.AbstractELHelperFactory;
-import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
-import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractorFactory;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractorFactory;
 import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
 import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
@@ -35,7 +35,6 @@
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.util.Map;
-import java.lang.annotation.Annotation;
 
 
 /**
@@ -44,12 +43,12 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class ExtValUtils
 {
-    public static ValidationStrategy getValidationStrategyForAnnotation(Annotation annotation)
+    public static ValidationStrategy getValidationStrategyForMetaData(String metaDataKey)
     {
-        return ((ClassMappingFactory<Annotation, ValidationStrategy>) ExtValContext.getContext()
+        return ((ClassMappingFactory<Object, ValidationStrategy>) ExtValContext.getContext()
                 .getFactoryFinder()
                 .getFactory(FactoryNames.VALIDATION_STRATEGY_FACTORY, ClassMappingFactory.class))
-                .create(annotation);
+                .create(metaDataKey);
     }
 
     public static MetaDataTransformer getMetaDataTransformerForValidationStrategy(ValidationStrategy validationStrategy)
@@ -60,10 +59,10 @@
                     .create(validationStrategy);
     }
 
-    public static AnnotationExtractor getAnnotationExtractor()
+    public static MetaDataExtractor getAnnotationExtractor()
     {
             return ExtValContext.getContext().getFactoryFinder()
-                .getFactory(FactoryNames.COMPONENT_ANNOTATION_EXTRACTOR_FACTORY, AnnotationExtractorFactory.class)
+                .getFactory(FactoryNames.COMPONENT_META_DATA_EXTRACTOR_FACTORY, MetaDataExtractorFactory.class)
                 .create();
     }
 
@@ -90,4 +89,4 @@
         return ExtValContext.getContext().getFactoryFinder()
             .getFactory(FactoryNames.EL_HELPER_FACTORY, AbstractELHelperFactory.class).create();
     }
-}
\ No newline at end of file
+}

Added: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/extractor/DefaultPropertyScanningMetaDataExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/extractor/DefaultPropertyScanningMetaDataExtractor.java?rev=703722&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/extractor/DefaultPropertyScanningMetaDataExtractor.java (added)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/extractor/DefaultPropertyScanningMetaDataExtractor.java Sat Oct 11 13:07:19 2008
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.baseval.annotation.extractor;
+
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.SourceInformation;
+import org.apache.myfaces.extensions.validator.core.metadata.DefaultSourceInformation;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.DefaultComponentMetaDataExtractor;
+import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+
+import javax.faces.context.FacesContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class DefaultPropertyScanningMetaDataExtractor extends DefaultComponentMetaDataExtractor
+{
+
+    @Override
+    @ToDo(Priority.MEDIUM)
+    public SourceInformation extract(FacesContext facesContext, Object object)
+    {
+        SourceInformation sourceInformation = new DefaultSourceInformation();
+        //should never occur
+        if (!(object instanceof String))
+        {
+            return sourceInformation;
+        }
+
+        ValueBindingExpression valueBindingExpression = new ValueBindingExpression(((String) object).trim());
+
+        List<MetaDataEntry> metaDataEntries = new ArrayList<MetaDataEntry>();
+
+        Class entityClass = ExtValUtils.getELHelper()
+            .getTypeOfValueBindingForExpression(facesContext, valueBindingExpression.getBaseExpression());
+
+        //TODO complex components
+        sourceInformation.setProperty(
+            PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, valueBindingExpression.getExpressionString());
+
+        /*
+         * find and add annotations
+         */
+        if (entityClass != null)
+        {
+            //TODO map syntax support
+            addPropertyAccessAnnotations(entityClass, valueBindingExpression.getProperty(), sourceInformation);
+            addFieldAccessAnnotations(entityClass, valueBindingExpression.getProperty(), sourceInformation);
+        }
+
+        return sourceInformation;
+    }
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -20,12 +20,11 @@
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.DoubleRange;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -33,15 +32,15 @@
  */
 public class DoubleRangeMetaDataTransformer extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Annotation annotation = annotationEntry.getAnnotation();
+        DoubleRange annotation = metaDataEntry.getValue(DoubleRange.class);
 
-        double minimum = ((DoubleRange)annotation).minimum();
+        double minimum = annotation.minimum();
 
         results.put(CommonMetaDataKeys.RANGE_MIN, minimum);
-        results.put(CommonMetaDataKeys.RANGE_MAX, ((DoubleRange)annotation).maximum());
+        results.put(CommonMetaDataKeys.RANGE_MAX, annotation.maximum());
 
         if(minimum > 0)
         {
@@ -50,4 +49,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -19,9 +19,10 @@
 package org.apache.myfaces.extensions.validator.baseval.metadata.transformer;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.JoinValidation;
-import org.apache.myfaces.extensions.validator.baseval.annotation.extractor.DefaultPropertyScanningAnnotationExtractor;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
+import org.apache.myfaces.extensions.validator.baseval.annotation.extractor.DefaultPropertyScanningMetaDataExtractor;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
@@ -38,11 +39,11 @@
  */
 public class JoinMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
-        AnnotationExtractor extractor = new DefaultPropertyScanningAnnotationExtractor();
+        MetaDataExtractor extractor = new DefaultPropertyScanningMetaDataExtractor();
 
-        String[] targetExpressions = ((JoinValidation)(annotationEntry).getAnnotation()).value();
+        String[] targetExpressions = metaDataEntry.getValue(JoinValidation.class).value();
 
         ValidationStrategy validationStrategy;
         MetaDataTransformer metaDataTransformer;
@@ -51,12 +52,12 @@
 
         for (String targetExpression : targetExpressions)
         {
-            targetExpression = createValidBinding(annotationEntry, targetExpression);
+            targetExpression = createValidBinding(metaDataEntry, targetExpression);
 
-            for (AnnotationEntry entry : extractor
-                                            .extractAnnotations(FacesContext.getCurrentInstance(), targetExpression))
+            for (MetaDataEntry entry : extractor.extract(FacesContext.getCurrentInstance(),
+                                                                    targetExpression).getMetaDataEntries())
             {
-                validationStrategy = ExtValUtils.getValidationStrategyForAnnotation(entry.getAnnotation());
+                validationStrategy = ExtValUtils.getValidationStrategyForMetaData(entry.getKey());
 
                 metaDataTransformer = ExtValUtils.getMetaDataTransformerForValidationStrategy(validationStrategy);
 
@@ -69,14 +70,15 @@
         return results;
     }
 
-    private String createValidBinding(AnnotationEntry annotationEntry, String targetExpression)
+    private String createValidBinding(MetaDataEntry metaDataEntry, String targetExpression)
     {
         if(ExtValUtils.getELHelper().isELTerm(targetExpression))
         {
             return targetExpression;
         }
         
-        ValueBindingExpression baseExpression = new ValueBindingExpression(annotationEntry.getValueBindingExpression());
+        ValueBindingExpression baseExpression = new ValueBindingExpression(
+            metaDataEntry.getProperty(PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, String.class));
         return ValueBindingExpression.replaceOrAddProperty(baseExpression, targetExpression).getExpressionString();
     }
 }

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -20,7 +20,7 @@
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 
@@ -28,6 +28,7 @@
 import javax.persistence.Column;
 import java.util.HashMap;
 import java.util.Map;
+import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -36,10 +37,12 @@
 public class JpaMetaDataTransformer implements MetaDataTransformer
 {
     @ToDo(value = Priority.HIGH, description = "impl. the rest")
-    public Map<String, Object> convertMetaData(AnnotationEntry annotation)
+    public Map<String, Object> convertMetaData(MetaDataEntry metaData)
     {
         Map<String, Object> results = new HashMap<String, Object>();
 
+        Annotation annotation = metaData.getValue(Annotation.class);
+
         if(annotation instanceof Column)
         {
             if(!((Column) annotation).nullable())
@@ -51,7 +54,7 @@
         }
         else if(annotation instanceof Basic)
         {
-            if(!((Basic)annotation).optional())
+            if(!((Basic) annotation).optional())
             {
                 results.put(CommonMetaDataKeys.REQUIRED, true);
             }
@@ -59,4 +62,4 @@
         //TODO impl. the rest!!!
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -21,11 +21,10 @@
 import org.apache.myfaces.extensions.validator.baseval.annotation.Length;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -33,15 +32,15 @@
  */
 public class LengthMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Annotation annotation = annotationEntry.getAnnotation();
+        Length annotation = metaDataEntry.getValue(Length.class);
 
-        int minimum = ((Length)annotation).minimum();
+        int minimum = annotation.minimum();
 
         results.put(CommonMetaDataKeys.MIN_LENGTH, minimum);
-        results.put(CommonMetaDataKeys.MAX_LENGTH, ((Length)annotation).maximum());
+        results.put(CommonMetaDataKeys.MAX_LENGTH, annotation.maximum());
 
         if(minimum > 0)
         {
@@ -50,4 +49,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -20,12 +20,11 @@
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.LongRange;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -33,15 +32,15 @@
  */
 public class LongRangeMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Annotation annotation = annotationEntry.getAnnotation();
+        LongRange annotation = metaDataEntry.getValue(LongRange.class);
 
-        long minimum = ((LongRange)annotation).minimum();
+        long minimum = annotation.minimum();
 
         results.put(CommonMetaDataKeys.RANGE_MIN, minimum);
-        results.put(CommonMetaDataKeys.RANGE_MAX, ((LongRange)annotation).maximum());
+        results.put(CommonMetaDataKeys.RANGE_MAX, annotation.maximum());
 
         if(minimum > 0)
         {
@@ -50,4 +49,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -21,7 +21,7 @@
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.baseval.annotation.Pattern;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
@@ -29,7 +29,6 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Locale;
-import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -37,17 +36,18 @@
  */
 public class PatternMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Annotation annotation = annotationEntry.getAnnotation();
+        Pattern annotation = metaDataEntry.getValue(Pattern.class);
         
-        results.put(CommonMetaDataKeys.PATTERN, ((Pattern)annotation).value());
+        results.put(CommonMetaDataKeys.PATTERN, (annotation).value());
 
-        String validationErrorMsgKey = ((Pattern)annotation).validationErrorMsgKey();
+        String validationErrorMsgKey = (annotation).validationErrorMsgKey();
         Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
 
-        ValidationStrategy validationStrategy = ExtValUtils.getValidationStrategyForAnnotation(annotation);
+        ValidationStrategy validationStrategy =
+            ExtValUtils.getValidationStrategyForMetaData(annotation.annotationType().getName());
 
         String validationErrorMsg = ExtValUtils.getMessageResolverForValidationStrategy(validationStrategy)
             .getMessage(validationErrorMsgKey, currentLocale);

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -19,8 +19,8 @@
 package org.apache.myfaces.extensions.validator.baseval.metadata.transformer;
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
 import org.apache.myfaces.extensions.validator.baseval.annotation.Required;
 
 import java.util.HashMap;
@@ -34,7 +34,7 @@
  */
 public class RequiredMetaDataTransformer extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         results.put(CommonMetaDataKeys.WEAK_REQUIRED, true);
@@ -42,9 +42,9 @@
     }
 
     @Override
-    protected String getSkipExpression(AnnotationEntry annotationEntry)
+    protected String getSkipExpression(MetaDataEntry metaDataEntry)
     {
-        return ((Required)(annotationEntry).getAnnotation()).skipValidation();
+        return metaDataEntry.getValue(Required.class).skipValidation();
     }
 
     //returns the key of the skiped meta-data e.g.
@@ -55,4 +55,4 @@
         skippedMetaDataList.add(CommonMetaDataKeys.WEAK_REQUIRED);
         return skippedMetaDataList;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java Sat Oct 11 13:07:19 2008
@@ -20,14 +20,13 @@
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.Validator;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.List;
 import java.util.ArrayList;
-import java.lang.annotation.Annotation;
 
 /**
  * @author Gerhard Petracek
@@ -35,12 +34,12 @@
  */
 public class ValidatorMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    protected Map<String, Object> convert(AnnotationEntry annotationEntry)
+    protected Map<String, Object> convert(MetaDataEntry metaDataEntry)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Annotation annotation = annotationEntry.getAnnotation();
+        Validator annotation = metaDataEntry.getValue(Validator.class);
 
-        Class[] validators = ((Validator)annotation).value();
+        Class[] validators = annotation.value();
 
         List<String> value = new ArrayList<String>();
 
@@ -57,4 +56,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/DoubleRangeStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/DoubleRangeStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/DoubleRangeStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/DoubleRangeStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,7 +19,7 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.DoubleRange;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidatorAdapter;
 
 import javax.faces.component.UIComponent;
@@ -34,19 +34,17 @@
 {
 
     protected void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
 
-        DoubleRange annotation = annotationEntry
-                .getAnnotation(DoubleRange.class);
+        DoubleRange annotation = metaDataEntry.getValue(DoubleRange.class);
         DoubleRangeValidator doubleRangeValidator = (DoubleRangeValidator)facesContext.getApplication()
                                                         .createValidator("javax.faces.DoubleRange");
 
         doubleRangeValidator.setMinimum(annotation.minimum());
         doubleRangeValidator.setMaximum(annotation.maximum());
 
-        doubleRangeValidator.validate(facesContext, uiComponent,
-                convertedObject);
+        doubleRangeValidator.validate(facesContext, uiComponent, convertedObject);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,9 +19,10 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.JoinValidation;
-import org.apache.myfaces.extensions.validator.baseval.annotation.extractor.DefaultPropertyScanningAnnotationExtractor;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
+import org.apache.myfaces.extensions.validator.baseval.annotation.extractor.DefaultPropertyScanningMetaDataExtractor;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidatorAdapter;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
@@ -37,22 +38,22 @@
 public class JoinValidationStrategy extends AbstractValidatorAdapter
 {
     public void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
-        AnnotationExtractor extractor = new DefaultPropertyScanningAnnotationExtractor();
+        MetaDataExtractor extractor = new DefaultPropertyScanningMetaDataExtractor();
 
-        String[] targetExpressions = annotationEntry.getAnnotation(JoinValidation.class).value();
+        String[] targetExpressions = metaDataEntry.getValue(JoinValidation.class).value();
 
         ValidationStrategy validationStrategy;
 
         for (String targetExpression : targetExpressions)
         {
-            targetExpression = createValidBinding(annotationEntry, targetExpression);
+            targetExpression = createValidBinding(metaDataEntry, targetExpression);
 
-            for (AnnotationEntry entry : extractor.extractAnnotations(facesContext, targetExpression))
+            for (MetaDataEntry entry : extractor.extract(facesContext, targetExpression).getMetaDataEntries())
             {
-                validationStrategy = ExtValUtils.getValidationStrategyForAnnotation(entry.getAnnotation());
+                validationStrategy = ExtValUtils.getValidationStrategyForMetaData(entry.getKey());
 
                 if (validationStrategy != null)
                 {
@@ -62,22 +63,22 @@
                 {
                     if(logger.isTraceEnabled())
                     {
-                        logger.trace("no validation strategy found for "
-                            + entry.getAnnotation().annotationType().getName());
+                        logger.trace("no validation strategy found for " + entry.getValue());
                     }
                 }
             }
         }
     }
 
-    private String createValidBinding(AnnotationEntry annotationEntry, String targetExpression)
+    private String createValidBinding(MetaDataEntry metaDataEntry, String targetExpression)
     {
         if(ExtValUtils.getELHelper().isELTerm(targetExpression))
         {
             return targetExpression;
         }
 
-        ValueBindingExpression baseExpression = new ValueBindingExpression(annotationEntry.getValueBindingExpression());
+        ValueBindingExpression baseExpression = new ValueBindingExpression(
+            metaDataEntry.getProperty(PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, String.class));
         return ValueBindingExpression.replaceOrAddProperty(baseExpression, targetExpression).getExpressionString();
     }
 }

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,8 +19,8 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractAnnotationValidationStrategy;
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 
@@ -36,7 +36,7 @@
 /**
  * @author Gerhard Petracek
  */
-public class JpaValidationStrategy extends AbstractValidationStrategy
+public class JpaValidationStrategy extends AbstractAnnotationValidationStrategy
 {
 
     private static final String VALIDATE_LENGTH = "length";
@@ -45,10 +45,10 @@
     private int maxLength;
 
     public void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
-        Annotation annotation = annotationEntry.getAnnotation();
+        Annotation annotation = metaDataEntry.getValue(Annotation.class);
         if (annotation instanceof Column)
         {
             validateColumnAnnotation((Column) annotation, convertedObject);

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,7 +19,7 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.Length;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidatorAdapter;
 
 import javax.faces.component.UIComponent;
@@ -33,10 +33,10 @@
 public class LengthStrategy extends AbstractValidatorAdapter
 {
     protected void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
-        Length annotation = annotationEntry.getAnnotation(Length.class);
+        Length annotation = metaDataEntry.getValue(Length.class);
         LengthValidator lengthValidator = (LengthValidator)facesContext.getApplication()
                                             .createValidator("javax.faces.Length");
 
@@ -45,4 +45,4 @@
 
         lengthValidator.validate(facesContext, uiComponent, convertedObject);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LongRangeStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LongRangeStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LongRangeStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LongRangeStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,7 +19,7 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.LongRange;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidatorAdapter;
 
 import javax.faces.component.UIComponent;
@@ -34,11 +34,11 @@
 {
 
     protected void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
 
-        LongRange annotation = annotationEntry.getAnnotation(LongRange.class);
+        LongRange annotation = metaDataEntry.getValue(LongRange.class);
         LongRangeValidator longRangeValidator = (LongRangeValidator)facesContext.getApplication()
                                                     .createValidator("javax.faces.LongRange");
 
@@ -47,4 +47,4 @@
 
         longRangeValidator.validate(facesContext, uiComponent, convertedObject);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/PatternStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/PatternStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/PatternStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/PatternStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,8 +19,8 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.Pattern;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractAnnotationValidationStrategy;
 
 import javax.faces.application.FacesMessage;
 import javax.faces.component.UIComponent;
@@ -31,15 +31,15 @@
 /**
  * @author Gerhard Petracek
  */
-public class PatternStrategy extends AbstractValidationStrategy
+public class PatternStrategy extends AbstractAnnotationValidationStrategy
 {
 
     protected void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
 
-        Pattern annotation = annotationEntry.getAnnotation(Pattern.class);
+        Pattern annotation = metaDataEntry.getValue(Pattern.class);
 
         for (String expression : annotation.value())
         {
@@ -60,4 +60,4 @@
     {
         return ((Pattern) annotation).validationErrorMsgKey();
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,8 +19,8 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.Required;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractAnnotationValidationStrategy;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -32,19 +32,17 @@
 /**
  * @author Gerhard Petracek
  */
-public class RequiredStrategy extends AbstractValidationStrategy
+public class RequiredStrategy extends AbstractAnnotationValidationStrategy
 {
     public void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
         if (convertedObject == null || convertedObject.equals("") ||
                 (convertedObject instanceof Collection && ((Collection)convertedObject).isEmpty()) ||
                 (convertedObject instanceof Map && ((Map)convertedObject).isEmpty()))
         {
-            throw new ValidatorException(
-                    getValidationErrorFacesMassage(annotationEntry
-                            .getAnnotation()));
+            throw new ValidatorException(getValidationErrorFacesMassage(metaDataEntry.getValue(Annotation.class)));
         }
     }
 
@@ -54,8 +52,8 @@
     }
 
     @Override
-    protected String getSkipExpression(Annotation annotation)
+    protected String getSkipExpression(Object metaData)
     {
-        return ((Required)annotation).skipValidation();
+        return ((Required)metaData).skipValidation();
     }
 }

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/ValidatorStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/ValidatorStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/ValidatorStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/ValidatorStrategy.java Sat Oct 11 13:07:19 2008
@@ -19,7 +19,7 @@
 package org.apache.myfaces.extensions.validator.baseval.strategy;
 
 import org.apache.myfaces.extensions.validator.baseval.annotation.Validator;
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidatorAdapter;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 
@@ -34,12 +34,11 @@
 {
 
     protected void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
 
-        Class[] validatorClasses = annotationEntry.getAnnotation(
-                Validator.class).value();
+        Class[] validatorClasses = metaDataEntry.getValue(Validator.class).value();
 
         javax.faces.validator.Validator validator;
         for (Class validatorClassName : validatorClasses)
@@ -59,4 +58,4 @@
             validator.validate(facesContext, uiComponent, convertedObject);
         }
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationStorageEntry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationStorageEntry.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationStorageEntry.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationStorageEntry.java Sat Oct 11 13:07:19 2008
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.extensions.validator.crossval;
 
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.crossval.strategy.CrossValidationStrategy;
 
 import javax.faces.component.UIComponent;
@@ -28,21 +28,21 @@
  */
 public class CrossValidationStorageEntry
 {
-    private AnnotationEntry annotationEntry;
+    private MetaDataEntry metaDataEntry;
     //for complex components (e.g. a table) stores the object of entry (#{entry.property})
     private Object bean;
     private UIComponent component;
     private Object convertedObject;
     private CrossValidationStrategy validationStrategy;
 
-    public AnnotationEntry getAnnotationEntry()
+    public MetaDataEntry getMetaDataEntry()
     {
-        return annotationEntry;
+        return metaDataEntry;
     }
 
-    public void setAnnotationEntry(AnnotationEntry annotationEntry)
+    public void setAnnotationEntry(MetaDataEntry metaDataEntry)
     {
-        this.annotationEntry = annotationEntry;
+        this.metaDataEntry = metaDataEntry;
     }
 
     public Object getBean()

Added: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/extractor/DefaultValueBindingScanningMetaDataExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/extractor/DefaultValueBindingScanningMetaDataExtractor.java?rev=703722&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/extractor/DefaultValueBindingScanningMetaDataExtractor.java (added)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/extractor/DefaultValueBindingScanningMetaDataExtractor.java Sat Oct 11 13:07:19 2008
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.crossval.annotation.extractor;
+
+import org.apache.myfaces.extensions.validator.core.metadata.SourceInformation;
+import org.apache.myfaces.extensions.validator.core.metadata.DefaultSourceInformation;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
+import org.apache.myfaces.extensions.validator.core.metadata.extractor.DefaultComponentMetaDataExtractor;
+import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+
+import javax.faces.context.FacesContext;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * to support the usage of vb-xpressions (to reference the target bean)
+ *
+ * @author Gerhard Petracek
+ */
+public class DefaultValueBindingScanningMetaDataExtractor extends DefaultComponentMetaDataExtractor
+{
+
+    @Override
+    public SourceInformation extract(FacesContext facesContext,
+            Object object)
+    {
+        SourceInformation sourceInformation = new DefaultSourceInformation();
+
+        //should never occur
+        if (!(object instanceof String))
+        {
+            return sourceInformation;
+        }
+
+        ValueBindingExpression valueBindingExpression = new ValueBindingExpression(((String) object).trim());
+
+        Class entity = ExtValUtils.getELHelper().getTypeOfValueBindingForExpression(facesContext,
+                valueBindingExpression);
+
+        if (entity != null)
+        {
+            //find and add annotations
+            addPropertyAccessAnnotations(entity, sourceInformation, valueBindingExpression.getExpressionString());
+            addFieldAccessAnnotations(entity, sourceInformation, valueBindingExpression.getExpressionString());
+        }
+
+        return sourceInformation;
+    }
+
+    protected void addPropertyAccessAnnotations(Class entity,
+            SourceInformation sourceInformation,
+            String valueBindingExpression)
+    {
+        for (Method method : entity.getDeclaredMethods())
+        {
+            sourceInformation.setProperty(
+                PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, valueBindingExpression);
+
+            addAnnotationToAnnotationEntries(Arrays.asList(method.getAnnotations()), sourceInformation);
+        }
+    }
+
+    protected void addFieldAccessAnnotations(Class entity,
+            SourceInformation sourceInformation,
+            String valueBindingExpression)
+    {
+        for (Field field : entity.getDeclaredFields())
+        {
+            sourceInformation.setProperty(
+                PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, valueBindingExpression);
+
+            addAnnotationToAnnotationEntries(Arrays.asList(field.getAnnotations()), sourceInformation);
+        }
+    }
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java Sat Oct 11 13:07:19 2008
@@ -30,6 +30,7 @@
 
 import javax.faces.context.FacesContext;
 import java.util.Map;
+import java.lang.annotation.Annotation;
 
 /**
  * referencing validation targets - possible formats:
@@ -68,7 +69,7 @@
         if (compareStrategy.isViolation(crossValidationStorageEntry
                 .getConvertedObject(), ExtValUtils.getELHelper().getValueOfExpression(
                 facesContext, validationTarget), crossValidationStorageEntry
-                .getAnnotationEntry().getAnnotation()))
+                .getMetaDataEntry().getValue(Annotation.class)))
         {
 
             ProcessedInformationEntry validationTargetEntry;
@@ -119,4 +120,4 @@
 
         return true;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java Sat Oct 11 13:07:19 2008
@@ -25,11 +25,13 @@
 import org.apache.myfaces.extensions.validator.util.CrossValidationUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import javax.faces.context.FacesContext;
 import java.util.Map;
+import java.lang.annotation.Annotation;
 
 /**
  * "[property_name]" ... local validation -> cross-component, but no cross-entity validation
@@ -75,7 +77,8 @@
                                                         String validationTarget)
     {
         ValueBindingExpression baseExpression =
-            new ValueBindingExpression(crossValidationStorageEntry.getAnnotationEntry().getValueBindingExpression());
+            new ValueBindingExpression(crossValidationStorageEntry.getMetaDataEntry()
+                .getProperty(PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, String.class));
         return ValueBindingExpression.replaceOrAddProperty(baseExpression, validationTarget).getExpressionString();
     }
 
@@ -118,7 +121,7 @@
         if (compareStrategy.isViolation(crossValidationStorageEntry
                 .getConvertedObject(), validationTargetEntry
                 .getConvertedValue(), crossValidationStorageEntry
-                .getAnnotationEntry().getAnnotation()))
+                .getMetaDataEntry().getValue(Annotation.class)))
         {
 
             CrossValidationStorageEntry tmpCrossValidationStorageEntry = new CrossValidationStorageEntry();
@@ -146,4 +149,4 @@
 
         return true;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Sat Oct 11 13:07:19 2008
@@ -87,7 +87,7 @@
 
         initValidation(crossValidationStorageEntry);
         String[] validationTargets = getValidationTargets(crossValidationStorageEntry
-                .getAnnotationEntry().getAnnotation());
+                .getMetaDataEntry().getValue(Annotation.class));
 
         for (String validationTarget : validationTargets)
         {
@@ -130,10 +130,8 @@
         FacesContext facesContext = FacesContext.getCurrentInstance();
 
         //get validation error messages for the target component
-        String summary = getErrorMessageSummary(entryOfSource
-                .getAnnotationEntry().getAnnotation(), true);
-        String details = getErrorMessageDetails(entryOfSource
-                .getAnnotationEntry().getAnnotation(), true);
+        String summary = getErrorMessageSummary(entryOfSource.getMetaDataEntry().getValue(Annotation.class), true);
+        String details = getErrorMessageDetails(entryOfSource.getMetaDataEntry().getValue(Annotation.class), true);
 
         //validation target isn't bound to a component withing the current page 
         //(see validateFoundEntry, tryToValidateLocally and tryToValidateBindingOnly)
@@ -143,23 +141,22 @@
         }
 
         FacesMessage message;
-        if (entryOfTarget.getAnnotationEntry() != null)
+        if (entryOfTarget.getMetaDataEntry() != null)
         {
             message = getTargetComponentErrorMessage(entryOfTarget
-                    .getAnnotationEntry().getAnnotation(), summary, details);
+                    .getMetaDataEntry().getValue(Annotation.class), summary, details);
         }
         else
         {
             //TODO document possible side effects
             //due to a missing target annotation (see: tryToValidateLocally)
             message = getTargetComponentErrorMessage(entryOfSource
-                    .getAnnotationEntry().getAnnotation(), summary, details);
+                    .getMetaDataEntry().getValue(Annotation.class), summary, details);
         }
 
         if (message.getSummary() != null || message.getDetail() != null)
         {
-            facesContext.addMessage(entryOfTarget.getComponent().getClientId(
-                    facesContext), message);
+            facesContext.addMessage(entryOfTarget.getComponent().getClientId(facesContext), message);
         }
     }
 
@@ -173,13 +170,11 @@
         }
 
         //get validation error messages for the current component
-        String summary = getErrorMessageSummary(entryOfSource
-                .getAnnotationEntry().getAnnotation(), false);
-        String details = getErrorMessageDetails(entryOfSource
-                .getAnnotationEntry().getAnnotation(), false);
+        String summary = getErrorMessageSummary(entryOfSource.getMetaDataEntry().getValue(Annotation.class), false);
+        String details = getErrorMessageDetails(entryOfSource.getMetaDataEntry().getValue(Annotation.class), false);
 
-        FacesMessage message = getSourceComponentErrorMessage(entryOfSource
-                .getAnnotationEntry().getAnnotation(), summary, details);
+        FacesMessage message = getSourceComponentErrorMessage(
+            entryOfSource.getMetaDataEntry().getValue(Annotation.class), summary, details);
 
         if (message.getSummary() != null || message.getDetail() != null)
         {
@@ -239,8 +234,7 @@
             return processedInformationEntry;
         }
 
-        for (ProcessedInformationEntry entry : processedInformationEntry
-                .getFurtherEntries())
+        for (ProcessedInformationEntry entry : processedInformationEntry.getFurtherEntries())
         {
             if (entry.getBean().equals(bean))
             {
@@ -251,21 +245,17 @@
         return null;
     }
 
-    protected String getErrorMessageSummary(Annotation annotation,
-            boolean isTargetComponent)
+    protected String getErrorMessageSummary(Annotation annotation, boolean isTargetComponent)
     {
-        return resolveMessage(getValidationErrorMsgKey(annotation,
-                isTargetComponent));
+        return resolveMessage(getValidationErrorMsgKey(annotation, isTargetComponent));
     }
 
-    protected String getErrorMessageDetails(Annotation annotation,
-            boolean isTargetComponent)
+    protected String getErrorMessageDetails(Annotation annotation, boolean isTargetComponent)
     {
         try
         {
             String key = getValidationErrorMsgKey(annotation, isTargetComponent);
-            return (key != null) ? resolveMessage(key
-                    + DETAIL_MESSAGE_KEY_POSTFIX) : null;
+            return (key != null) ? resolveMessage(key + DETAIL_MESSAGE_KEY_POSTFIX) : null;
         }
         catch (MissingResourceException e)
         {

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java Sat Oct 11 13:07:19 2008
@@ -18,8 +18,9 @@
  */
 package org.apache.myfaces.extensions.validator.crossval.strategy;
 
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.PropertySourceInformationKeys;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractAnnotationValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
 import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorageEntry;
 import org.apache.myfaces.extensions.validator.util.CrossValidationUtils;
@@ -33,28 +34,28 @@
  * @author Gerhard Petracek
  */
 public abstract class AbstractCrossValidationStrategy extends
-        AbstractValidationStrategy implements CrossValidationStrategy
+    AbstractAnnotationValidationStrategy implements CrossValidationStrategy
 {
 
     //init cross-validation
     public void processValidation(FacesContext facesContext,
-            UIComponent uiComponent, AnnotationEntry annotationEntry,
+            UIComponent uiComponent, MetaDataEntry metaDataEntry,
             Object convertedObject) throws ValidatorException
     {
         CrossValidationStorageEntry entry = getCrossValidationStorageEntry(
-                facesContext, uiComponent, annotationEntry, convertedObject);
+                facesContext, uiComponent, metaDataEntry, convertedObject);
 
         CrossValidationUtils.getOrInitCrossValidationStorage().add(entry);
     }
 
     public CrossValidationStorageEntry getCrossValidationStorageEntry(
             FacesContext facesContext, UIComponent uiComponent,
-            AnnotationEntry annotationEntry, Object convertedObject)
+            MetaDataEntry metaDataEntry, Object convertedObject)
     {
         CrossValidationStorageEntry entry = new CrossValidationStorageEntry();
 
-        entry.setAnnotationEntry(annotationEntry);
-        String vbe = annotationEntry.getValueBindingExpression();
+        entry.setAnnotationEntry(metaDataEntry);
+        String vbe = metaDataEntry.getProperty(PropertySourceInformationKeys.VALUE_BINDING_EXPRESSION, String.class);
         entry.setBean(ExtValUtils.getELHelper().getBaseObject(new ValueBindingExpression(vbe)));
         entry.setComponent(uiComponent);
         entry.setConvertedObject(convertedObject);

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/CrossValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/CrossValidationStrategy.java?rev=703722&r1=703721&r2=703722&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/CrossValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/CrossValidationStrategy.java Sat Oct 11 13:07:19 2008
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.extensions.validator.crossval.strategy;
 
-import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorage;
 import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorageEntry;
@@ -37,7 +37,7 @@
 {
     CrossValidationStorageEntry getCrossValidationStorageEntry(
             FacesContext facesContext, UIComponent uiComponent,
-            AnnotationEntry annotationEntry, Object convertedObject);
+            MetaDataEntry metaDataEntry, Object convertedObject);
 
     void processCrossValidation(
             CrossValidationStorageEntry crossValidationStorageEntry,