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)