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/05/29 14:50:58 UTC

svn commit: r779948 - in /myfaces/extensions/validator/branches/branch_for_jsf_1_1: core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions...

Author: gpetracek
Date: Fri May 29 12:50:58 2009
New Revision: 779948

URL: http://svn.apache.org/viewvc?rev=779948&view=rev
Log:
EXTVAL-43 and EXTVAL-44 allow different impl. styles

Modified:
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterKey.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterValue.java
    myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterKey.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/parameter/ParameterKey.java?rev=779948&r1=779947&r2=779948&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterKey.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterKey.java Fri May 29 12:50:58 2009
@@ -25,12 +25,13 @@
 import java.lang.annotation.Retention;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
 
 /**
  * @author Gerhard Petracek
  * @since 1.x.3
  */
-@Target({FIELD})
+@Target({FIELD, METHOD})
 @Retention(RUNTIME)
 @UsageInformation(UsageCategory.API)
 public @interface ParameterKey

Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterValue.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/parameter/ParameterValue.java?rev=779948&r1=779947&r2=779948&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterValue.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/ParameterValue.java Fri May 29 12:50:58 2009
@@ -25,12 +25,13 @@
 import java.lang.annotation.Retention;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
 
 /**
  * @author Gerhard Petracek
  * @since 1.x.3
  */
-@Target({FIELD})
+@Target({FIELD, METHOD})
 @Retention(RUNTIME)
 @UsageInformation(UsageCategory.API)
 public @interface ParameterValue

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=779948&r1=779947&r2=779948&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 Fri May 29 12:50:58 2009
@@ -169,28 +169,59 @@
         return isError;
     }
 
-    private boolean processParameterValue(Annotation annotation, Class parameterClass, FacesMessage facesMessage)
+    private boolean processParameterValue(Annotation annotation, Class paramClass, FacesMessage facesMessage)
             throws Exception
     {
         boolean showAsError = true;
 
-        for(Field currentField : parameterClass.getDeclaredFields())
+        if(ValidationParameter.class.isAssignableFrom(paramClass))
         {
-            if(currentField.isAnnotationPresent(ParameterKey.class))
+            //support pure interface approach e.g. ViolationSeverity.Warn.class
+            for(Field currentField : paramClass.getDeclaredFields())
             {
-                Object key = parameterClass.getDeclaredField(currentField.getName()).get(annotation);
-                //invoke ParameterProcessors(key, annotation)
+                if(currentField.isAnnotationPresent(ParameterKey.class))
+                {
+                    Object key = currentField.get(annotation);
+                    //invoke ParameterProcessors(key, annotation)
+                }
+                //no "else if" to allow both at one field
+                if(currentField.isAnnotationPresent(ParameterValue.class))
+                {
+                    currentField.setAccessible(true);
+                    //targetField = paramClass.getDeclaredField(currentField.getName());
+                    if(!processFoundParameterValue(currentField.get(annotation), facesMessage))
+                    {
+                        showAsError = false;
+                    }
+                }
             }
-            //no "else if" to allow both at one field
-            if(currentField.isAnnotationPresent(ParameterValue.class))
+
+            for(Class currentInterface : paramClass.getInterfaces())
             {
-                Object value = parameterClass.getDeclaredField(currentField.getName()).get(annotation);
-                if(value instanceof FacesMessage.Severity)
+                if(!ValidationParameter.class.isAssignableFrom(currentInterface))
+                {
+                    continue;
+                }
+
+                //support interface + impl. approach e.g. MyParamImpl.class
+                //(MyParamImpl implements MyParam
+                //MyParam extends ValidationParameter
+                //methods in the interface have to be marked with @ParameterValue and @ParameterKey
+                for(Method currentMethod : currentInterface.getDeclaredMethods())
                 {
-                    facesMessage.setSeverity((FacesMessage.Severity)value);
-                    if(((FacesMessage.Severity)value).compareTo(FacesMessage.SEVERITY_ERROR) < 0)
+                    if(currentMethod.isAnnotationPresent(ParameterKey.class))
                     {
-                        showAsError = false;
+                        Object key = currentMethod.invoke(paramClass.newInstance());
+                        //invoke ParameterProcessors(key, annotation)
+                    }
+                    //no "else if" to allow both at one field
+                    if(currentMethod.isAnnotationPresent(ParameterValue.class))
+                    {
+                        currentMethod.setAccessible(true);
+                        if(!processFoundParameterValue(currentMethod.invoke(paramClass.newInstance()), facesMessage))
+                        {
+                            showAsError = false;
+                        }
                     }
                 }
             }
@@ -199,6 +230,20 @@
         return showAsError;
     }
 
+    private boolean processFoundParameterValue(Object value, FacesMessage facesMessage)
+    {
+        if(value instanceof FacesMessage.Severity)
+        {
+            facesMessage.setSeverity((FacesMessage.Severity)value);
+            if(((FacesMessage.Severity)value).compareTo(FacesMessage.SEVERITY_ERROR) < 0)
+            {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
     private boolean isValidationParameter(Type genericReturnType)
     {
         if(genericReturnType instanceof GenericArrayType)