[jboss-cvs] jboss-seam/src/main/org/jboss/seam/navigation ...

Gavin King gavin.king at jboss.com
Sun Jun 24 18:24:51 EDT 2007


  User: gavin   
  Date: 07/06/24 18:24:51

  Modified:    src/main/org/jboss/seam/navigation  Param.java
  Log:
  redesign model-based validation, according to advice of Jacob
  JBSEAM-1593
  
  Revision  Changes    Path
  1.5       +33 -2     jboss-seam/src/main/org/jboss/seam/navigation/Param.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Param.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/navigation/Param.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- Param.java	21 Jun 2007 05:27:29 -0000	1.4
  +++ Param.java	24 Jun 2007 22:24:51 -0000	1.5
  @@ -3,14 +3,18 @@
   import java.util.Map;
   import java.util.ResourceBundle;
   
  +import javax.el.ELContext;
  +import javax.el.ELException;
   import javax.faces.application.FacesMessage;
   import javax.faces.context.FacesContext;
   import javax.faces.convert.Converter;
   import javax.faces.validator.Validator;
   import javax.faces.validator.ValidatorException;
   
  +import org.hibernate.validator.InvalidValue;
  +import org.jboss.seam.core.Validators;
   import org.jboss.seam.core.Expressions.ValueExpression;
  -import org.jboss.seam.faces.FacesExpressions;
  +import org.jboss.seam.faces.FacesMessages;
   
   /**
    * Metadata for a <param/> in pages.xml
  @@ -201,12 +205,39 @@
         
         if (valueExpression!=null)
         {
  -         FacesExpressions.instance().validate( valueExpression.getExpressionString(), value );
  +         //TODO: note that this code is duplicated from ModelValidator!!
  +         ELContext elContext = facesContext.getELContext();
  +         InvalidValue[] invalidValues;
  +         try
  +         {
  +            invalidValues = Validators.instance().validate( valueExpression.toUnifiedValueExpression(), elContext, value );
  +         }
  +         catch (ELException ele)
  +         {
  +            Throwable cause = ele.getCause();
  +            if (cause==null) cause = ele;
  +            throw new ValidatorException( createMessage(cause), cause );
  +         }
  +         
  +         if ( invalidValues.length>0 )
  +         {
  +            throw new ValidatorException( createMessage(invalidValues) );
  +         }
         }
         
         return value;
      }
   
  +   private FacesMessage createMessage(InvalidValue[] invalidValues)
  +   {
  +      return FacesMessages.createFacesMessage( FacesMessage.SEVERITY_ERROR, invalidValues[0].getMessage() );
  +   }
  +
  +   private FacesMessage createMessage(Throwable cause)
  +   {
  +      return new FacesMessage(FacesMessage.SEVERITY_ERROR, "model validation failed:" + cause, null);
  +   }
  +
      private void addRequiredMessage(FacesContext facesContext)
      {
         String bundleName = facesContext.getApplication().getMessageBundle();
  
  
  



More information about the jboss-cvs-commits mailing list