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 2009/10/18 20:27:45 UTC

svn commit: r826485 - in /myfaces/extensions/validator/branches/branch_for_jsf_1_1: component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/ component-support/trinidad-support/src/main/java/org/apache/myf...

Author: gpetracek
Date: Sun Oct 18 18:27:44 2009
New Revision: 826485

URL: http://svn.apache.org/viewvc?rev=826485&view=rev
Log:
cleanup and small refactorings

Added:
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/RequiredValidatorException.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/DisableClientSideValidation.java
Modified:
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/GenericModuleStartupListener.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadMetaDataExtractionInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipAfterInterceptorsException.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipBeforeInterceptorsException.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipRendererDelegationException.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/webapp/components/user_form.xhtml
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_02/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/GenericModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/GenericModuleStartupListener.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/GenericModuleStartupListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/startup/GenericModuleStartupListener.java Sun Oct 18 18:27:44 2009
@@ -18,13 +18,13 @@
  */
 package org.apache.myfaces.extensions.validator.generic.startup;
 
-import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.renderkit.AbstractRenderKitWrapperFactory;
 import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
+import org.apache.myfaces.extensions.validator.core.renderkit.AbstractRenderKitWrapperFactory;
+import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
 import org.apache.myfaces.extensions.validator.generic.renderkit.GenericRenderKitWrapperFactory;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
 /**
  * @author Gerhard Petracek
@@ -33,6 +33,8 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class GenericModuleStartupListener extends AbstractStartupListener
 {
+    private static final long serialVersionUID = 4392156032877519556L;
+
     protected void init()
     {
         ExtValContext.getContext().getFactoryFinder().getFactory(FactoryNames.RENDERKIT_WRAPPER_FACTORY,

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadMetaDataExtractionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadMetaDataExtractionInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadMetaDataExtractionInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadMetaDataExtractionInterceptor.java Sun Oct 18 18:27:44 2009
@@ -18,16 +18,17 @@
  */
 package org.apache.myfaces.extensions.validator.trinidad.interceptor;
 
