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/11/24 01:46:18 UTC

svn commit: r720079 - 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: Sun Nov 23 16:46:16 2008
New Revision: 720079

URL: http://svn.apache.org/viewvc?rev=720079&view=rev
Log:
initCrossValidation, processAfterCrossValidatorException, RequiredIfStrategy: join default required message, new messages

Added:
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_de.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_en.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_de.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_en.properties
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
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/JsfUtils.java
    myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/RequiredStrategy.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ar.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ca.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_es.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_fr.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_it.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_tr.properties
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java
    myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java

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=720079&r1=720078&r2=720079&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 Sun Nov 23 16:46:16 2008
@@ -67,9 +67,13 @@
             {
                 if(processComponent(uiComponent))
                 {
-                    ReflectionUtils
-                        .tryToInvokeMethodOfClassAndMethodName(uiComponent.getClass().getName(), "setMaximumLength",
-                            new Object[] {maxLength}, new Class[] {int.class});
+                    ReflectionUtils.tryToInvokeMethod(
+                            uiComponent,
+                            ReflectionUtils.tryToGetMethod(
+                                    uiComponent.getClass(),
+                                    "setMaximumLength",
+                                    int.class),
+                            maxLength);
                 }
                 lengthValidator.setMaximum((Integer)maxLength);
                 informationAdded = true;

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.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/AbstractAnnotationValidationStrategy.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java Sun Nov 23 16:46:16 2008
@@ -32,7 +32,6 @@
 import java.lang.annotation.Annotation;
 import java.util.Locale;
 import java.util.MissingResourceException;
-import java.util.ResourceBundle;
 
 /**
  * Provides the ability of message resolving to ValidationStrategies
@@ -90,19 +89,6 @@
         this.messageResolver = messageResolver;
     }
 
-    protected ResourceBundle getDefaultFacesMessageBundle()
-    {
-        FacesContext facesContext = FacesContext.getCurrentInstance();
-        String bundleName = facesContext.getApplication().getMessageBundle();
-
-        if(bundleName == null)
-        {
-            bundleName = FacesMessage.FACES_MESSAGES;
-        }
-
-        return ResourceBundle.getBundle(bundleName, facesContext.getViewRoot().getLocale());
-    }
-
     @Override
     protected boolean processAfterValidatorException(FacesContext facesContext,
                                                      UIComponent uiComponent,

Modified: myfaces/extensions/validator/branches/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/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Sun Nov 23 16:46:16 2008
@@ -42,6 +42,7 @@
 import javax.faces.validator.ValidatorException;
 import javax.faces.application.FacesMessage;
 import java.util.Map;
+import java.util.MissingResourceException;
 
 
 /**
@@ -51,6 +52,12 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class ExtValUtils
 {
+    private static final String JAVAX_FACES_REQUIRED = "javax.faces.component.UIInput.REQUIRED";
+    private static final String JAVAX_FACES_REQUIRED_DETAIL = "javax.faces.component.UIInput.REQUIRED_detail";
+
+    private static final String JAVAX_FACES_MAXIMUM = "javax.faces.validator.LengthValidator.MAXIMUM";
+    private static final String JAVAX_FACES_MAXIMUM_DETAIL = "javax.faces.validator.LengthValidator.MAXIMUM_detail";
+
     public static ValidationStrategy getValidationStrategyForMetaData(String metaDataKey)
     {
         return ((ClassMappingFactory<Object, ValidationStrategy>) ExtValContext.getContext()
@@ -149,4 +156,55 @@
             facesMessage.setDetail(facesMessage.getDetail().replace("{" + index + "}", label));
         }
     }
+
+    @UsageInformation(UsageCategory.INTERNAL)
+    public static void replaceWithDefaultMaximumMessage(FacesMessage facesMessage, int maxLength)
+    {
+        String facesRequiredMessage = JsfUtils.getDefaultFacesMessageBundle().getString(JAVAX_FACES_MAXIMUM);
+        String facesRequiredMessageDetail = facesRequiredMessage;
+
+        //use try/catch for easier sync between trunk/branch
+        try
+        {
+            if(JsfUtils.getDefaultFacesMessageBundle().getString(JAVAX_FACES_MAXIMUM_DETAIL) != null)
+            {
+                facesRequiredMessageDetail = JsfUtils
+                        .getDefaultFacesMessageBundle().getString(JAVAX_FACES_MAXIMUM_DETAIL);
+            }
+        }
+        catch (MissingResourceException missingResourceException)
+        {
+            //jsf 1.2 doesn't have a detail message
+        }
+
+        facesRequiredMessage = facesRequiredMessage.replace("{0}", "" + maxLength);
+        facesRequiredMessageDetail = facesRequiredMessageDetail.replace("{0}", "" + maxLength);
+
+        facesMessage.setSummary(facesRequiredMessage);
+        facesMessage.setDetail(facesRequiredMessageDetail);
+    }
+
+    @UsageInformation(UsageCategory.INTERNAL)
+    public static void replaceWithDefaultRequiredMessage(FacesMessage facesMessage)
+    {
+        String facesRequiredMessage = JsfUtils.getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED);
+        String facesRequiredMessageDetail = facesRequiredMessage;
+
+        //use try/catch for easier sync between trunk/branch
+        try
+        {
+            if(JsfUtils.getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED_DETAIL) != null)
+            {
+                facesRequiredMessageDetail = JsfUtils
+                        .getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED_DETAIL);
+            }
+        }
+        catch (MissingResourceException missingResourceException)
+        {
+            //jsf 1.2 doesn't have a detail message
+        }
+
+        facesMessage.setSummary(facesRequiredMessage);
+        facesMessage.setDetail(facesRequiredMessageDetail);
+    }
 }

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/JsfUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/JsfUtils.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/JsfUtils.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/JsfUtils.java Sun Nov 23 16:46:16 2008
@@ -22,10 +22,13 @@
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
 import javax.faces.FactoryFinder;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseListener;
 import javax.faces.lifecycle.Lifecycle;
 import javax.faces.lifecycle.LifecycleFactory;
 import java.util.Iterator;
+import java.util.ResourceBundle;
 
 
 /**
@@ -49,4 +52,17 @@
             currentLifecycle.removePhaseListener(phaseListener);
         }
     }
+
+    public static ResourceBundle getDefaultFacesMessageBundle()
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        String bundleName = facesContext.getApplication().getMessageBundle();
+
+        if(bundleName == null)
+        {
+            bundleName = FacesMessage.FACES_MESSAGES;
+        }
+
+        return ResourceBundle.getBundle(bundleName, facesContext.getViewRoot().getLocale());
+    }
 }

Modified: myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java Sun Nov 23 16:46:16 2008
@@ -37,7 +37,7 @@
         return tryToGetMethod(targetClass, targetMethodName, null);
     }
 
-    public static Method tryToGetMethod(Class targetClass, String targetMethodName, Class[] parameterTypes)
+    public static Method tryToGetMethod(Class targetClass, String targetMethodName, Class... parameterTypes)
     {
         try
         {
@@ -56,10 +56,53 @@
         return getMethod(targetClass, targetMethodName, null);
     }
 
-    public static Method getMethod(Class targetClass, String targetMethodName, Class[] parameterTypes)
+    public static Method getMethod(Class targetClass, String targetMethodName, Class... parameterTypes)
         throws NoSuchMethodException
     {
-        return targetClass.getMethod(targetMethodName, parameterTypes);
+        Class currentClass = targetClass;
+        Method targetMethod = null;
+        
+        while (!Object.class.getName().equals(currentClass.getName()))
+        {
+            try
+            {
+                targetMethod = currentClass.getDeclaredMethod(targetMethodName, parameterTypes);
+                break;
+            }
+            catch (NoSuchMethodException e)
+            {
+                currentClass = currentClass.getSuperclass();
+            }
+        }
+
+        if(targetMethod == null)
+        {
+            for (Class currentInterface : targetClass.getInterfaces())
+            {
+                currentClass = currentInterface;
+
+                while (currentClass != null)
+                {
+                    try
+                    {
+                        targetMethod = currentClass.getDeclaredMethod(targetMethodName, parameterTypes);
+                        break;
+                    }
+                    catch (NoSuchMethodException e)
+                    {
+                        currentClass = currentClass.getSuperclass();
+                    }
+                }
+            }
+        }
+
+        if(targetMethod != null)
+        {
+            return targetMethod;
+        }
+
+        throw new NoSuchMethodException("there is no method with the name '" + targetMethodName + "'" +
+                " class: " + targetClass.getName());
     }
 
     public static Object tryToInvokeMethod(Object target, Method method)
@@ -72,36 +115,6 @@
         return tryToInvokeMethodOfClass(target, method, null);
     }
 
-    public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName)
-    {
-        return tryToInvokeMethodOfClassAndMethodName(className, methodName, null);
-    }
-
-    public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName, Object[] args)
-    {
-        Class[] targetArgs = new Class[0];
-
-        if(args != null)
-        {
-            targetArgs = new Class[args.length];
-
-            for(int i = 0; i < args.length; i++)
-            {
-                targetArgs[i] = args[i].getClass();
-            }
-        }
-
-        return tryToInvokeMethodOfClassAndMethodName(className, methodName, args, targetArgs);
-    }
-
-    public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName,
-                                                               Object[] args, Class[] argTypes)
-    {
-        Class targetClass = ClassUtils.tryToLoadClassForName(className);
-        Method targetMethod = tryToGetMethod(targetClass, methodName, argTypes);
-        return tryToInvokeMethodOfClass(targetClass, targetMethod, args);
-    }
-
     public static Object tryToInvokeMethodOfClass(Class target, Method method, Object[] args)
     {
         try
@@ -121,17 +134,17 @@
         return invokeMethod(target.newInstance(), method, null);
     }
 
-    public static Object invokeMethodOfClass(Class target, Method method, Object[] args)
+    public static Object invokeMethodOfClass(Class target, Method method, Object... args)
         throws IllegalAccessException, InstantiationException, InvocationTargetException
     {
         return invokeMethod(target.newInstance(), method, args);
     }
 
-    public static Object tryToInvokeMethod(Object target, Method method, Object[] args)
+    public static Object tryToInvokeMethod(Object target, Method method, Object... args)
     {
         try
         {
-            return method.invoke(target, args);
+            return invokeMethod(target, method, args);
         }
         catch (Throwable t)
         {
@@ -146,9 +159,10 @@
         return invokeMethod(target, method, null);
     }
 
-    public static Object invokeMethod(Object target, Method method, Object[] args)
+    public static Object invokeMethod(Object target, Method method, Object... args)
         throws InvocationTargetException, IllegalAccessException
     {
+        method.setAccessible(true);
         return method.invoke(target, args);
     }
 

Added: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_de.properties
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/message/bundle/validation_messages_de.properties?rev=720079&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_de.properties (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_de.properties Sun Nov 23 16:46:16 2008
@@ -0,0 +1,19 @@
+# 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.
+
+no_match=Ungültiges Format
+no_match_detail=Das erforderliche Format ist: {0}
\ No newline at end of file

Added: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_en.properties
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/message/bundle/validation_messages_en.properties?rev=720079&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_en.properties (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/bundle/validation_messages_en.properties Sun Nov 23 16:46:16 2008
@@ -0,0 +1,19 @@
+# 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.
+
+no_match=Invalid format
+no_match_detail=The required formate is: {0}
\ 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/JpaValidationStrategy.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/JpaValidationStrategy.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java Sun Nov 23 16:46:16 2008
@@ -26,6 +26,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.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -37,7 +38,6 @@
 import javax.persistence.OneToOne;
 import javax.persistence.Id;
 import java.lang.annotation.Annotation;
-import java.util.MissingResourceException;
 
 /**
  * @author Gerhard Petracek
@@ -47,11 +47,6 @@
 public class JpaValidationStrategy extends AbstractAnnotationValidationStrategy
 {
     private boolean useFacesBundle = false;
-    private static final String JAVAX_FACES_REQUIRED = "javax.faces.component.UIInput.REQUIRED";
-    private static final String JAVAX_FACES_REQUIRED_DETAIL = "javax.faces.component.UIInput.REQUIRED_detail";
-    private static final String JAVAX_FACES_MAXIMUM = "javax.faces.validator.LengthValidator.MAXIMUM";
-    private static final String JAVAX_FACES_MAXIMUM_DETAIL = "javax.faces.validator.LengthValidator.MAXIMUM_detail";
-
     private static final String VALIDATE_LENGTH = "length";
 
     private String violation;
@@ -191,53 +186,14 @@
 
         if(this.useFacesBundle)
         {
-            String facesRequiredMessage;
-            String facesRequiredMessageDetail;
-
             if(VALIDATE_LENGTH.equals(this.violation))
             {
-                facesRequiredMessage = getDefaultFacesMessageBundle().getString(JAVAX_FACES_MAXIMUM);
-                facesRequiredMessageDetail = facesRequiredMessage;
-
-                //use try/catch for easier sync between trunk/branch
-                try
-                {
-                    if(getDefaultFacesMessageBundle().getString(JAVAX_FACES_MAXIMUM_DETAIL) != null)
-                    {
-                        facesRequiredMessageDetail = getDefaultFacesMessageBundle()
-                                .getString(JAVAX_FACES_MAXIMUM_DETAIL);
-                    }
-                }
-                catch (MissingResourceException missingResourceException)
-                {
-                    //jsf 1.2 doesn't have a detail message
-                }
-
-                facesRequiredMessage = facesRequiredMessage.replace("{0}", "" + this.maxLength);
-                facesRequiredMessageDetail = facesRequiredMessageDetail.replace("{0}", "" + this.maxLength);
+                ExtValUtils.replaceWithDefaultMaximumMessage(facesMessage, this.maxLength);
             }
             else
             {
-                facesRequiredMessage = getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED);
-                facesRequiredMessageDetail = facesRequiredMessage;
-
-                //use try/catch for easier sync between trunk/branch
-                try
-                {
-                    if(getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED_DETAIL) != null)
-                    {
-                        facesRequiredMessageDetail = getDefaultFacesMessageBundle()
-                                .getString(JAVAX_FACES_REQUIRED_DETAIL);
-                    }
-                }
-                catch (MissingResourceException missingResourceException)
-                {
-                    //jsf 1.2 doesn't have a detail message
-                }
+                ExtValUtils.replaceWithDefaultRequiredMessage(facesMessage);
             }
-
-            facesMessage.setSummary(facesRequiredMessage);
-            facesMessage.setDetail(facesRequiredMessageDetail);
         }
 
         return super.processAfterValidatorException(facesContext, uiComponent, metaDataEntry, convertedObject, e);

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=720079&r1=720078&r2=720079&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 Sun Nov 23 16:46:16 2008
@@ -25,15 +25,14 @@
 import org.apache.myfaces.extensions.validator.core.validation.message.resolver.AbstractValidationErrorMessageResolver;
 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.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.validator.ValidatorException;
-import javax.faces.application.FacesMessage;
 import java.lang.annotation.Annotation;
 import java.util.Map;
 import java.util.Collection;
-import java.util.MissingResourceException;
 
 /**
  * @author Gerhard Petracek
@@ -44,8 +43,6 @@
 public class RequiredStrategy extends AbstractAnnotationValidationStrategy
 {
     private boolean useFacesBundle = false;
-    private static final String JAVAX_FACES_REQUIRED = "javax.faces.component.UIInput.REQUIRED";
-    private static final String JAVAX_FACES_REQUIRED_DETAIL = "javax.faces.component.UIInput.REQUIRED_detail";
 
     public void processValidation(FacesContext facesContext,
             UIComponent uiComponent, MetaDataEntry metaDataEntry,
@@ -85,28 +82,9 @@
                                                      Object convertedObject,
                                                      ValidatorException e)
     {
-        FacesMessage facesMessage = e.getFacesMessage();
-
         if(this.useFacesBundle)
         {
-            String facesRequiredMessage = getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED);
-            String facesRequiredMessageDetail = facesRequiredMessage;
-
-            //use try/catch for easier sync between trunk/branch
-            try
-            {
-                if(getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED_DETAIL) != null)
-                {
-                    facesRequiredMessageDetail = getDefaultFacesMessageBundle().getString(JAVAX_FACES_REQUIRED_DETAIL);
-                }
-            }
-            catch (MissingResourceException missingResourceException)
-            {
-                //jsf 1.2 doesn't have a detail message
-            }
-
-            facesMessage.setSummary(facesRequiredMessage);
-            facesMessage.setDetail(facesRequiredMessageDetail);
+            ExtValUtils.replaceWithDefaultRequiredMessage(e.getFacesMessage());
         }
 
         return super.processAfterValidatorException(facesContext, uiComponent, metaDataEntry, convertedObject, e);

Modified: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.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/crossval/CrossValidationPhaseListener.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java Sun Nov 23 16:46:16 2008
@@ -20,15 +20,17 @@
 
 import org.apache.myfaces.extensions.validator.util.CrossValidationUtils;
 import org.apache.myfaces.extensions.validator.util.JsfUtils;
-import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.crossval.strategy.AbstractCrossValidationStrategy;
 
 import javax.faces.application.FacesMessage;
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
 import javax.faces.validator.ValidatorException;
+import javax.faces.FacesException;
 
 /**
  * This phase listener processes cross validation as soon as it finds a special request scoped storage.<br/>
@@ -54,14 +56,46 @@
             {
                 try
                 {
+                    if(entry.getValidationStrategy() instanceof AbstractCrossValidationStrategy)
+                    {
+                        ReflectionUtils.tryToInvokeMethod(
+                                entry.getValidationStrategy(),
+                                ReflectionUtils.tryToGetMethod(
+                                        entry.getValidationStrategy().getClass(),
+                                        "initCrossValidation",
+                                        CrossValidationStorageEntry.class),
+                                entry);
+                    }
+
                     entry.getValidationStrategy().processCrossValidation(entry, crossValidationStorage);
                 }
-                catch (ValidatorException e)
+                catch (ValidatorException validatorException)
                 {
-                    if(ExtValUtils.executeAfterThrowingInterceptors(
-                            entry.getComponent(), entry.getMetaDataEntry(), entry.getConvertedObject(), e))
+                    boolean addMessage = true;
+
+                    if(entry.getValidationStrategy() instanceof AbstractCrossValidationStrategy)
+                    {
+                        try
+                        {
+                            addMessage = (Boolean)ReflectionUtils.tryToInvokeMethod(
+                                    entry.getValidationStrategy(),
+                                    ReflectionUtils.tryToGetMethod(
+                                            entry.getValidationStrategy().getClass(),
+                                            "processAfterCrossValidatorException",
+                                            CrossValidationStorageEntry.class,
+                                            validatorException.getClass()),
+                                    entry,
+                                    validatorException);
+                        }
+                        catch (Throwable e)
+                        {
+                            throw new FacesException(e);
+                        }
+                    }
+
+                    if(addMessage)
                     {
-                        FacesMessage facesMessage = e.getFacesMessage();
+                        FacesMessage facesMessage = validatorException.getFacesMessage();
 
                         if (facesMessage != null &&
                                 facesMessage.getSummary() != null && facesMessage.getDetail() != null)

Modified: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages.properties
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/crossval/message/bundle/validation_messages.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages.properties Sun Nov 23 16:46:16 2008
@@ -15,23 +15,20 @@
 # specific language governing permissions and limitations
 # under the License.
 
-duplicated_content_required=input is different
-duplicated_content_required_detail=input is different
+duplicated_content_required=Input is different
+duplicated_content_required_detail=Input is different
 
-duplicated_content_denied=same input isn't allowed
-duplicated_content_denied_detail=same input isn't allowed
+duplicated_content_denied=Same input isn't allowed
+duplicated_content_denied_detail=Same input isn't allowed
 
-wrong_date=wrong date
-wrong_date_detail=wrong date
+wrong_date=Wrong date
+wrong_date_detail=Wrong date
 
-wrong_date_not_before=date has to be after {0}
-wrong_date_not_before_detail=date has to be after {0}
+wrong_date_not_before=Date has to be after {0}
+wrong_date_not_before_detail=Date has to be after {0}
 
-wrong_date_not_after=date has to be before {0}
-wrong_date_not_after_detail=date has to be before {0}
+wrong_date_not_after=Date has to be before {0}
+wrong_date_not_after_detail=Date has to be before {0}
 
-wrong_date_not_equal=date isn't equal to {0}
-wrong_date_not_equal_detail=date isn't equal to {0}
-
-empty_field=field is required
-empty_field_detail=field is required
\ No newline at end of file
+wrong_date_not_equal=Date isn't equal to {0}
+wrong_date_not_equal_detail=Date isn't equal to {0}
\ 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/crossval/message/bundle/validation_messages_ar.properties
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/crossval/message/bundle/validation_messages_ar.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ar.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ar.properties Sun Nov 23 16:46:16 2008
@@ -31,7 +31,4 @@
 wrong_date_not_after_detail=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643 \u0648\u0646 \u0642\u0628\u0644 {0}
 
 wrong_date_not_equal=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0644\u0627 \u064a\u0633\u0627\u0648\u0649 {0}
-wrong_date_not_equal_detail=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0644\u0627 \u064a\u0633\u0627\u0648\u0649 {0}
-
-empty_field=\u0645\u0637\u0644\u0648\u0628 \u0625\u062f\u062e\u0627\u0644 \u0642\u064a\u0645\u0629 \u0644\u0647 \u0630\u0627 \u0627\u0644\u062d\u0642\u0644
-empty_field_detail=\u0645\u0637\u0644\u0648\u0628 \u0625\u062f\u062e\u0627\u0644 \u0642\u064a\u0645\u0629 \u0644\u0647 \u0630\u0627 \u0627\u0644\u062d\u0642\u0644
\ No newline at end of file
+wrong_date_not_equal_detail=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0644\u0627 \u064a\u0633\u0627\u0648\u0649 {0}
\ 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/crossval/message/bundle/validation_messages_ca.properties
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/crossval/message/bundle/validation_messages_ca.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ca.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_ca.properties Sun Nov 23 16:46:16 2008
@@ -31,7 +31,4 @@
 wrong_date_not_after_detail=la data ha de ser posterior a {0}
 
 wrong_date_not_equal=la data no \u000e9s igual a {0}
-wrong_date_not_equal_detail=la data no \u000e9s igual a {0}
-
-empty_field=data requerida
-empty_field_detail=data requerida
\ No newline at end of file
+wrong_date_not_equal_detail=la data no \u000e9s igual a {0}
\ No newline at end of file

Added: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_de.properties
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/crossval/message/bundle/validation_messages_de.properties?rev=720079&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_de.properties (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_de.properties Sun Nov 23 16:46:16 2008
@@ -0,0 +1,34 @@
+# 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.
+
+duplicated_content_required=Input is different
+duplicated_content_required_detail=Input is different
+
+duplicated_content_denied=Same input isn't allowed
+duplicated_content_denied_detail=Same input isn't allowed
+
+wrong_date=Wrong date
+wrong_date_detail=Wrong date
+
+wrong_date_not_before=Date has to be after {0}
+wrong_date_not_before_detail=Date has to be after {0}
+
+wrong_date_not_after=Date has to be before {0}
+wrong_date_not_after_detail=Date has to be before {0}
+
+wrong_date_not_equal=Date isn't equal to {0}
+wrong_date_not_equal_detail=Date isn't equal to {0}
\ No newline at end of file

Added: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_en.properties
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/crossval/message/bundle/validation_messages_en.properties?rev=720079&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_en.properties (added)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_en.properties Sun Nov 23 16:46:16 2008
@@ -0,0 +1,34 @@
+# 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.
+
+duplicated_content_required=Input is different
+duplicated_content_required_detail=Input is different
+
+duplicated_content_denied=Same input isn't allowed
+duplicated_content_denied_detail=Same input isn't allowed
+
+wrong_date=Wrong date
+wrong_date_detail=Wrong date
+
+wrong_date_not_before=Date has to be after {0}
+wrong_date_not_before_detail=Date has to be after {0}
+
+wrong_date_not_after=Date has to be before {0}
+wrong_date_not_after_detail=Date has to be before {0}
+
+wrong_date_not_equal=Date isn't equal to {0}
+wrong_date_not_equal_detail=Date isn't equal to {0}
\ 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/crossval/message/bundle/validation_messages_es.properties
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/crossval/message/bundle/validation_messages_es.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_es.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_es.properties Sun Nov 23 16:46:16 2008
@@ -31,7 +31,4 @@
 wrong_date_not_after_detail=la fecha tiene que ser antes de {0}
 
 wrong_date_not_equal=la fecha no es igual a {0}
-wrong_date_not_equal_detail=la fecha no es igual a {0}
-
-empty_field=la fecha es requerida
-empty_field_detail=la fecha es requerida
\ No newline at end of file
+wrong_date_not_equal_detail=la fecha no es igual a {0}
\ 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/crossval/message/bundle/validation_messages_fr.properties
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/crossval/message/bundle/validation_messages_fr.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_fr.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_fr.properties Sun Nov 23 16:46:16 2008
@@ -31,8 +31,4 @@
 wrong_date_not_after_detail=La date doit &ecirc;tre avant {0}
 
 wrong_date_not_equal=La date n'est pas &eacute;gale &agrave; {0}
-wrong_date_not_equal_detail=La date n'est pas &eacute;gale &agrave; {0}
-
-empty_field=Le champ est requis
-empty_field_detail=Le champ est requis
-
+wrong_date_not_equal_detail=La date n'est pas &eacute;gale &agrave; {0}
\ 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/crossval/message/bundle/validation_messages_it.properties
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/crossval/message/bundle/validation_messages_it.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_it.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_it.properties Sun Nov 23 16:46:16 2008
@@ -31,7 +31,4 @@
 wrong_date_not_after_detail=La data deve essere prima di {0}
 
 wrong_date_not_equal=La data non &egrave; uguale a {0}
-wrong_date_not_equal_detail=La data non &egrave; uguale a {0}
-
-empty_field=Il campo &egrave; obbligatorio
-empty_field_detail=Il campo &egrave; obbligatorio
\ No newline at end of file
+wrong_date_not_equal_detail=La data non &egrave; uguale a {0}
\ 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/crossval/message/bundle/validation_messages_tr.properties
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/crossval/message/bundle/validation_messages_tr.properties?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_tr.properties (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/message/bundle/validation_messages_tr.properties Sun Nov 23 16:46:16 2008
@@ -32,7 +32,4 @@
 wrong_date_not_after_detail=tarih {0} de\u011ferinden \u00f6nce olmal\u0131d\u0131r
 
 wrong_date_not_equal=tarih {0} de\u011ferine e\u015fit de\u011fil
-wrong_date_not_equal_detail=tarih {0} de\u011ferine e\u015fit de\u011fil
-
-empty_field=alan zorunludur
-empty_field_detail=alan zorunludur
+wrong_date_not_equal_detail=tarih {0} de\u011ferine e\u015fit de\u011fil
\ 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/crossval/strategy/AbstractCrossValidationStrategy.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/crossval/strategy/AbstractCrossValidationStrategy.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCrossValidationStrategy.java Sun Nov 23 16:46:16 2008
@@ -22,6 +22,7 @@
 import org.apache.myfaces.extensions.validator.core.validation.strategy.AbstractAnnotationValidationStrategy;
 import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorageEntry;
 import org.apache.myfaces.extensions.validator.util.CrossValidationUtils;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
@@ -75,7 +76,7 @@
     @Override
     protected final String getLabel(FacesContext facesContext, UIComponent uiComponent, MetaDataEntry metaDataEntry)
     {
-        throw new IllegalStateException("not available for cross validation");
+        throw new IllegalStateException("not available for cross validation - use processAfterCrossValidatorException");
     }
 
     @Override
@@ -84,6 +85,20 @@
                                         MetaDataEntry metaDataEntry,
                                         Object convertedObject)
     {
-        //not available for cross validation
+        //not available for cross validation - use initCrossValidation
+    }
+
+    protected void initCrossValidation(CrossValidationStorageEntry crossValidationStorageEntry)
+    {
+        //override if needed
+    }
+
+    //override if needed
+    protected boolean processAfterCrossValidatorException(CrossValidationStorageEntry crossValidationStorageEntry,
+                                                          ValidatorException validatorException)
+    {
+        return ExtValUtils.executeAfterThrowingInterceptors(
+                crossValidationStorageEntry.getComponent(), crossValidationStorageEntry.getMetaDataEntry(),
+                crossValidationStorageEntry.getConvertedObject(), validatorException);
     }
 }

Modified: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.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/crossval/strategy/RequiredIfStrategy.java?rev=720079&r1=720078&r2=720079&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java Sun Nov 23 16:46:16 2008
@@ -24,7 +24,10 @@
 import org.apache.myfaces.extensions.validator.baseval.annotation.SkipValidationSupport;
 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.resolver.AbstractValidationErrorMessageResolver;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
+import javax.faces.validator.ValidatorException;
 import java.lang.annotation.Annotation;
 
 /**
@@ -35,11 +38,27 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class RequiredIfStrategy extends AbstractCompareStrategy
 {
+    private boolean useFacesBundle = false;
+
     public boolean useTargetComponentToDisplayErrorMsg(CrossValidationStorageEntry crossValidationStorageEntry)
     {
         return false;
     }
 
+    @Override
+    protected String resolveMessage(String key)
+    {
+        String result = super.resolveMessage(key);
+        String marker = AbstractValidationErrorMessageResolver.MISSING_RESOURCE_MARKER;
+
+        if((marker + key + marker).equals(result))
+        {
+            this.useFacesBundle = true;
+        }
+
+        return result;
+    }
+
     protected String getValidationErrorMsgKey(Annotation annotation, boolean isTargetComponent)
     {
         return ((RequiredIf) annotation).validationErrorMsgKey();
@@ -65,4 +84,16 @@
     {
         return ((RequiredIf) annotation).valueOf();
     }
-}
+
+    @Override
+    protected boolean processAfterCrossValidatorException(
+            CrossValidationStorageEntry crossValidationStorageEntry, ValidatorException validatorException)
+    {
+        if(this.useFacesBundle)
+        {
+            ExtValUtils.replaceWithDefaultRequiredMessage(validatorException.getFacesMessage());
+        }
+
+        return super.processAfterCrossValidatorException(crossValidationStorageEntry, validatorException);
+    }
+}
\ No newline at end of file