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/03 20:32:58 UTC

svn commit: r701480 - in /myfaces/extensions/validator/branches/jsf_1.1: component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/ core/src/main/java/org/apache/myfaces/extensions/validator...

Author: gpetracek
Date: Fri Oct  3 11:32:57 2008
New Revision: 701480

URL: http://svn.apache.org/viewvc?rev=701480&view=rev
Log:
skip validation support

Added:
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/AbstractMetaDataTransformer.java
Modified:
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/DoubleRangeInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LengthInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LongRangeInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/PatternInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/RequiredInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/TrinidadComponentInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/BeanMetaDataTransformerAdapterImpl.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java
    myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java
    myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java
    myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/webapp/pages/change_password.xhtml
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsComponentInitializer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/Required.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/DoubleRangeInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/DoubleRangeInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/DoubleRangeInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/DoubleRangeInitializer.java Fri Oct  3 11:32:57 2008
@@ -19,6 +19,8 @@
 package org.apache.myfaces.extensions.validator.trinidad.initializer.component;
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.trinidad.validator.DoubleRangeValidator;
 
 import javax.faces.component.EditableValueHolder;
@@ -30,9 +32,12 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
+@ToDo(value = Priority.MEDIUM, description = "skipValidationSupport for client-side validation")
 public class DoubleRangeInitializer extends TrinidadComponentInitializer
 {
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @Override
+    public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                              Map<String, Object> metaData)
     {
         boolean informationAdded = false;
         DoubleRangeValidator lengthValidator = (DoubleRangeValidator)facesContext.getApplication()
@@ -62,6 +67,8 @@
         if(informationAdded)
         {
             ((EditableValueHolder)uiComponent).addValidator(lengthValidator);
+            return true;
         }
+        return false;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LengthInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LengthInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LengthInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LengthInitializer.java Fri Oct  3 11:32:57 2008
@@ -20,6 +20,8 @@
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
 
 import javax.faces.component.EditableValueHolder;
 import javax.faces.component.UIComponent;
@@ -31,11 +33,15 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
+@ToDo(value = Priority.MEDIUM, description = "skipValidationSupport for client-side validation")
 public class LengthInitializer extends TrinidadComponentInitializer
 {
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @Override
+    public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                              Map<String, Object> metaData)
     {
         boolean informationAdded = false;
+        //TODO
         LengthValidator lengthValidator = (LengthValidator)facesContext.getApplication()
                                             .createValidator("org.apache.myfaces.trinidad.Length");
 
@@ -66,9 +72,14 @@
                 informationAdded = true;
             }
         }
+
+        //reInitValidators((EditableValueHolder)uiComponent, metaData); //search wrappers and call .deactivate
+
         if(informationAdded)
         {
             ((EditableValueHolder)uiComponent).addValidator(lengthValidator);
+            return true;
         }
+        return false;
     }
 }

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LongRangeInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LongRangeInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LongRangeInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/LongRangeInitializer.java Fri Oct  3 11:32:57 2008
@@ -19,6 +19,8 @@
 package org.apache.myfaces.extensions.validator.trinidad.initializer.component;
 
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.trinidad.validator.LongRangeValidator;
 
 import javax.faces.component.EditableValueHolder;
