You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mk...@apache.org on 2006/03/02 02:07:48 UTC

svn commit: r382210 - in /myfaces/tomahawk/trunk/core/src: main/java/org/apache/myfaces/custom/regexprvalidator/ main/tld/tomahawk-entities/ site/xdoc/

Author: mkienenb
Date: Wed Mar  1 17:07:47 2006
New Revision: 382210

URL: http://svn.apache.org/viewcvs?rev=382210&view=rev
Log:
Added message attribute to RegExprValidator.

Modified:
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/RegExprValidator.java
    myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/ValidateRegExprTag.java
    myfaces/tomahawk/trunk/core/src/main/tld/tomahawk-entities/tomahawk_validate_regexpr_attributes.xml
    myfaces/tomahawk/trunk/core/src/site/xdoc/validateRegExpr.xml

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/RegExprValidator.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/RegExprValidator.java?rev=382210&r1=382209&r2=382210&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/RegExprValidator.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/RegExprValidator.java Wed Mar  1 17:07:47 2006
@@ -15,14 +15,19 @@
  */
 package org.apache.myfaces.custom.regexprvalidator;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.faces.application.FacesMessage;
 import javax.faces.component.StateHolder;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
 import javax.faces.validator.Validator;
 import javax.faces.validator.ValidatorException;
 
 import org.apache.myfaces.shared_tomahawk.util.MessageUtils;
+import org.apache.myfaces.shared_tomahawk.util._ComponentUtils;
 
 import org.apache.commons.validator.GenericValidator;
 
@@ -38,7 +43,7 @@
 
 	/**
 	 * <p>The message identifier of the {@link FacesMessage} to be created if
-	 * the creditcard check fails.</p>
+	 * the regex check fails.</p>
 	 */
 	public static final String REGEXPR_MESSAGE_ID = "org.apache.myfaces.Regexpr.INVALID";
 
@@ -46,11 +51,13 @@
 	}
 
 	//the pattern on which the validation is based.
-	private String _pattern= null;
+    protected String _pattern= null;
 
+    // the message to display when validation fails.
+    protected String _message;
 
 	//JSF-Field for StateHolder-IF
-	private boolean _transient = false;
+    protected boolean _transient = false;
 
 
 
@@ -68,10 +75,13 @@
 				return;
 		}
 		Object[] args = {value.toString()};
-		if(!GenericValidator.matchRegexp(value.toString(),"^"+_pattern+"$")){
-			throw new ValidatorException(MessageUtils.getMessage(FacesMessage.SEVERITY_ERROR,REGEXPR_MESSAGE_ID, args));
+		if(!GenericValidator.matchRegexp(value.toString(),"^" + getPattern() + "$")){
 
-		}
+            String message = getMessage();
+            if (null == message)  message = REGEXPR_MESSAGE_ID;
+
+            throw new ValidatorException(MessageUtils.getMessage(FacesMessage.SEVERITY_ERROR, message, args));
+            }
 
 	}
 
