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()