@@ -30,9 +32,12 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
+@ToDo(value = Priority.MEDIUM, description = "skipValidationSupport for client-side validation")
 public class LongRangeInitializer extends TrinidadComponentInitializer
 {
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @Override
+    public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                              Map<String, Object> metaData)
     {
         boolean informationAdded = false;
         LongRangeValidator lengthValidator = (LongRangeValidator)facesContext.getApplication()
@@ -62,6 +67,8 @@
         if(informationAdded)
         {
             ((EditableValueHolder)uiComponent).addValidator(lengthValidator);
+            return true;
         }
+        return false;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/PatternInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/PatternInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/PatternInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/PatternInitializer.java Fri Oct  3 11:32:57 2008
@@ -18,8 +18,9 @@
  */
 package org.apache.myfaces.extensions.validator.trinidad.initializer.component;
 
-import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.trinidad.validator.RegExpValidator;
 
 import javax.faces.component.EditableValueHolder;
@@ -31,13 +32,16 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class PatternInitializer implements ComponentInitializer
+@ToDo(value = Priority.MEDIUM, description = "skipValidationSupport for client-side validation")
+public class PatternInitializer extends TrinidadComponentInitializer
 {
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @Override
+    public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                              Map<String, Object> metaData)
     {
         if(!metaData.containsKey(CommonMetaDataKeys.PATTERN))
         {
-            return;
+            return false;
         }
 
         String[] patterns = (String[])metaData.get(CommonMetaDataKeys.PATTERN);
@@ -55,5 +59,6 @@
 
             ((EditableValueHolder)uiComponent).addValidator(regExpValidator);
         }
+        return true;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/RequiredInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/RequiredInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/RequiredInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/RequiredInitializer.java Fri Oct  3 11:32:57 2008
@@ -25,6 +25,7 @@
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.util.Map;
+import java.util.List;
 
 /**
  * @author Gerhard Petracek
@@ -32,16 +33,31 @@
  */
 public class RequiredInitializer extends TrinidadComponentInitializer
 {
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @Override
+    public boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                              Map<String, Object> metaData)
     {
-        if(metaData.containsKey(CommonMetaDataKeys.REQUIRED))
+        if(metaData.containsKey(CommonMetaDataKeys.REQUIRED) || metaData.containsKey(CommonMetaDataKeys.WEAK_REQUIRED)||
+           metaData.containsKey(CommonMetaDataKeys.SKIP_VALIDATION))
         {
-            if((Boolean)metaData.get(CommonMetaDataKeys.REQUIRED) &&
+            if((Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.WEAK_REQUIRED)) &&
                 Boolean.TRUE.equals(isComponentRequired(uiComponent)))
+                ||
+                (Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.REQUIRED)) &&
+                 Boolean.TRUE.equals(isComponentRequired(uiComponent))))
             {
                 ((EditableValueHolder)uiComponent).setRequired(true);
+                return true;
+            }
+            else if(metaData.containsKey(CommonMetaDataKeys.SKIP_VALIDATION) &&
+                   ((List)metaData.get(CommonMetaDataKeys.SKIP_VALIDATION)).contains(CommonMetaDataKeys.WEAK_REQUIRED)&&
+                   !Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.REQUIRED)))
+            {
+                ((EditableValueHolder)uiComponent).setRequired(false);
+                return true;
             }
         }
+        return false;
     }
 
     protected Boolean isComponentRequired(UIComponent uiComponent)
@@ -54,4 +70,4 @@
 
         return !(isReadOnly || isDisabled);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/TrinidadComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/TrinidadComponentInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/TrinidadComponentInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/initializer/component/TrinidadComponentInitializer.java Fri Oct  3 11:32:57 2008
@@ -19,6 +19,9 @@
 package org.apache.myfaces.extensions.validator.trinidad.initializer.component;
 
 import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+import org.apache.myfaces.trinidad.context.RequestContext;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -37,7 +40,8 @@
     private static final String TRINIDAD_CORE_INPUT_DATE
                                          = "org.apache.myfaces.trinidad.component.core.input.CoreInputDate";
 
-    private static List<ComponentInitializer> componentInitializers = new ArrayList<ComponentInitializer>();
+    private static List<TrinidadComponentInitializer> componentInitializers =
+        new ArrayList<TrinidadComponentInitializer>();
 
     static
     {
@@ -49,17 +53,36 @@
         //componentInitializers.add(new ValidatorInitializer());
     }
 
-    public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+    @ToDo(value = Priority.LOW, description = "check ppr issue")
+    public final void configureComponent(FacesContext facesContext, UIComponent uiComponent,
+                                         Map<String, Object> metaData)
     {
-        for(ComponentInitializer componentInitializer : componentInitializers)
+        for(TrinidadComponentInitializer componentInitializer : componentInitializers)
         {
-            componentInitializer.configureComponent(facesContext, uiComponent, metaData);
+            if(componentInitializer.configureTrinidadComponent(facesContext, uiComponent, metaData))
+            {
+                updateComponent(facesContext, uiComponent);
+            }
         }
     }
 
