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/04/11 00:43:12 UTC

svn commit: r764091 - in /myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval: ./ annotation/ validation/

Author: gpetracek
Date: Fri Apr 10 22:43:11 2009
New Revision: 764091

URL: http://svn.apache.org/viewvc?rev=764091&view=rev
Log:
alternative ui validation error message for model validation

Modified:
    myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
    myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
    myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/ModelValidation.java
    myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java

Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/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/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java?rev=764091&r1=764090&r2=764091&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java Fri Apr 10 22:43:11 2009
@@ -254,6 +254,7 @@
 
         if (violations != null && violations.size() > 0)
         {
+            //TODO jsf 2.0 supports multiple messages -> use all messages
             ConstraintViolation violation = (ConstraintViolation) violations.toArray()[0];
 
             String violationMessage = violation.getMessage();

Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java?rev=764091&r1=764090&r2=764091&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java Fri Apr 10 22:43:11 2009
@@ -379,6 +379,7 @@
         return defaultMessageInterpolator;
     }
 
+    @ToDo(Priority.HIGH)
     public static void setMessageResolver(MessageResolver customMessageResolver)
     {
         messageResolver = customMessageResolver;

Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/ModelValidation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/ModelValidation.java?rev=764091&r1=764090&r2=764091&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/ModelValidation.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/ModelValidation.java Fri Apr 10 22:43:11 2009
@@ -39,10 +39,13 @@
 public @interface ModelValidation
 {
     public static final String DEFAULT_TARGET = "base";
+    public static final String DEFAULT_MESSAGE = "org.apache.myfaces.extensions.validator.bv_message";
 
     boolean isActive() default false;
 
     boolean displayInline() default false;
 
     String[] validationTargets() default DEFAULT_TARGET;
+
+    String message() default DEFAULT_MESSAGE;
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java?rev=764091&r1=764090&r2=764091&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java Fri Apr 10 22:43:11 2009
@@ -18,27 +18,28 @@
  */
 package org.apache.myfaces.extensions.validator.beanval.validation;
 
-import org.apache.myfaces.extensions.validator.beanval.ExtValBeanValidationContext;
-import org.apache.myfaces.extensions.validator.util.ExtValUtils;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.extensions.validator.beanval.ExtValBeanValidationContext;
+import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 
-import javax.faces.event.PhaseListener;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
-import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
 import javax.faces.validator.ValidatorException;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIComponent;
 import javax.validation.ConstraintViolation;
-import javax.validation.ValidatorFactory;
 import javax.validation.Validation;
+import javax.validation.ValidatorFactory;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import java.util.Iterator;
-import java.util.ArrayList;
 
 /**
  * @author Gerhard Petracek
@@ -63,7 +64,7 @@
 
         List processedValidationTargets = new ArrayList();
 
-        for(ModelValidationEntry modelValidationEntry : modelValidationEntries)
+        for (ModelValidationEntry modelValidationEntry : modelValidationEntries)
         {
             processModelValidation(modelValidationEntry, processedValidationTargets);
         }
@@ -76,15 +77,15 @@
 
     private void processModelValidation(ModelValidationEntry modelValidationEntry, List processedValidationTargets)
     {
-        for(Object validationTarget : modelValidationEntry.getValidationTargets())
+        for (Object validationTarget : modelValidationEntry.getValidationTargets())
         {
-            if(processedValidationTargets.contains(validationTarget) &&
+            if (processedValidationTargets.contains(validationTarget) &&
                     !modelValidationEntry.getMetaData().displayInline())
             {
                 continue;
             }
 
-            if(!processedValidationTargets.contains(validationTarget))
+            if (!processedValidationTargets.contains(validationTarget))
             {
                 processedValidationTargets.add(validationTarget);
             }
@@ -102,10 +103,10 @@
                 //jsf < 2.0 will just use the first one (it's only a little overhead)
                 Iterator violationsIterator = violations.iterator();
                 ConstraintViolation constraintViolation;
-                while(violationsIterator.hasNext())
+                while (violationsIterator.hasNext())
                 {
-                    constraintViolation = (ConstraintViolation)violationsIterator.next();
-                    if(modelValidationEntry.getMetaData().displayInline())
+                    constraintViolation = (ConstraintViolation) violationsIterator.next();
+                    if (modelValidationEntry.getMetaData().displayInline())
                     {
                         processConstraintViolation(constraintViolation, modelValidationEntry, validationTarget, true);
                     }
@@ -122,9 +123,9 @@
     @ToDo(value = Priority.HIGH, description = "use ExtValUtils#createFacesMessage" +
             "check ExtValUtils#executeAfterThrowingInterceptors")
     private void processConstraintViolation(ConstraintViolation violation,
-                                                  ModelValidationEntry modelValidationEntry,
-                                                  Object validationTarget,
-                                                  boolean displayAtComponent)
+                                            ModelValidationEntry modelValidationEntry,
+                                            Object validationTarget,
+                                            boolean displayAtComponent)
     {
         String violationMessage = violation.getMessage();
 
@@ -135,12 +136,23 @@
         UIComponent uiComponent = null;
         String clientId = null;
 
-        if(displayAtComponent)
+        if (displayAtComponent)
         {
             uiComponent = modelValidationEntry.getComponent();
             clientId = modelValidationEntry.getComponent().getClientId(facesContext);
         }
 
+        if (!ModelValidation.DEFAULT_MESSAGE.equals(modelValidationEntry.getMetaData().message()))
+        {
+            String validationErrorMessage =  ExtValBeanValidationContext.getCurrentInstance().getMessageInterpolator()
+                    .interpolate(modelValidationEntry.getMetaData().message(),
+                            violation.getConstraintDescriptor(),
+                            validationTarget);
+
+            validatorException.getFacesMessage().setSummary(validationErrorMessage);
+            validatorException.getFacesMessage().setDetail(validationErrorMessage);
+        }
+
         ExtValUtils.executeAfterThrowingInterceptors(
                 uiComponent,
                 null,