You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/01/29 01:41:38 UTC

svn commit: r904326 - in /myfaces/core/trunk/impl/src/main: conf/META-INF/ java/org/apache/myfaces/config/ java/org/apache/myfaces/config/impl/digester/

Author: jakobk
Date: Fri Jan 29 00:41:37 2010
New Revision: 904326

URL: http://svn.apache.org/viewvc?rev=904326&view=rev
Log:
MYFACES-2511 Handle javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR correctly (problem with manual configuration of bean validator in faces-config)

Modified:
    myfaces/core/trunk/impl/src/main/conf/META-INF/standard-faces-config-base.xml
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java

Modified: myfaces/core/trunk/impl/src/main/conf/META-INF/standard-faces-config-base.xml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/conf/META-INF/standard-faces-config-base.xml?rev=904326&r1=904325&r2=904326&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/conf/META-INF/standard-faces-config-base.xml (original)
+++ myfaces/core/trunk/impl/src/main/conf/META-INF/standard-faces-config-base.xml Fri Jan 29 00:41:37 2010
@@ -32,9 +32,6 @@
       <state-manager>org.apache.myfaces.application.jsp.JspStateManagerImpl</state-manager>
       <navigation-handler>org.apache.myfaces.application.NavigationHandlerImpl</navigation-handler>
       <resource-handler>org.apache.myfaces.application.ResourceHandlerImpl</resource-handler>
-      <default-validators>
-         <validator-id>javax.faces.Bean</validator-id>
-      </default-validators>
    </application>
    <factory>
       <application-factory>org.apache.myfaces.application.ApplicationFactoryImpl</application-factory>

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java?rev=904326&r1=904325&r2=904326&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java Fri Jan 29 00:41:37 2010
@@ -266,6 +266,16 @@
     public Collection<String> getDefaultValidatorIds ();
     
     /**
+     * @return true if an empty <default-validators> exists in the config file with the highest precendence
+     */
+    public boolean isEmptyDefaultValidators();
+    
+    /**
+     * @param disable true if an empty <default-validators> exists in the config file with the highest precendence
+     */
+    public void setEmptyDefaultValidators(boolean disable);
+    
+    /**
      * @return the partial traversal class name
      */
     public String getPartialTraversal ();

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java?rev=904326&r1=904325&r2=904326&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java Fri Jan 29 00:41:37 2010
@@ -917,16 +917,14 @@
         {
             getDispenser().feed(webAppConfig);
             
-            // check if there is an empty <default-validators> entry
-            // if so, clear all currently installed default validators.
+            // check if there is an empty <default-validators> entry.
             // note that this applys only for the faces-config with the 
             // highest precendence (not for standard-faces-config files).
             for (org.apache.myfaces.config.impl.digester.elements.Application app : webAppConfig.getApplications())
             {
                 if (app.isDefaultValidatorsPresent() && app.getDefaultValidatorIds().isEmpty())
                 {
-                    // clear all default validator from standard-config-files
-                    getDispenser().getDefaultValidatorIds().clear();
+                    getDispenser().setEmptyDefaultValidators(true);
                     break;
                 }
             }
@@ -1723,18 +1721,37 @@
             application.addValidator(validatorId, dispenser.getValidatorClass(validatorId));
         }
 
-        String disabled = _externalContext.getInitParameter(BeanValidator.DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME);
-        boolean defaultBeanValidatorDisabled = (disabled != null && disabled.toLowerCase().equals("true"));
-        for (String validatorId : dispenser.getDefaultValidatorIds())
-        {
-            if (validatorId.equals(BeanValidator.VALIDATOR_ID)
-                    && (defaultBeanValidatorDisabled
-                            || !ExternalSpecifications.isBeanValidationAvailable))
+        // only add default validators if there is no empty <default-validators> in faces-config.xml
+        if (!dispenser.isEmptyDefaultValidators())
+        {
+            boolean beanValidatorAdded = false;
+            for (String validatorId : dispenser.getDefaultValidatorIds())
             {
-                // do not add it as a default validator
-                continue;
+                if (validatorId.equals(BeanValidator.VALIDATOR_ID))
+                {
+                    if (!ExternalSpecifications.isBeanValidationAvailable)
+                    {
+                        // do not add it as a default validator
+                        continue;
+                    }
+                    else
+                    {
+                        beanValidatorAdded = true;
+                    }
+                }
+                application.addDefaultValidatorId(validatorId);
+            }
+        
+            // add the bean validator if it is available, not already added and not disabled
+            if (!beanValidatorAdded && ExternalSpecifications.isBeanValidationAvailable)
+            {
+                String disabled = _externalContext.getInitParameter(BeanValidator.DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME);
+                boolean defaultBeanValidatorDisabled = (disabled != null && disabled.toLowerCase().equals("true"));
+                if (!defaultBeanValidatorDisabled)
+                {
+                    application.addDefaultValidatorId(BeanValidator.VALIDATOR_ID);
+                }
             }
-            application.addDefaultValidatorId(validatorId);
         }
 
         for (Behavior behavior : dispenser.getBehaviors()) {

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java?rev=904326&r1=904325&r2=904326&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java Fri Jan 29 00:41:37 2010
@@ -65,6 +65,8 @@
     private String partialTraversal;
     private String facesVersion;
     
+    private boolean emptyDefaultValidator = false;
+    
     private LocaleConfig localeConfig;
 
     private Map<String, String> components = new HashMap<String, String>();
@@ -514,6 +516,22 @@
     }
     
     /**
+     * @return true if an empty <default-validators> exists in the config file with the highest precendence
+     */
+    public boolean isEmptyDefaultValidators()
+    {
+        return emptyDefaultValidator;
+    }
+    
+    /**
+     * true if an empty <default-validators> exists in the config file with the highest precendence
+     */
+    public void setEmptyDefaultValidators(boolean disableDefaultValidator)
+    {
+        this.emptyDefaultValidator = disableDefaultValidator;
+    }
+    
+    /**
      * @return Collection over all defined validator ids
      */
     public Collection<String> getValidatorIds()