+    protected boolean configureTrinidadComponent(FacesContext facesContext, UIComponent uiComponent,
+                                                 Map<String, Object> metaData)
+    {
+        return false;
+    }
+
     protected boolean processComponent(UIComponent uiComponent)
     {
         return TRINIDAD_CORE_INPUT_TEXT.equals(uiComponent.getClass().getName()) ||
                TRINIDAD_CORE_INPUT_DATE.equals(uiComponent.getClass().getName());
     }
+
+    private void updateComponent(FacesContext facesContext, UIComponent uiComponent)
+    {
+        if(RequestContext.getCurrentInstance().isPartialRequest(facesContext))
+        {
+            RequestContext.getCurrentInstance().addPartialTarget(uiComponent.getParent());
+        }
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java Fri Oct  3 11:32:57 2008
@@ -30,6 +30,7 @@
 public interface CommonMetaDataKeys
 {
     static final String REQUIRED = "required";
+    static final String WEAK_REQUIRED = "weak_required";
 
     static final String MIN_LENGTH = "min_length";
     static final String MAX_LENGTH = "max_length";
@@ -42,4 +43,5 @@
     static final String EMAIL = "email";
 
     static final String CUSTOM = "custom";
+    static final String SKIP_VALIDATION = "skip_validation";
 }

Added: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/AbstractMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/AbstractMetaDataTransformer.java?rev=701480&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/AbstractMetaDataTransformer.java (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/AbstractMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -0,0 +1,97 @@
+/*
+ * 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.core.metadata.transformer;
+
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.context.FacesContext;
+import java.lang.annotation.Annotation;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+//long term target: skipValidation for all annotations (if possible)
+public abstract class AbstractMetaDataTransformer implements MetaDataTransformer
+{
+    protected final Log logger = LogFactory.getLog(getClass());
+
+    protected AbstractMetaDataTransformer()
+    {
+        if(logger.isDebugEnabled())
+        {
+            logger.debug(getClass().getName() + " instantiated");
+        }
+    }
+
+    public final Map<String, Object> extractMetaData(Annotation annotation)
+    {
+        if(skipValidation(annotation))
+        {
+            if(logger.isTraceEnabled())
+            {
+                logger.trace(getClass() + " validation skiped");
+            }
+            Map<String, Object> results = new HashMap<String, Object>();
+            results.put(CommonMetaDataKeys.SKIP_VALIDATION, getMetaDataKeys());
+            return results;
+        }
+
+        return processExtraction(annotation);
+    }
+
+    protected boolean skipValidation(Annotation annotation)
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+
+        Boolean result = (Boolean) ExtValUtils.getELHelper()
+            .getValueOfExpression(facesContext, getSkipExpression(annotation));
+
+        if(logger.isTraceEnabled())
+        {
+            logger.trace(getClass() + "#skipValidation result of getSkipExpression: "
+                + getSkipExpression(annotation));
+        }
+
+        return result;
+    }
+
+    protected String getSkipExpression(Annotation annotation)
+    {
+        return "#{false}"; //default - don't skip
+    }
+
+    /**
+     * if the current annotation is skiped provide the meta-data keys which are irrelevant
+     * -> component initializers have to reset these properties
+     */
+    protected List<String> getMetaDataKeys()
+    {
+        return new ArrayList<String>();
+    }
+
+    protected abstract Map<String, Object> processExtraction(Annotation annotation);
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/BeanMetaDataTransformerAdapterImpl.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/BeanMetaDataTransformerAdapterImpl.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/BeanMetaDataTransformerAdapterImpl.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/BeanMetaDataTransformerAdapterImpl.java Fri Oct  3 11:32:57 2008
@@ -24,6 +24,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import java.util.Map;
+import java.util.List;
 import java.lang.annotation.Annotation;
 
 /**
@@ -39,24 +40,41 @@
  * @since 1.x.1
  */
 @UsageInformation({UsageCategory.REUSE})
-public class BeanMetaDataTransformerAdapterImpl implements BeanMetaDataTransformerAdapter
+public class BeanMetaDataTransformerAdapterImpl extends AbstractMetaDataTransformer
+    implements BeanMetaDataTransformerAdapter
 {
     protected final Log logger = LogFactory.getLog(getClass());
 
     private MetaDataTransformer metaDataTransformer;
     private String metaDataTransformerClassName;
 
-    public BeanMetaDataTransformerAdapterImpl()
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
-        if(logger.isDebugEnabled())
+        if(this.metaDataTransformer instanceof AbstractMetaDataTransformer)
         {
-            logger.debug(getClass().getName() + " instantiated");
+            return ((AbstractMetaDataTransformer)this.metaDataTransformer).processExtraction(annotation);
         }
+        return this.metaDataTransformer.extractMetaData(annotation);
     }
 
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    @Override
+    protected String getSkipExpression(Annotation annotation)
     {
-        return this.metaDataTransformer.extractMetaData(annotation);
+        if(this.metaDataTransformer instanceof AbstractMetaDataTransformer)
+        {
+            return ((AbstractMetaDataTransformer)this.metaDataTransformer).getSkipExpression(annotation);
+        }
+        return super.getSkipExpression(annotation);
+    }
+
+    @Override
+    protected List<String> getMetaDataKeys()
+    {
+        if(this.metaDataTransformer instanceof AbstractMetaDataTransformer)
+        {
+            return ((AbstractMetaDataTransformer)this.metaDataTransformer).getMetaDataKeys();
+        }
+        return super.getMetaDataKeys();
     }
 
     public String getMetaDataTransformerClassName()

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java Fri Oct  3 11:32:57 2008
@@ -21,6 +21,7 @@
 import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -28,12 +29,15 @@
 import javax.faces.context.FacesContext;
 import javax.faces.convert.ConverterException;
 import javax.faces.validator.ValidatorException;
+import java.lang.annotation.Annotation;
 
 /**
  * Provides the ability to use ValidatorException (as expected by the user) instead of ConverterException.
  * Furthermore it provides:<br/>
  * initValidation<br/>
  * processAfterValidatorException
+ * <p/>
+ * adds support for "skipable" validation strategies
  *
  * @author Gerhard Petracek
  * @since 1.x.1
@@ -42,6 +46,7 @@
 public abstract class AbstractValidatorAdapter implements ValidationStrategy
 {
     protected final Log logger = LogFactory.getLog(getClass());
+    private static final String DO_NOT_SKIP = "#{false}"; //don't skip
 
     protected AbstractValidatorAdapter()
     {
@@ -59,6 +64,15 @@
             logger.trace("start initValidation of " + getClass().getName());
         }
 
+        if(skipValidation(facesContext, uiComponent, annotationEntry, convertedObject))
+        {
+            if(logger.isTraceEnabled())
+            {
+                logger.trace(getClass() + " validation skiped");
+            }
+            return;
+        }
+
         initValidation(facesContext, uiComponent, annotationEntry, convertedObject);
 
         if(logger.isTraceEnabled())
@@ -107,6 +121,32 @@
         }
     }
 
+    protected boolean skipValidation(FacesContext facesContext, UIComponent uiComponent,
+                                     AnnotationEntry annotationEntry, Object convertedObject)
+    {
+        String expression = getSkipExpression(annotationEntry.getAnnotation());
+
+        //just for a better performance for "none-skipable" strategies
+        if(DO_NOT_SKIP.equals(expression))
+        {
+            return false;
+        }
+
+        Boolean result = (Boolean)ExtValUtils.getELHelper().getValueOfExpression(facesContext, expression);
+
+        if(logger.isTraceEnabled())
+        {
+            logger.trace(getClass() + "#skipValidation result of getSkipExpression: " + expression);
+        }
+
+        return result;
+    }
+
+    protected String getSkipExpression(Annotation annotation)
+    {
+        return DO_NOT_SKIP;
+    }
+
     protected void initValidation(FacesContext facesContext,
                                   UIComponent uiComponent,
                                   AnnotationEntry annotationEntry,

Modified: myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java Fri Oct  3 11:32:57 2008
@@ -44,6 +44,9 @@
     @Column(nullable = false, length = 10)
     private String password;
 
+    @Column(nullable = false, length = 10)
+    private String role = "user";
+
     @DateIs(type = DateIsType.before, valueOf = "finalExam")
     @Column(nullable = false)
     @Temporal(TemporalType.DATE)
@@ -94,6 +97,16 @@
         this.password = password;
     }
 
+    public String getRole()
+    {
+        return role;
+    }
+
+    public void setRole(String role)
+    {
+        this.role = role;
+    }
+
     public Date getBirthday()
     {
         return birthday;

Modified: myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/gui/beans/RegistrationPage.java Fri Oct  3 11:32:57 2008
@@ -33,7 +33,7 @@
 
     //the old password of the person isn't used within the page
     //-> validate with value of the model
-    @Required
+    @Required(skipValidation = "#{person.role eq 'admin'}")
     @Equals("#{person.password}")
     @NotEquals("password")
     private String oldPassword;
@@ -66,6 +66,22 @@
         return "home";
     }
 
+    //just a quick illustration of skipValidation
+    public String switchMode()
+    {
+        String currentRole = this.person.getRole();
+
+        if(currentRole.equals("admin"))
+        {
+            this.person.setRole("user");
+        }
+        else
+        {
+            this.person.setRole("admin");
+        }
+        return "";
+    }
+
     //combine gui related annotations with the annoations of the domain model
     @JoinValidation("#{person.email}")
     @Validator(EmailValidator.class)

Modified: myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/webapp/pages/change_password.xhtml
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/webapp/pages/change_password.xhtml?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/webapp/pages/change_password.xhtml (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/examples/feature-set_01/src/main/webapp/pages/change_password.xhtml Fri Oct  3 11:32:57 2008
@@ -26,6 +26,8 @@
 
         </tr:panelFormLayout>
         <tr:commandButton text="save" action="#{registrationPage.finish}"/>
+        <tr:commandLink text="mode: #{registrationPage.person.role}"
+                          action="#{registrationPage.switchMode}" immediate="true"/>
 
     </ui:define>
 </ui:composition>

Modified: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsComponentInitializer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsComponentInitializer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsComponentInitializer.java Fri Oct  3 11:32:57 2008
@@ -26,6 +26,7 @@
 import javax.faces.component.html.HtmlInputText;
 import javax.faces.context.FacesContext;
 import java.util.Map;
+import java.util.List;
 
 /**
  * @author Gerhard Petracek
@@ -43,13 +44,23 @@
                                               UIComponent uiComponent,
                                               Map<String, Object> metaData)
     {
-        if(metaData.containsKey(CommonMetaDataKeys.REQUIRED))
+        if(metaData.containsKey(CommonMetaDataKeys.REQUIRED) || metaData.containsKey(CommonMetaDataKeys.WEAK_REQUIRED)||
+           metaData.containsKey(CommonMetaDataKeys.SKIP_VALIDATION))
         {
-            if((Boolean)metaData.get(CommonMetaDataKeys.REQUIRED) &&
+            if((Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.WEAK_REQUIRED)) &&
                 Boolean.TRUE.equals(isComponentRequired(uiComponent)))
+                ||
+                (Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.REQUIRED)) &&
+                 Boolean.TRUE.equals(isComponentRequired(uiComponent))))
             {
                 ((EditableValueHolder)uiComponent).setRequired(true);
             }
+            else if(metaData.containsKey(CommonMetaDataKeys.SKIP_VALIDATION) &&
+                   ((List)metaData.get(CommonMetaDataKeys.SKIP_VALIDATION)).contains(CommonMetaDataKeys.WEAK_REQUIRED)&&
+                   !Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.REQUIRED)))
+            {
+                ((EditableValueHolder)uiComponent).setRequired(false);
+            }
         }
     }
 

Modified: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/Required.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/Required.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/Required.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/annotation/Required.java Fri Oct  3 11:32:57 2008
@@ -32,4 +32,6 @@
 public @interface Required
 {
     String validationErrorMsgKey() default "field_required";
+
+    String skipValidation() default "#{false}"; //default - don't skip
 }

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/DoubleRangeMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -20,7 +20,7 @@
 
 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.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
@@ -30,9 +30,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class DoubleRangeMetaDataTransformer implements MetaDataTransformer
+public class DoubleRangeMetaDataTransformer extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         double minimum = ((DoubleRange)annotation).minimum();
@@ -47,4 +47,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -23,6 +23,7 @@
 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.core.metadata.transformer.MetaDataTransformer;
+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.util.ExtValUtils;
 
@@ -35,9 +36,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class JoinMetaDataTransformer implements MetaDataTransformer
+public class JoinMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         AnnotationExtractor extractor = new DefaultPropertyScanningAnnotationExtractor();
 

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LengthMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -20,7 +20,7 @@
 
 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.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
@@ -30,9 +30,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class LengthMetaDataTransformer implements MetaDataTransformer
+public class LengthMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         int minimum = ((Length)annotation).minimum();
@@ -47,4 +47,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/LongRangeMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -20,7 +20,7 @@
 
 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.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
@@ -30,9 +30,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class LongRangeMetaDataTransformer implements MetaDataTransformer
+public class LongRangeMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         long minimum = ((LongRange)annotation).minimum();
@@ -47,4 +47,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/PatternMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -19,7 +19,7 @@
 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.transformer.MetaDataTransformer;
+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.baseval.annotation.Pattern;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -34,9 +34,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class PatternMetaDataTransformer implements MetaDataTransformer
+public class PatternMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         results.put(CommonMetaDataKeys.PATTERN, ((Pattern)annotation).value());

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/RequiredMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -19,22 +19,40 @@
 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.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
+import org.apache.myfaces.extensions.validator.baseval.annotation.Required;
 
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class RequiredMetaDataTransformer implements MetaDataTransformer
+public class RequiredMetaDataTransformer extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        results.put(CommonMetaDataKeys.REQUIRED, true);
+        results.put(CommonMetaDataKeys.WEAK_REQUIRED, true);
         return results;
     }
+
+    @Override
+    protected String getSkipExpression(Annotation annotation)
+    {
+        return ((Required)annotation).skipValidation();
+    }
+
+    //returns the key of the skiped meta-data e.g.
+    @Override
+    protected List<String> getMetaDataKeys()
+    {
+        List<String> skippedMetaDataList = new ArrayList<String>();
+        skippedMetaDataList.add(CommonMetaDataKeys.WEAK_REQUIRED);
+        return skippedMetaDataList;
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/ValidatorMetaDataTransformer.java Fri Oct  3 11:32:57 2008
@@ -20,7 +20,7 @@
 
 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.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.AbstractMetaDataTransformer;
 
 import java.lang.annotation.Annotation;
 import java.util.HashMap;
@@ -32,9 +32,9 @@
  * @author Gerhard Petracek
  * @since 1.x.1
  */
-public class ValidatorMetaDataTransformer implements MetaDataTransformer
+public class ValidatorMetaDataTransformer  extends AbstractMetaDataTransformer
 {
-    public Map<String, Object> extractMetaData(Annotation annotation)
+    public Map<String, Object> processExtraction(Annotation annotation)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         Class[] validators = ((Validator)annotation).value();
@@ -54,4 +54,4 @@
 
         return results;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/jsf_1.1/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/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java?rev=701480&r1=701479&r2=701480&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java Fri Oct  3 11:32:57 2008
@@ -52,4 +52,10 @@
     {
         return ((Required) annotation).validationErrorMsgKey();
     }
+
+    @Override
+    protected String getSkipExpression(Annotation annotation)
+    {
+        return ((Required)annotation).skipValidation();
+    }
 }