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,