+import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.core.interceptor.MetaDataExtractionInterceptor;
-import org.apache.myfaces.extensions.validator.core.property.PropertyInformation;
+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.property.PropertyInformation;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
-import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
 import java.lang.annotation.Annotation;
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author Gerhard Petracek
@@ -38,27 +39,30 @@
 {
     public void afterExtracting(PropertyInformation propertyInformation)
     {
-        List<MetaDataEntry> result = new ArrayList<MetaDataEntry>();
-
-        for(MetaDataEntry entry : propertyInformation.getMetaDataEntries())
+        for (MetaDataEntry entry : propertyInformation.getMetaDataEntries())
         {
-            if(!(entry.getValue() instanceof Annotation &&
-                    ExtValUtils.getValidationParameterExtractor()
-                            .extract(entry.getValue(Annotation.class), DisableClientSideValidation.class)
-                            .iterator().hasNext()))
+            if (entry.getValue() instanceof Annotation && isClientValidationDisabled(entry))
             {
-                result.add(entry);
+                disableClientSideValidation(entry);
             }
         }
+    }
 
-        if(propertyInformation.getMetaDataEntries().length != result.size())
-        {
-            propertyInformation.resetMetaDataEntries();
+    private boolean isClientValidationDisabled(MetaDataEntry entry)
+    {
+        return ExtValUtils.getValidationParameterExtractor()
+                .extract(entry.getValue(Annotation.class), DisableClientSideValidation.class)
+                .iterator().hasNext();
+    }
 
-            for(MetaDataEntry entry : result)
-            {
-                propertyInformation.addMetaDataEntry(entry);
-            }
+    private void disableClientSideValidation(MetaDataEntry entry)
+    {
+        if(entry.getProperty(CommonMetaDataKeys.DISABLE_CLIENT_SIDE_VALIDATION) == null)
+        {
+            entry.setProperty(CommonMetaDataKeys.DISABLE_CLIENT_SIDE_VALIDATION, new ArrayList<String>());
         }
+
+        List<String> keysToDisable = entry.getProperty(CommonMetaDataKeys.DISABLE_CLIENT_SIDE_VALIDATION, List.class);
+        keysToDisable.add(entry.getKey());
     }
 }

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java Sun Oct 18 18:27:44 2009
@@ -25,6 +25,7 @@
 import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
+import org.apache.myfaces.extensions.validator.core.validation.exception.RequiredValidatorException;
 import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -60,6 +61,8 @@
         {
             FacesMessage facesMessage = validatorException.getFacesMessage();
 
+            handleRequiredValidatorException(uiComponent, validatorException);
+
             String label = getLabel(uiComponent);
 
             if(label == null)
@@ -89,6 +92,21 @@
         return true;
     }
 
+    private void handleRequiredValidatorException(UIComponent uiComponent, ValidatorException validatorException)
+    {
+        if(validatorException instanceof RequiredValidatorException)
+        {
+            FacesMessage facesMessage = validatorException.getFacesMessage();
+            String inlineMessage = getInlineRequiredMessage(uiComponent);
+
+            if(inlineMessage != null)
+            {
+                facesMessage.setSummary(inlineMessage);
+                facesMessage.setDetail(inlineMessage);
+            }
+        }
+    }
+
     private void refreshComponent(UIComponent uiComponent)
     {
         if(RequestContext.getCurrentInstance().isPartialRequest(FacesContext.getCurrentInstance()))
@@ -108,4 +126,10 @@
         return (String)ReflectionUtils.tryToInvokeMethod(uiComponent,
                 ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getLabel"));
     }
+
+    private String getInlineRequiredMessage(UIComponent uiComponent)
+    {
+        return (String)ReflectionUtils.tryToInvokeMethod(uiComponent,
+                ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getRequiredMessageDetail"));
+    }
 }

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/validation/message/TrinidadViolationMessage.java Sun Oct 18 18:27:44 2009
@@ -22,8 +22,10 @@
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
 import javax.faces.context.FacesContext;
+import javax.faces.application.FacesMessage;
 
 /**
  * @author Gerhard Petracek
@@ -33,6 +35,7 @@
 class TrinidadViolationMessage extends LabeledFacesMessage implements LabeledMessage
 {
     private static final long serialVersionUID = 6356800689961505154L;
+    public static final String MISSING_RESOURCE_MARKER = "???";
 
     public TrinidadViolationMessage(Severity severity, String summary, String detail)
     {
@@ -44,6 +47,51 @@
         return super.getLabelAsString(FacesContext.getCurrentInstance());
     }
 
+    @Override
+    public String getSummary()
+    {
+        FacesMessage result = tryToPlaceLabel(super.getSummary());
+
+        if(result != null)
+        {
+            super.setSummary(result.getSummary());
+            return result.getSummary();
+        }
+
+        return super.getSummary();
+    }
+
+    @Override
+    public String getDetail()
+    {
+        FacesMessage result = tryToPlaceLabel(super.getDetail());
+
+        if(result != null)
+        {
+            super.setDetail(result.getDetail());
+            return result.getDetail();
+        }
+
+        return super.getDetail();
+    }
+
+    private FacesMessage tryToPlaceLabel(String originalMessage)
+    {
+        if(!(originalMessage != null &&
+                originalMessage.startsWith(MISSING_RESOURCE_MARKER) &&
+                originalMessage.endsWith(MISSING_RESOURCE_MARKER)))
+        {
+            FacesMessage newFacesMessage = new FacesMessage(super.getSeverity(), super.getSummary(), super.getDetail());
+            for(int i = 0; i < 3; i++)
+            {
+                ExtValUtils.tryToPlaceLabel(newFacesMessage, getLabelText(), i);
+            }
+            return newFacesMessage;
+        }
+
+        return null;
+    }
+
     public void setLabelText(String label)
     {
         super.setLabel(label);

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java Sun Oct 18 18:27:44 2009
@@ -176,6 +176,6 @@
     protected boolean recordProcessedInformation()
     {
         //override if needed
-        return true;
+        return false;
     }
-}
+}
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java Sun Oct 18 18:27:44 2009
@@ -162,6 +162,21 @@
         }
     }
 
+    @Override
+    /**
+     * to ensure backward compatibility
+     */
+    protected boolean interpretEmptyStringValuesAsNull()
+    {
+        return false;
+    }
+
+    @Override
+    protected boolean recordProcessedInformation()
+    {
+        return true;
+    }
+
     protected Class getModuleKey()
     {
         //override if needed

Modified: myfaces/extensions/validator/branches/branch_for_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/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/CommonMetaDataKeys.java Sun Oct 18 18:27:44 2009
@@ -54,4 +54,5 @@
 
     static final String CUSTOM = "custom";
     static final String SKIP_VALIDATION = "skip_validation";
+    static final String DISABLE_CLIENT_SIDE_VALIDATION = "disable_client_side_validation";
 }

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java Sun Oct 18 18:27:44 2009
@@ -21,12 +21,14 @@
 import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
 import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
 import org.apache.myfaces.extensions.validator.core.Nested;
+import org.apache.myfaces.extensions.validator.core.InvocationOrderComparator;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Collections;
 
 /**
  * @author Gerhard Petracek
@@ -44,9 +46,15 @@
         if(!this.subNameMappers.contains(nameMapper) && nameMapper.getClass().isAnnotationPresent(Nested.class))
         {
             this.subNameMappers.add(nameMapper);
+            sortSubNameMappers();
         }
     }
 
+    private void sortSubNameMappers()
+    {
+        Collections.sort(this.subNameMappers, new InvocationOrderComparator<NameMapper<ValidationStrategy>>());
+    }
+
     public String createName(ValidationStrategy source)
     {
         String result = null;

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipAfterInterceptorsException.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipAfterInterceptorsException.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipAfterInterceptorsException.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipAfterInterceptorsException.java Sun Oct 18 18:27:44 2009
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.renderkit.exception;
 
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
 /**
  * @author Gerhard Petracek
@@ -28,4 +28,5 @@
 @UsageInformation(UsageCategory.API)
 public class SkipAfterInterceptorsException extends Exception
 {
-}
+    private static final long serialVersionUID = -1472790498766251346L;
+}
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipBeforeInterceptorsException.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipBeforeInterceptorsException.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipBeforeInterceptorsException.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipBeforeInterceptorsException.java Sun Oct 18 18:27:44 2009
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.renderkit.exception;
 
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
 /**
  * @author Gerhard Petracek
@@ -28,4 +28,5 @@
 @UsageInformation(UsageCategory.API)
 public class SkipBeforeInterceptorsException extends Exception
 {
-}
+    private static final long serialVersionUID = -418424051464814888L;
+}
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipRendererDelegationException.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipRendererDelegationException.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipRendererDelegationException.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/exception/SkipRendererDelegationException.java Sun Oct 18 18:27:44 2009
@@ -19,8 +19,8 @@
 package org.apache.myfaces.extensions.validator.core.renderkit.exception;
 
 import org.apache.myfaces.extensions.validator.core.interceptor.RendererInterceptor;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
 /**
  * @author Gerhard Petracek
@@ -32,6 +32,7 @@
     protected RendererInterceptor exceptionSource;
     protected Object information;
     boolean skipOtherInterceptors = false;
+    private static final long serialVersionUID = 2343074077532915722L;
 
     public SkipRendererDelegationException()
     {
@@ -65,7 +66,7 @@
 
     public Object getReturnValueOnException(Object currentReturnValue)
     {
-        if(this.exceptionSource != null)
+        if (this.exceptionSource != null)
         {
             return this.exceptionSource.getReturnValueOnSkipRendererDelegationException(this, currentReturnValue);
         }

Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/RequiredValidatorException.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/RequiredValidatorException.java?rev=826485&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/RequiredValidatorException.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/exception/RequiredValidatorException.java Sun Oct 18 18:27:44 2009
@@ -0,0 +1,43 @@
+/*
+ * 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.validation.exception;
+
+import javax.faces.validator.ValidatorException;
+import javax.faces.application.FacesMessage;
+
+/**
+ * to handle special cases in ValidationExceptionInterceptors
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+public class RequiredValidatorException extends ValidatorException
+{
+    private static final long serialVersionUID = -4646331736428495884L;
+
+    public RequiredValidatorException(FacesMessage facesMessage)
+    {
+        super(facesMessage);
+    }
+
+    public RequiredValidatorException(FacesMessage facesMessage, Throwable throwable)
+    {
+        super(facesMessage, throwable);
+    }
+}

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java Sun Oct 18 18:27:44 2009
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.validator.core.validation.strategy;
 
 import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.validation.exception.RequiredValidatorException;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -87,8 +88,19 @@
                 logger.trace("start processAfterValidatorException of " + getClass().getName());
             }
 
-            ValidatorException validatorException = new ValidatorException(
-                    ExtValUtils.convertFacesMessage(e.getFacesMessage()), e.getCause());
+            ValidatorException validatorException;
+
+            if(e instanceof RequiredValidatorException)
+            {
+                validatorException = new RequiredValidatorException(
+                        ExtValUtils.convertFacesMessage(e.getFacesMessage()), e.getCause());
+            }
+            else
+            {
+                validatorException = new ValidatorException(
+                        ExtValUtils.convertFacesMessage(e.getFacesMessage()), e.getCause());
+            }
+            
             if (processAfterValidatorException(
                     facesContext, uiComponent, metaDataEntry, convertedObject, validatorException))
             {

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Sun Oct 18 18:27:44 2009
@@ -26,7 +26,6 @@
 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.MessageResolver;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.ValidationParameterExtractor;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.ValidationParameterExtractorFactory;
-import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
 import org.apache.myfaces.extensions.validator.core.factory.ClassMappingFactory;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
@@ -50,6 +49,7 @@
 import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
 import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
 import org.apache.myfaces.extensions.validator.core.factory.NameMapperAwareFactory;
 import org.apache.myfaces.extensions.validator.core.factory.FacesMessageFactory;
@@ -592,10 +592,7 @@
                             LOGGER.debug(metaDataTransformer.getClass().getName() + " instantiated");
                         }
 
-                        if(!(entry.getValue() instanceof Annotation &&
-                                ExtValUtils.getValidationParameterExtractor()
-                                        .extract(entry.getValue(Annotation.class), DisableClientSideValidation.class)
-                                        .iterator().hasNext()))
+                        if(isClientSideValidationEnabled(entry))
                         {
                             metaData = metaDataTransformer.convertMetaData(entry);
                         }
@@ -626,6 +623,14 @@
         return metaDataResult;
     }
 
+    private static boolean isClientSideValidationEnabled(MetaDataEntry entry)
+    {
+        List<String> keysToDisable = entry.getProperty(
+                                CommonMetaDataKeys.DISABLE_CLIENT_SIDE_VALIDATION, List.class);
+
+        return keysToDisable == null || !keysToDisable.contains(entry.getKey());
+    }
+
     public static boolean interpretEmptyStringValuesAsNull()
     {
         //to deactivate: the parameter has to be explicitly false

Modified: myfaces/extensions/validator/branches/branch_for_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/branch_for_jsf_1_1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java Sun Oct 18 18:27:44 2009
@@ -23,6 +23,8 @@
 import org.apache.myfaces.extensions.validator.crossval.annotation.NotEquals;
 import org.apache.myfaces.extensions.validator.baseval.annotation.Length;
 import org.apache.myfaces.extensions.validator.baseval.annotation.Pattern;
+import org.apache.myfaces.extensions.validator.baseval.annotation.Required;
+import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
 
 import javax.persistence.Column;
 import javax.persistence.Temporal;
@@ -37,8 +39,9 @@
     @Pattern("[A-Z][a-z]+")
     private String firstName;
 
-    @Length(minimum = 2)
-    @Column(nullable = false, length = 20)
+    @Required(parameters = DisableClientSideValidation.class)
+    @Length(minimum = 2, parameters = DisableClientSideValidation.class)
+    @Column(length = 20)
     private String lastName;
 
     @Column(nullable = false, length = 10)

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/webapp/components/user_form.xhtml
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/webapp/components/user_form.xhtml?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/webapp/components/user_form.xhtml (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_01/src/main/webapp/components/user_form.xhtml Sun Oct 18 18:27:44 2009
@@ -35,6 +35,9 @@
 
         <tr:inputText label="first name" value="#{bean.person.firstName}"/>
         <tr:inputText label="last name" value="#{bean.person.lastName}"/>
+        <!--
+        <tr:inputText label="last name" value="#{bean.person.lastName}" requiredMessageDetail="{0} is required"/>
+        -->
         <tr:inputDate label="birthday" value="#{bean.person.birthday}">
             <tr:convertDateTime type="date" pattern="dd.MM.yyyy"/>
         </tr:inputDate>

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_02/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_02/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_02/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/examples/feature-set_02/src/main/java/org/apache/myfaces/extensions/validator/demo/domain/Person.java Sun Oct 18 18:27:44 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.demo.domain;
 
+import org.apache.myfaces.extensions.validator.beanval.payload.DisableClientSideValidation;
+
 import javax.validation.constraints.Size;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Past;
@@ -28,7 +30,8 @@
     @Size(min = 2, max = 20)
     private String firstName;
 
-    @Size(min = 2, max = 20)
+    @NotNull(payload = DisableClientSideValidation.class)
+    @Size(min = 2, max = 20, payload = DisableClientSideValidation.class)
     private String lastName;
 
     @Size(min = 2, max = 10)

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java Sun Oct 18 18:27:44 2009
@@ -44,6 +44,8 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class BeanValidationInterceptor extends AbstractValidationInterceptor
 {
+    private BeanValidationInterceptorInternals bviUtils = new BeanValidationInterceptorInternals(this.logger);
+
     @Override
     public void beforeEncodeBegin(FacesContext facesContext, UIComponent uiComponent, Renderer wrapped)
             throws IOException, SkipBeforeInterceptorsException, SkipRendererDelegationException
@@ -61,8 +63,6 @@
             logger.trace("start to init component " + uiComponent.getClass().getName());
         }
 
-        BeanValidationInterceptorInternals bviUtils = new BeanValidationInterceptorInternals(this.logger);
-
         PropertyDetails propertyDetails = bviUtils.extractPropertyDetails(facesContext, uiComponent);
 
         if (propertyDetails != null)
@@ -77,12 +77,6 @@
         }
     }
 
-    @Override
-    protected boolean recordProcessedInformation()
-    {
-        return false;
-    }
-
     protected void processValidation(FacesContext facesContext, UIComponent uiComponent, Object convertedObject)
     {
         MetaDataExtractor metaDataExtractor = ExtValUtils.getComponentMetaDataExtractor();
@@ -128,7 +122,7 @@
 
     protected boolean hasBeanValidationConstraints(PropertyInformation propertyInformation)
     {
-        return new BeanValidationInterceptorInternals(this.logger).hasBeanValidationConstraints(propertyInformation);
+        return this.bviUtils.hasBeanValidationConstraints(propertyInformation);
     }
 
     protected void processFieldValidation(FacesContext facesContext,
@@ -136,8 +130,8 @@
                                           Object convertedObject,
                                           PropertyInformation propertyInformation)
     {
-        new BeanValidationInterceptorInternals(this.logger).validate(
-                facesContext, uiComponent, convertedObject, propertyInformation, supportMultipleViolationsPerField());
+        this.bviUtils.validate(facesContext, uiComponent, convertedObject,
+                propertyInformation, supportMultipleViolationsPerField());
     }
 
     protected boolean supportMultipleViolationsPerField()

Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java?rev=826485&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/AbstractBeanValidationMetaDataTransformer.java Sun Oct 18 18:27:44 2009
@@ -0,0 +1,64 @@
+/*
+ * 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.beanval.metadata.transformer;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.beanval.payload.DisableClientSideValidation;
+
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.Payload;
+import java.util.Map;
+import java.util.HashMap;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation({UsageCategory.REUSE})
+public abstract class AbstractBeanValidationMetaDataTransformer<T extends Annotation> implements MetaDataTransformer
+{
+    public Map<String, Object> convertMetaData(MetaDataEntry metaDataEntry)
+    {
+        ConstraintDescriptor<? extends T> constraintDescriptor = metaDataEntry.getValue(ConstraintDescriptor.class);
+
+        if(isClientSideValidationEnabled(constraintDescriptor))
+        {
+            return convertConstraintDescriptor((ConstraintDescriptor<T>)constraintDescriptor);
+        }
+        return new HashMap<String, Object>();
+    }
+
+    private boolean isClientSideValidationEnabled(ConstraintDescriptor<? extends T> constraintDescriptor)
+    {
+        for(Class<? extends Payload> payload : constraintDescriptor.getPayload())
+        {
+            if(DisableClientSideValidation.class.isAssignableFrom(payload))
+            {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    protected abstract Map<String, Object> convertConstraintDescriptor(ConstraintDescriptor<T> constraintDescriptor);
+}

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java Sun Oct 18 18:27:44 2009
@@ -18,10 +18,10 @@
  */
 package org.apache.myfaces.extensions.validator.beanval.metadata.transformer;
 
-import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 
+import javax.validation.constraints.NotNull;
+import javax.validation.metadata.ConstraintDescriptor;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -29,9 +29,9 @@
  * @author Gerhard Petracek
  * @since x.x.3
  */
-public class NotNullMetaDataTransformer implements MetaDataTransformer
+public class NotNullMetaDataTransformer extends AbstractBeanValidationMetaDataTransformer<NotNull>
 {
-    public Map<String, Object> convertMetaData(MetaDataEntry metaDataEntry)
+    protected Map<String, Object> convertConstraintDescriptor(ConstraintDescriptor<NotNull> constraintDescriptor)
     {
         Map<String, Object> results = new HashMap<String, Object>();
         results.put(CommonMetaDataKeys.WEAK_REQUIRED, true);

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/StringSizeMetaDataTransformer.java Sun Oct 18 18:27:44 2009
@@ -18,8 +18,6 @@
  */
 package org.apache.myfaces.extensions.validator.beanval.metadata.transformer;
 
-import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
-import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
 import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
 
 import javax.validation.constraints.Size;
@@ -31,12 +29,12 @@
  * @author Gerhard Petracek
  * @since x.x.3
  */
-public class StringSizeMetaDataTransformer implements MetaDataTransformer
+public class StringSizeMetaDataTransformer extends AbstractBeanValidationMetaDataTransformer<Size>
 {
-    public Map<String, Object> convertMetaData(MetaDataEntry metaDataEntry)
+    protected Map<String, Object> convertConstraintDescriptor(ConstraintDescriptor<Size> constraintDescriptor)
     {
         Map<String, Object> results = new HashMap<String, Object>();
-        Size annotation = (Size)metaDataEntry.getValue(ConstraintDescriptor.class).getAnnotation();
+        Size annotation = constraintDescriptor.getAnnotation();
 
         int minimum = annotation.min();
 

Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper.java?rev=826485&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper.java Sun Oct 18 18:27:44 2009
@@ -0,0 +1,50 @@
+/*
+ * 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.beanval.metadata.transformer.mapper;
+
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
+        .AbstractValidationStrategyToMetaDataTransformerNameMapper;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation({UsageCategory.REUSE})
+public abstract class AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper
+    extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+{
+    public final String createName(ValidationStrategy source)
+    {
+        if(source instanceof BeanValidationVirtualValidationStrategy)
+        {
+            BeanValidationVirtualValidationStrategy beanValidationAdapter =
+                    (BeanValidationVirtualValidationStrategy)source;
+
+            return createBeanValidationTransformerName(beanValidationAdapter);
+        }
+        return null;
+    }
+
+    protected  abstract String createBeanValidationTransformerName(
+            BeanValidationVirtualValidationStrategy validationStrategy);
+}

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java Sun Oct 18 18:27:44 2009
@@ -18,16 +18,13 @@
  */
 package org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper;
 
-import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.NotNullMetaDataTransformer;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.Nested;
-import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
-        .AbstractValidationStrategyToMetaDataTransformerNameMapper;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
-import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
-import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.NotNullMetaDataTransformer;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
-import javax.validation.metadata.ConstraintDescriptor;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -35,23 +32,16 @@
  * @since x.x.3
  */
 @Nested
+@InvocationOrder(100)
 @UsageInformation({UsageCategory.INTERNAL})
-public class NotNullNameMapper extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+public class NotNullNameMapper extends AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper
 {
-    public String createName(ValidationStrategy source)
+    protected String createBeanValidationTransformerName(BeanValidationVirtualValidationStrategy adapter)
     {
-        if(source instanceof BeanValidationVirtualValidationStrategy)
+        if(NotNull.class.getName().equals(adapter.getConstraintDescriptor().getAnnotation().annotationType().getName()))
         {
-            BeanValidationVirtualValidationStrategy beanValidationAdapter =
-                    (BeanValidationVirtualValidationStrategy)source;
-
-            ConstraintDescriptor descriptor = beanValidationAdapter.getConstraintDescriptor();
-
-            if(NotNull.class.getName().equals(descriptor.getAnnotation().annotationType().getName()))
-            {
-                return NotNullMetaDataTransformer.class.getName();
-            }
+            return NotNullMetaDataTransformer.class.getName();
         }
         return null;
     }
-}
+}
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java Sun Oct 18 18:27:44 2009
@@ -18,16 +18,13 @@
  */
 package org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper;
 
-import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.Nested;
-import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
-        .AbstractValidationStrategyToMetaDataTransformerNameMapper;
+import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
 import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.StringSizeMetaDataTransformer;
 
-import javax.validation.metadata.ConstraintDescriptor;
 import javax.validation.constraints.Size;
 
 /**
@@ -35,23 +32,16 @@
  * @since x.x.3
  */
 @Nested
+@InvocationOrder(101)
 @UsageInformation({UsageCategory.INTERNAL})
-public class SizeNameMapper extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+public class SizeNameMapper extends AbstractBeanValidationVirtualValidationStrategyToMetaDataTransformerNameMapper
 {
-    public String createName(ValidationStrategy source)
+    protected String createBeanValidationTransformerName(BeanValidationVirtualValidationStrategy adapter)
     {
-        if(source instanceof BeanValidationVirtualValidationStrategy)
+        if(Size.class.getName().equals(adapter.getConstraintDescriptor().getAnnotation().annotationType().getName()) &&
+                String.class.getName().equals(adapter.getElementClass().getName()))
         {
-            BeanValidationVirtualValidationStrategy beanValidationAdapter =
-                    (BeanValidationVirtualValidationStrategy)source;
-
-            ConstraintDescriptor descriptor = beanValidationAdapter.getConstraintDescriptor();
-
-            if(Size.class.getName().equals(descriptor.getAnnotation().annotationType().getName()) &&
-                    String.class.getName().equals(beanValidationAdapter.getElementClass().getName()))
-            {
-                return StringSizeMetaDataTransformer.class.getName();
-            }
+            return StringSizeMetaDataTransformer.class.getName();
         }
         return null;
     }

Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/DisableClientSideValidation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/DisableClientSideValidation.java?rev=826485&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/DisableClientSideValidation.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/payload/DisableClientSideValidation.java Sun Oct 18 18:27:44 2009
@@ -0,0 +1,33 @@
+/*
+ * 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.beanval.payload;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.validation.Payload;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.API)
+public interface DisableClientSideValidation extends Payload
+{
+}

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java Sun Oct 18 18:27:44 2009
@@ -24,6 +24,7 @@
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.ViolationSeverity;
+import org.apache.myfaces.extensions.validator.core.validation.exception.RequiredValidatorException;
 import org.apache.myfaces.extensions.validator.core.InvocationOrder;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -75,6 +76,8 @@
             String label = (String) ReflectionUtils.tryToInvokeMethod(uiComponent,
                 ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getLabel"));
 
+            handleRequiredValidatorException(uiComponent, validatorException);
+
             if(label == null)
             {
                 label = uiComponent.getClientId(facesContext);
@@ -113,6 +116,27 @@
         return true;
     }
 
+    private void handleRequiredValidatorException(UIComponent uiComponent, ValidatorException validatorException)
+    {
+        if(validatorException instanceof RequiredValidatorException)
+        {
+            FacesMessage facesMessage = validatorException.getFacesMessage();
+            String inlineMessage = getInlineRequiredMessage(uiComponent);
+
+            if(inlineMessage != null)
+            {
+                facesMessage.setSummary(inlineMessage);
+                facesMessage.setDetail(inlineMessage);
+            }
+        }
+    }
+
+    private String getInlineRequiredMessage(UIComponent uiComponent)
+    {
+        return (String)ReflectionUtils.tryToInvokeMethod(uiComponent,
+                ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getRequiredMessage"));
+    }
+
     @ToDo(value = Priority.MEDIUM, description = "refactor to a generic parameter extractor")
     private boolean displayAsException(FacesMessage facesMessage, Annotation annotation)
     {

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/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/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JpaMetaDataTransformer.java Sun Oct 18 18:27:44 2009
@@ -25,6 +25,7 @@
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
 import javax.persistence.Basic;
 import javax.persistence.Column;
@@ -49,7 +50,7 @@
 
         if(annotation instanceof Column)
         {
-            if(!((Column) annotation).nullable())
+            if((!((Column) annotation).nullable()) && ExtValUtils.interpretEmptyStringValuesAsNull())
             {
                 results.put(CommonMetaDataKeys.REQUIRED, true);
             }

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/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/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java Sun Oct 18 18:27:44 2009
@@ -22,6 +22,7 @@
 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.core.validation.message.resolver.AbstractValidationErrorMessageResolver;
+import org.apache.myfaces.extensions.validator.core.validation.exception.RequiredValidatorException;
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
@@ -128,10 +129,10 @@
     @ToDo(Priority.MEDIUM)
     private void checkRequiredConvertedObject(Object convertedObject) throws ValidatorException
     {
-        if (convertedObject == null || convertedObject.equals(""))
+        if (convertedObject == null || ("".equals(convertedObject) && ExtValUtils.interpretEmptyStringValuesAsNull()))
         {
             this.violation = CommonMetaDataKeys.REQUIRED;
-            throw new ValidatorException(getValidationErrorFacesMessage(null));
+            throw new RequiredValidatorException(getValidationErrorFacesMessage(null));
         }
     }
 

Modified: myfaces/extensions/validator/branches/branch_for_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/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java?rev=826485&r1=826484&r2=826485&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java Sun Oct 18 18:27:44 2009
@@ -23,6 +23,7 @@
 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.core.validation.message.resolver.AbstractValidationErrorMessageResolver;
+import org.apache.myfaces.extensions.validator.core.validation.exception.RequiredValidatorException;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -51,7 +52,8 @@
                 (convertedObject instanceof Collection && ((Collection)convertedObject).isEmpty()) ||
                 (convertedObject instanceof Map && ((Map)convertedObject).isEmpty()))
         {
-            throw new ValidatorException(getValidationErrorFacesMessage(metaDataEntry.getValue(Required.class)));
+            throw new RequiredValidatorException(
+                    getValidationErrorFacesMessage(metaDataEntry.getValue(Required.class)));
         }
     }