You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/05/18 04:00:07 UTC
svn commit: r945456 -
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java
Author: lu4242
Date: Tue May 18 02:00:07 2010
New Revision: 945456
URL: http://svn.apache.org/viewvc?rev=945456&view=rev
Log:
MYFACES-2288 Implement Bean Validation (cleanup code unnecessary instantiation of HashMap)
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java?rev=945456&r1=945455&r2=945456&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentTagHandlerDelegate.java Tue May 18 02:00:07 2010
@@ -501,14 +501,14 @@ public class ComponentTagHandlerDelegate
private void addDefaultValidators(FacesContext context, FaceletCompositionContext mctx,
EditableValueHolder component)
{
- Application application = context.getApplication();
- Map<String, String> validators = new HashMap<String, String>();
-
// add all defaultValidators
- Map<String, String> defaultValidators = application.getDefaultValidatorInfo();
+ Map<String, String> defaultValidators = context.getApplication().getDefaultValidatorInfo();
if (defaultValidators != null && defaultValidators.size() != 0)
{
- validators.putAll(defaultValidators);
+ for (Map.Entry<String, String> entry : defaultValidators.entrySet())
+ {
+ addDefaultValidator(context, mctx, component, entry.getKey(), entry.getValue());
+ }
}
// add all enclosing validators
Iterator<String> enclosingValidatorIds = mctx.getEnclosingValidatorIds();
@@ -517,95 +517,89 @@ public class ComponentTagHandlerDelegate
while (enclosingValidatorIds.hasNext())
{
String validatorId = enclosingValidatorIds.next();
- if (!validators.containsKey(validatorId))
+ if (!defaultValidators.containsKey(validatorId))
{
- validators.put(validatorId, null);
+ addDefaultValidator(context, mctx, component, validatorId, null);
}
}
}
+ }
+
+ private void addDefaultValidator(FacesContext context, FaceletCompositionContext mctx,
+ EditableValueHolder component, String validatorId, String validatorClassName)
+ {
+ Validator enclosingValidator = null;
- if (!validators.isEmpty())
+ if (validatorClassName == null)
{
- // we have validators to add
- Set<Map.Entry<String, String>> validatorInfoSet = validators.entrySet();
- for (Map.Entry<String, String> entry : validatorInfoSet)
+ // we have no class name for validators of enclosing <f:validateBean> tags
+ // --> we have to create it to get the class name
+ // note that normally we can use this instance later anyway!
+ enclosingValidator = context.getApplication().createValidator(validatorId);
+ validatorClassName = enclosingValidator.getClass().getName();
+ }
+
+ // check if the validator is already registered for the given component
+ // this happens if <f:validateBean /> is nested inside the component on the view
+ Validator validator = null;
+ for (Validator v : component.getValidators())
+ {
+ if (v.getClass().getName().equals(validatorClassName))
{
- String validatorId = entry.getKey();
- String validatorClassName = entry.getValue();
- Validator enclosingValidator = null;
-
- if (validatorClassName == null)
- {
- // we have no class name for validators of enclosing <f:validateBean> tags
- // --> we have to create it to get the class name
- // note that normally we can use this instance later anyway!
- enclosingValidator = application.createValidator(validatorId);
- validatorClassName = enclosingValidator.getClass().getName();
- }
-
- // check if the validator is already registered for the given component
- // this happens if <f:validateBean /> is nested inside the component on the view
- Validator validator = null;
- for (Validator v : component.getValidators())
+ // found
+ validator = v;
+ break;
+ }
+ }
+
+ if (validator == null)
+ {
+ if (shouldAddDefaultValidator(validatorId, context, mctx, component))
+ {
+ if (enclosingValidator != null)
{
- if (v.getClass().getName().equals(validatorClassName))
- {
- // found
- validator = v;
- break;
- }
+ // we can use the instance from before
+ validator = enclosingValidator;
}
-
- if (validator == null)
+ else
{
- if (shouldAddDefaultValidator(validatorId, context, mctx, component))
- {
- if (enclosingValidator != null)
- {
- // we can use the instance from before
- validator = enclosingValidator;
- }
- else
- {
- // create it
- validator = application.createValidator(validatorId);
- }
- // add the validator to the component
- component.addValidator(validator);
- }
- else
- {
- // no validator instance
- continue;
- }
+ // create it
+ validator = context.getApplication().createValidator(validatorId);
}
-
- // special things to configure for a BeanValidator
- if (validator instanceof BeanValidator)
- {
- BeanValidator beanValidator = (BeanValidator) validator;
-
- // check the validationGroups
- String validationGroups = beanValidator.getValidationGroups();
- if (validationGroups == null
- || validationGroups.matches(BeanValidator.EMPTY_VALIDATION_GROUPS_PATTERN))
- {
- // no validationGroups available
- // --> get the validationGroups from the stack
- String stackGroup = mctx.getFirstValidationGroupFromStack();
- if (stackGroup != null)
- {
- validationGroups = stackGroup;
- }
- else
- {
- // no validationGroups on the stack
- // --> set the default validationGroup
- validationGroups = javax.validation.groups.Default.class.getName();
- }
- beanValidator.setValidationGroups(validationGroups);
- }
+ // add the validator to the component
+ component.addValidator(validator);
+ }
+ else
+ {
+ // no validator instance
+ return;
+ }
+ }
+
+ // special things to configure for a BeanValidator
+ if (validator instanceof BeanValidator)
+ {
+ BeanValidator beanValidator = (BeanValidator) validator;
+
+ // check the validationGroups
+ String validationGroups = beanValidator.getValidationGroups();
+ if (validationGroups == null
+ || validationGroups.matches(BeanValidator.EMPTY_VALIDATION_GROUPS_PATTERN))
+ {
+ // no validationGroups available
+ // --> get the validationGroups from the stack
+ String stackGroup = mctx.getFirstValidationGroupFromStack();
+ if (stackGroup != null)
+ {
+ validationGroups = stackGroup;
+ }
+ else
+ {
+ // no validationGroups on the stack
+ // --> set the default validationGroup
+ validationGroups = javax.validation.groups.Default.class.getName();
}
+ beanValidator.setValidationGroups(validationGroups);
}
}
}