@@ -80,12 +90,16 @@
 	// -------------------------------------------------------- StateholderIF
 
 	public Object saveState(FacesContext context) {
-		Object state = _pattern;
-		return state;
+		Object value[] = new Object[2];
+        value[0] = _pattern;
+        value[1] = _message;
+		return value;
 	}
 
 	public void restoreState(FacesContext context, Object state) {
-		_pattern = (String) state;
+        Object[] values = (Object[]) state;
+        _message = (String) values[1];
+        _pattern = (String) values[0];
 	}
 
 	public boolean isTransient() {
@@ -100,9 +114,12 @@
 	/**
 	 * @return the pattern, on which a value should be validated
 	 */
-	public String getPattern() {
-		return _pattern;
-	}
+    public String getPattern()
+    {
+        if (_pattern != null) return _pattern;
+        ValueBinding vb = getValueBinding("pattern");
+        return vb != null ? _ComponentUtils.getStringValue(getFacesContext(), vb) : null;
+    }
 
 	/**
 	 * @param string the pattern, on which a value should be validated
@@ -110,5 +127,50 @@
 	public void setPattern(String string) {
 		_pattern = string;
 	}
+
+    public String getMessage()
+    {
+        if (_message != null) return _message;
+        ValueBinding vb = getValueBinding("message");
+        return vb != null ? _ComponentUtils.getStringValue(getFacesContext(), vb) : null;
+    }
+
+    public void setMessage(String message)
+    {
+        this._message = message;
+    }
+
+    // --------------------- borrowed from UIComponentBase ------------
+
+    private Map _valueBindingMap = null;
+
+    public ValueBinding getValueBinding(String name)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (_valueBindingMap == null)
+        {
+            return null;
+        }
+        else
+        {
+            return (ValueBinding)_valueBindingMap.get(name);
+        }
+    }
+
+    public void setValueBinding(String name,
+                                ValueBinding binding)
+    {
+        if (name == null) throw new NullPointerException("name");
+        if (_valueBindingMap == null)
+        {
+            _valueBindingMap = new HashMap();
+        }
+        _valueBindingMap.put(name, binding);
+    }
+
+    protected FacesContext getFacesContext()
+    {
+        return FacesContext.getCurrentInstance();
+    }
 
 }

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/ValidateRegExprTag.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/ValidateRegExprTag.java?rev=382210&r1=382209&r2=382210&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/ValidateRegExprTag.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/regexprvalidator/ValidateRegExprTag.java Wed Mar  1 17:07:47 2006
@@ -29,38 +29,58 @@
 public class ValidateRegExprTag extends ValidatorTag {
   private static final long serialVersionUID = -449945949876262076L;
   //the pattern, needed by Commons-Validator.
-	private String _pattern = null;
+    private String _pattern = null;
+    private String _message = null;
 
 	public ValidateRegExprTag(){
 	}
 
-	public void setPattern(String string) {
-		_pattern = string;
-	}
+    public void setPattern(String string) {
+        _pattern = string;
+    }
+
+    public void setMessage(String string) {
+        _message = string;
+    }
 
 	protected Validator createValidator() throws JspException {
 
 		FacesContext facesContext = FacesContext.getCurrentInstance();
 		setValidatorId(RegExprValidator.VALIDATOR_ID);
 		RegExprValidator validator = (RegExprValidator)super.createValidator();
-		if (_pattern != null)
-		{
-			if (UIComponentTag.isValueReference(_pattern))
-			{
-				ValueBinding vb = facesContext.getApplication().createValueBinding(_pattern);
-				validator.setPattern(new String(vb.getValue(facesContext).toString()));
-			}
-			else
-			{
-				validator.setPattern(_pattern);
-			}
-		}
+        if (_pattern != null)
+        {
+            if (UIComponentTag.isValueReference(_pattern))
+            {
+                ValueBinding vb = facesContext.getApplication().createValueBinding(_pattern);
+                validator.setPattern(new String(vb.getValue(facesContext).toString()));
+            }
+            else
+            {
+                validator.setPattern(_pattern);
+            }
+        }
+
+        if (_message != null)
+        {
+            if (UIComponentTag.isValueReference(_message))
+            {
+                ValueBinding vb = facesContext.getApplication().createValueBinding(_message);
+                validator.setMessage(new String(vb.getValue(facesContext).toString()));
+            }
+            else
+            {
+                validator.setMessage(_message);
+            }
+        }
+
 		return validator;
 	}
     public void release()
     {
         super.release();
-       _pattern= null;
+        _pattern= null;
+        _message= null;
     }
 
 }

Modified: myfaces/tomahawk/trunk/core/src/main/tld/tomahawk-entities/tomahawk_validate_regexpr_attributes.xml
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/main/tld/tomahawk-entities/tomahawk_validate_regexpr_attributes.xml?rev=382210&r1=382209&r2=382210&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/tld/tomahawk-entities/tomahawk_validate_regexpr_attributes.xml (original)
+++ myfaces/tomahawk/trunk/core/src/main/tld/tomahawk-entities/tomahawk_validate_regexpr_attributes.xml Wed Mar  1 17:07:47 2006
@@ -1,4 +1,12 @@
         <attribute>
+            <name>message</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                alternate validation error message format string
+            </description>
+        </attribute>
+        <attribute>
             <name>pattern</name>
             <required>true</required>
             <rtexprvalue>false</rtexprvalue>

Modified: myfaces/tomahawk/trunk/core/src/site/xdoc/validateRegExpr.xml
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/core/src/site/xdoc/validateRegExpr.xml?rev=382210&r1=382209&r2=382210&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/site/xdoc/validateRegExpr.xml (original)
+++ myfaces/tomahawk/trunk/core/src/site/xdoc/validateRegExpr.xml Wed Mar  1 17:07:47 2006
@@ -59,6 +59,7 @@
             
             <blockquote><h3>&lt;t:validateRegExpr/&gt;</h3>
                 <code>pattern (required)</code><br/>
+                <code>message - Optional alternate validation error message format string where</code><br/>
             </blockquote>
         </section>
         <!-- Instructions -->