You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shale.apache.org by gv...@apache.org on 2007/02/25 02:18:07 UTC

svn commit: r511395 - in /shale/framework/branches/SHALE_1_0_X: shale-apps/shale-clay-usecases/pom.xml shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java

Author: gvanmatre
Date: Sat Feb 24 17:18:06 2007
New Revision: 511395

URL: http://svn.apache.org/viewvc?view=rev&rev=511395
Log:
Apply SHALE-412, SHALE-413 (rev 511385) and SHALE-407 (rev 511223) from the trunk to the SHALE_1_0_X branch. 

Modified:
    shale/framework/branches/SHALE_1_0_X/shale-apps/shale-clay-usecases/pom.xml
    shale/framework/branches/SHALE_1_0_X/shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java

Modified: shale/framework/branches/SHALE_1_0_X/shale-apps/shale-clay-usecases/pom.xml
URL: http://svn.apache.org/viewvc/shale/framework/branches/SHALE_1_0_X/shale-apps/shale-clay-usecases/pom.xml?view=diff&rev=511395&r1=511394&r2=511395
==============================================================================
--- shale/framework/branches/SHALE_1_0_X/shale-apps/shale-clay-usecases/pom.xml (original)
+++ shale/framework/branches/SHALE_1_0_X/shale-apps/shale-clay-usecases/pom.xml Sat Feb 24 17:18:06 2007
@@ -41,6 +41,13 @@
         </dependency>
 
         <dependency>
+            <groupId>oro</groupId>
+            <artifactId>oro</artifactId>
+            <version>2.0.8</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.shale</groupId>
             <artifactId>shale-application</artifactId>
             <version>${version}</version>

Modified: shale/framework/branches/SHALE_1_0_X/shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java
URL: http://svn.apache.org/viewvc/shale/framework/branches/SHALE_1_0_X/shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java?view=diff&rev=511395&r1=511394&r2=511395
==============================================================================
--- shale/framework/branches/SHALE_1_0_X/shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java (original)
+++ shale/framework/branches/SHALE_1_0_X/shale-validator/src/main/java/org/apache/shale/validator/CommonsValidator.java Sat Feb 24 17:18:06 2007
@@ -33,6 +33,7 @@
 
 import javax.faces.application.Application;
 import javax.faces.application.FacesMessage;
+import javax.faces.component.EditableValueHolder;
 import javax.faces.component.UIComponent;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
@@ -51,6 +52,7 @@
 import org.apache.shale.util.ConverterHelper;
 import org.apache.shale.util.Messages;
 import org.apache.shale.util.Tags;
+import org.apache.shale.validator.faces.ValidatorInputRenderer;
 
 /**
  * <p>This is a JavaServer Faces <code>Validator</code> that uses
@@ -500,7 +502,7 @@
              value = localVars.get(templateArgs[i].getKey());
           } else if (value != null && value instanceof String) {
               // if a String, check for a value binding expression
-             value = tagUtils.eval((String) value);
+              value = tagUtils.eval((String) value);
           }
           target[i] = value;
        }
@@ -787,7 +789,11 @@
            ValidatorAction validatorAction = CommonsValidator.getValidatorAction(types[j]);
 
            try {
-               vars.put(SUBMITTED_VALUE_VARNAME, value);
+               if (component instanceof EditableValueHolder) {
+                  vars.put(SUBMITTED_VALUE_VARNAME, ((EditableValueHolder) component).getSubmittedValue());    
+               } else {
+                  vars.put(SUBMITTED_VALUE_VARNAME, value);
+               }
                Class validatorClass = loadValidatorClass(validatorAction);
                Class[] paramClasses = this.loadMethodParamClasses(validatorAction);
                Object[] paramValues = this.loadMethodParamValues(context, validatorAction, paramClasses);
@@ -797,10 +803,24 @@
                    validator = validatorClass.newInstance();
                }
                Boolean r = (Boolean) validatorMethod.invoke(validator, paramValues);
+               
+               Map localVars = null;
+               // A map that captures information about a component that might contain state for commons
+               // validators properties.  The map is organized by a hierarchy "clientId/validatorType/vars".
+               // It is captured at render time.
+               Map ids = (Map) component.getAttributes().get(ValidatorInputRenderer.VALIDATOR_CLIENTIDS_ATTR);
+               if (ids != null) {
+                   String clientId = component.getClientId(context);
+                   Map validatorVars = (Map) ids.get(clientId);
+                   if (validatorVars != null) {
+                      localVars = (Map) validatorVars.get(getType()); 
+                   }
+               }
+
                if (r.equals(Boolean.FALSE)) {
                    throw new ValidatorException(new FacesMessage(
                            FacesMessage.SEVERITY_ERROR,
-                           getErrorMessage(context, validatorAction, null), null));
+                           getErrorMessage(context, validatorAction, localVars), null));
                }
            } catch (IllegalArgumentException e) {
                throw new RuntimeException(messages.getMessage("commonsValidator.intException",