EXTVAL-80 optimized el-helper usage
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk@986303 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java b/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java
index d78eb66..4db7406 100644
--- a/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java
+++ b/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java
@@ -37,6 +37,8 @@
private String prefix;
private String token;
+ private static final ELHelper EL_HELPER = ExtValUtils.getELHelper();
+
public static ValueBindingExpression replaceOrAddProperty(ValueBindingExpression valueBindingExpression,
String newProperty)
{
@@ -87,7 +89,7 @@
public ValueBindingExpression(String expression)
{
- if(!ExtValUtils.getELHelper().isELTermWellFormed(expression))
+ if(!EL_HELPER.isELTermWellFormed(expression))
{
throw new IllegalStateException(expression + " is no valid el-expression");
}
diff --git a/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java b/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
index b95e8e3..0ed1791 100644
--- a/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
+++ b/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
@@ -18,6 +18,7 @@
*/
package org.apache.myfaces.extensions.validator.core.interceptor;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
@@ -52,6 +53,8 @@
@UsageInformation(UsageCategory.REUSE)
public abstract class AbstractValidationInterceptor extends AbstractRendererInterceptor
{
+ private ELHelper elHelper;
+
protected boolean isRequiredInitializationSupported()
{
return false;
@@ -240,11 +243,20 @@
return uiComponent instanceof EditableValueHolder && isValueBindingOfComponentValid(uiComponent);
}
+ protected ELHelper getELHelper()
+ {
+ if(this.elHelper == null)
+ {
+ this.elHelper = ExtValUtils.getELHelper();
+ }
+ return this.elHelper;
+ }
+
private boolean isValueBindingOfComponentValid(UIComponent uiComponent)
{
try
{
- return ExtValUtils.getELHelper().getPropertyDetailsOfValueBinding(uiComponent) != null;
+ return getELHelper().getPropertyDetailsOfValueBinding(uiComponent) != null;
}
catch (Exception e)
{
diff --git a/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java b/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
index 9e5526f..04ff268 100644
--- a/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
+++ b/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
@@ -21,6 +21,7 @@
import org.apache.myfaces.extensions.validator.core.ExtValContext;
import org.apache.myfaces.extensions.validator.core.CustomInformation;
import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -52,6 +53,8 @@
//with jsf 1.1 only available if there is a custom bean
private String messageBundleVarName;
+ private ELHelper elHelper = ExtValUtils.getELHelper();
+
protected AbstractValidationErrorMessageResolver()
{
logger.fine(getClass().getName() + " instantiated");
@@ -145,7 +148,7 @@
//only in case of a ValidationErrorMessageResolver which is configured as bean
if (this.messageBundleVarName != null && customMessage == null)
{
- resourceBundle = (ResourceBundle) ExtValUtils.getELHelper().getBean(messageBundleVarName);
+ resourceBundle = (ResourceBundle) this.elHelper.getBean(messageBundleVarName);
if (resourceBundle != null)
{
diff --git a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
index 247af27..1ced44a 100644
--- a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
+++ b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
@@ -20,6 +20,7 @@
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationEntry;
import org.apache.myfaces.extensions.validator.beanval.ExtValBeanValidationContext;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
import org.apache.myfaces.extensions.validator.core.validation.message.FacesMessageHolder;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -51,7 +52,11 @@
public class BeanValidationUtils
{
private static final Logger LOGGER = Logger.getLogger(BeanValidationUtils.class.getName());
- private static ExtValBeanValidationMetaDataInternals bvmi = new ExtValBeanValidationMetaDataInternals(LOGGER);
+ private static ELHelper elHelper = ExtValUtils.getELHelper();
+
+ private static ExtValBeanValidationMetaDataInternals bvmi =
+ new ExtValBeanValidationMetaDataInternals(LOGGER, elHelper);
+
private static final String VALIDATOR_FACTORY_KEY = "javax.faces.validator.beanValidator.ValidatorFactory";
@SuppressWarnings({"unchecked"})
@@ -111,7 +116,7 @@
{
String[] key = propertyDetails.getKey().split("\\.");
- Object firstBean = ExtValUtils.getELHelper().getBean(key[0]);
+ Object firstBean = elHelper.getBean(key[0]);
List<Class> foundGroupsForPropertyValidation = new ArrayList<Class>();
List<Class> restrictedGroupsForPropertyValidation = new ArrayList<Class>();
diff --git a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
index d5c6120..a73c954 100644
--- a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
+++ b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
@@ -59,10 +59,12 @@
{
private Logger logger;
private LabeledMessageInternals labeledMessageInternals = new LabeledMessageInternals();
+ private ELHelper elHelper;
- ExtValBeanValidationMetaDataInternals(Logger logger)
+ ExtValBeanValidationMetaDataInternals(Logger logger, ELHelper elHelper)
{
this.logger = logger;
+ this.elHelper = elHelper;
}
void extractExtValBeanValidationMetaData(PropertyDetails propertyDetails,
@@ -500,8 +502,6 @@
private boolean isValidationPermitted(BeanValidation beanValidation)
{
- ELHelper elHelper = ExtValUtils.getELHelper();
-
FacesContext facesContext = FacesContext.getCurrentInstance();
for (String condition : beanValidation.conditions())
{
@@ -570,8 +570,7 @@
private Object tryToResolveValidationTargetExpression(String validationTargetExpression)
{
ValueBindingExpression valueBindingExpression = new ValueBindingExpression(validationTargetExpression);
- return ExtValUtils.getELHelper()
- .getValueOfExpression(FacesContext.getCurrentInstance(), valueBindingExpression);
+ return this.elHelper.getValueOfExpression(FacesContext.getCurrentInstance(), valueBindingExpression);
}
private void processGroups(BeanValidation beanValidation,
diff --git a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
index 7db54c2..f988b38 100644
--- a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
+++ b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
@@ -23,6 +23,7 @@
import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationEntry;
import org.apache.myfaces.extensions.validator.beanval.util.BeanValidationUtils;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.core.property.DefaultPropertyInformation;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformation;
@@ -98,9 +99,11 @@
Set<ConstraintViolation<Object>> violations;
Class[] groupsToValidate;
+ ELHelper elHelper = ExtValUtils.getELHelper();
+
for (Object validationTarget : modelValidationEntry.getValidationTargets())
{
- propertyInformation = createPropertyInformation(modelValidationEntry, validationTarget);
+ propertyInformation = createPropertyInformation(modelValidationEntry, validationTarget, elHelper);
if (!executeGlobalBeforeValidationInterceptors(
facesContext, modelValidationEntry.getComponent(), validationTarget, propertyInformation))
@@ -184,15 +187,14 @@
}
private PropertyInformation createPropertyInformation(
- ModelValidationEntry modelValidationEntry, Object validationTarget)
+ ModelValidationEntry modelValidationEntry, Object validationTarget, ELHelper elHelper)
{
PropertyInformation propertyInformation;
PropertyDetails propertyDetails;
propertyInformation = new DefaultPropertyInformation();
if (modelValidationEntry.getComponent() != null)
{
- propertyDetails = ExtValUtils.getELHelper()
- .getPropertyDetailsOfValueBinding(modelValidationEntry.getComponent());
+ propertyDetails = elHelper.getPropertyDetailsOfValueBinding(modelValidationEntry.getComponent());
}
else
{
diff --git a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/MappedConstraintSourcePropertyValidationModuleValidationInterceptor.java b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/MappedConstraintSourcePropertyValidationModuleValidationInterceptor.java
index ee260ce..f3a1cef 100644
--- a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/MappedConstraintSourcePropertyValidationModuleValidationInterceptor.java
+++ b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/MappedConstraintSourcePropertyValidationModuleValidationInterceptor.java
@@ -43,8 +43,7 @@
@Override
protected Map<String, Object> getTransformedMetaDataFor(FacesContext facesContext, UIComponent uiComponent)
{
- PropertyDetails originalPropertyDetail = ExtValUtils.getELHelper()
- .getPropertyDetailsOfValueBinding(uiComponent);
+ PropertyDetails originalPropertyDetail = getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
PropertyInformation propertyInformation = extractFromMappedConstraintSource(originalPropertyDetail);
diff --git a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/SkipValidationStrategy.java b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/SkipValidationStrategy.java
index c825b70..f5dc489 100644
--- a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/SkipValidationStrategy.java
+++ b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/SkipValidationStrategy.java
@@ -19,6 +19,7 @@
package org.apache.myfaces.extensions.validator.baseval.strategy;
import org.apache.myfaces.extensions.validator.baseval.annotation.SkipValidation;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
@@ -49,9 +50,10 @@
{
String[] valueBindingExpressions = metaDataEntry.getValue(SkipValidation.class).value();
+ ELHelper elHelper = ExtValUtils.getELHelper();
for(String valueBindingExpression : valueBindingExpressions)
{
- if(Boolean.TRUE.equals(ExtValUtils.getELHelper().getValueOfExpression(
+ if(Boolean.TRUE.equals(elHelper.getValueOfExpression(
facesContext, new ValueBindingExpression(valueBindingExpression))))
{
metaDataEntry.setProperty(PropertyInformationKeys.SKIP_VALIDATION, true);
diff --git a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java
index dd3b08d..143f30e 100644
--- a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java
+++ b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java
@@ -18,6 +18,7 @@
*/
package org.apache.myfaces.extensions.validator.crossval.recorder;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.core.recorder.ProcessedInformationRecorder;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
import org.apache.myfaces.extensions.validator.crossval.storage.ProcessedInformationStorageEntry;
@@ -40,6 +41,8 @@
@UsageInformation(UsageCategory.INTERNAL)
public class CrossValidationUserInputRecorder implements ProcessedInformationRecorder
{
+ private ELHelper elHelper;
+
public void recordUserInput(UIComponent uiComponent, Object value)
{
if (!(uiComponent instanceof EditableValueHolder))
@@ -53,8 +56,7 @@
ProcessedInformationStorageEntry entry;
- PropertyDetails propertyDetails =
- ExtValUtils.getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
+ PropertyDetails propertyDetails = getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
if(propertyDetails == null)
{
@@ -95,4 +97,13 @@
processedInformationStorage.setEntry(key, entry);
}
}
+
+ protected ELHelper getELHelper()
+ {
+ if(this.elHelper == null)
+ {
+ this.elHelper = ExtValUtils.getELHelper();
+ }
+ return this.elHelper;
+ }
}
diff --git a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/ELCompareStrategy.java b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/ELCompareStrategy.java
index ab94b0b..da69870 100644
--- a/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/ELCompareStrategy.java
+++ b/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/ELCompareStrategy.java
@@ -18,6 +18,7 @@
*/
package org.apache.myfaces.extensions.validator.crossval.strategy;
+import org.apache.myfaces.extensions.validator.core.el.ELHelper;
import org.apache.myfaces.extensions.validator.crossval.storage.CrossValidationStorageEntry;
import org.apache.myfaces.extensions.validator.crossval.storage.CrossValidationStorage;
import org.apache.myfaces.extensions.validator.crossval.storage.ProcessedInformationStorage;
@@ -43,15 +44,16 @@
@UsageInformation(UsageCategory.INTERNAL)
class ELCompareStrategy implements ReferencingStrategy
{
- protected final Logger logger = Logger.getLogger(getClass().getName());
+ private final Logger logger = Logger.getLogger(getClass().getName());
public boolean evaluateReferenceAndValidate(
CrossValidationStorageEntry crossValidationStorageEntry,
CrossValidationStorage crossValidationStorage,
String validationTarget, AbstractCompareStrategy compareStrategy)
{
- if (ExtValUtils.getELHelper().isELTermWellFormed(validationTarget) &&
- ExtValUtils.getELHelper().isELTermValid(FacesContext.getCurrentInstance(), validationTarget))
+ ELHelper elHelper = ExtValUtils.getELHelper();
+ if (elHelper.isELTermWellFormed(validationTarget) &&
+ elHelper.isELTermValid(FacesContext.getCurrentInstance(), validationTarget))
{
tryToValidateValueBinding(
crossValidationStorageEntry,