You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2008/11/05 13:12:46 UTC

svn commit: r711557 - in /myfaces/extensions/validator/trunk: core/src/main/java/org/apache/myfaces/extensions/validator/core/ core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ core/src/main/java/org/apache/myfaces/extensions/validato...

Author: gpetracek
Date: Wed Nov  5 04:12:46 2008
New Revision: 711557

URL: http://svn.apache.org/viewvc?rev=711557&view=rev
Log:
extval el-resolver as default approach

Modified:
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ELHelper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java Wed Nov  5 04:12:46 2008
@@ -83,12 +83,6 @@
         .getInitParameter("CUSTOM_COMPONENT_INITIALIZER_FACTORY");
 
     /*
-     * activate
-     */
-    static final String ACTIVATE_EL_RESOLVER = WebXmlUtils
-        .getInitParameter("ACTIVATE_EL_RESOLVER");
-
-    /*
      * deactivate
      */
     static final String DEACTIVATE_RENDERKIT = WebXmlUtils
@@ -97,6 +91,9 @@
     static final String DEACTIVATE_DEFAULT_CONVENTION = WebXmlUtils
         .getInitParameter("DEACTIVATE_DEFAULT_CONVENTION");
 
+    static final String DEACTIVATE_EL_RESOLVER = WebXmlUtils
+        .getInitParameter("DEACTIVATE_EL_RESOLVER");
+
     //there is nothing like DEACTIVATE_DEFAULT_VALIDATION_INTERCEPTOR
     //use ExtValContext.getContext().denyRendererInterceptor(...) within an extval-StartupListener
 }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java Wed Nov  5 04:12:46 2008
@@ -25,6 +25,7 @@
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
+import org.apache.myfaces.extensions.validator.ExtValInformation;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -52,7 +53,7 @@
 @UsageInformation(UsageCategory.INTERNAL)
 public class DefaultELHelper implements ELHelper
 {
-    private static final String ACTIVATE_EL_RESOLVER = WebXmlParameter.ACTIVATE_EL_RESOLVER;
+    private static final String DEACTIVATE_EL_RESOLVER = WebXmlParameter.DEACTIVATE_EL_RESOLVER;
 
     protected final Log logger = LogFactory.getLog(getClass());
 
@@ -168,39 +169,48 @@
         return new ValueBindingExpression(valueBindingExpression);
     }
 
-    public PropertyDetails getTargetInformation(UIComponent uiComponent)
+    public PropertyDetails getPropertyDetailsOfValueBinding(UIComponent uiComponent)
     {
-        if("true".equalsIgnoreCase(ACTIVATE_EL_RESOLVER))
+        if("true".equalsIgnoreCase(DEACTIVATE_EL_RESOLVER))
         {
-            FacesContext facesContext = FacesContext.getCurrentInstance();
+            return getPropertyDetailsViaReflectionFallback(uiComponent);
+        }
 
-            ExtValELResolver elResolver = new ExtValELResolver(facesContext.getApplication().getELResolver());
-            ELContext elContext = ExtValELResolver.createContextWrapper(facesContext.getELContext(), elResolver);
+        FacesContext facesContext = FacesContext.getCurrentInstance();
 
-            ValueExpression valueExpression = uiComponent.getValueExpression("value");
+        ExtValELResolver elResolver = new ExtValELResolver(facesContext.getApplication().getELResolver());
+        ELContext elContext = ExtValELResolver.createContextWrapper(facesContext.getELContext(), elResolver);
 
-            if(valueExpression == null)
-            {
-                return null;
-            }
+        ValueExpression valueExpression = uiComponent.getValueExpression("value");
 
-            try
-            {
-                valueExpression.setValue(elContext, null);
-            }
-            catch (Throwable t)
-            {
-                throw new IllegalStateException("please don't activate the el-resovler of extval. " +
-                    "there's a bug in the el impl. you are using.");
-            }
+        if(valueExpression == null)
+        {
+            return null;
+        }
 
-            if(elResolver.getPath() != null && elResolver.getBaseObject() != null && elResolver.getProperty() != null)
-            {
-                return new PropertyDetails(
-                    elResolver.getPath(), elResolver.getBaseObject(), elResolver.getProperty());
-            }
+        try
+        {
+            valueExpression.setValue(elContext, null);
+        }
+        catch (Throwable t)
+        {
+            throw new IllegalStateException(
+                "an el-resolver error occurred! " +
+                "please report the issue, deactivate the el-resovler of extval via web.xml context-param: " +
+                ExtValInformation.WEBXML_PARAM_PREFIX + ".DEACTIVATE_EL_RESOLVER" +
+                " and test again.");
         }
 
+        if(elResolver.getPath() == null || elResolver.getBaseObject() == null || elResolver.getProperty() == null)
+        {
+            return null;
+        }
+
+        return new PropertyDetails(elResolver.getPath(), elResolver.getBaseObject(), elResolver.getProperty());
+    }
+
+    private PropertyDetails getPropertyDetailsViaReflectionFallback(UIComponent uiComponent)
+    {
         ValueBindingExpression valueBindingExpression = getValueBindingExpression(uiComponent, false);
 
         if(valueBindingExpression == null)

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ELHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ELHelper.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ELHelper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ELHelper.java Wed Nov  5 04:12:46 2008
@@ -46,7 +46,7 @@
 
     Object getValueOfExpression(FacesContext facesContext, ValueBindingExpression valueBindingExpression);
 
-    PropertyDetails getTargetInformation(UIComponent uiComponent);
+    PropertyDetails getPropertyDetailsOfValueBinding(UIComponent uiComponent);
 
     boolean isExpressionValid(FacesContext facesContext, String valueBindingExpression);
 

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java Wed Nov  5 04:12:46 2008
@@ -88,6 +88,7 @@
         expression += "." + o1;
         property = (String)o1;
         baseObject = o;
+        elContext.setPropertyResolved(true);
     }
 
     public boolean isReadOnly(ELContext elContext, Object o, Object o1)

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java Wed Nov  5 04:12:46 2008
@@ -79,7 +79,7 @@
         }
 
         PropertyDetails propertyDetails =
-            ExtValUtils.getELHelper().getTargetInformation(uiComponent);
+            ExtValUtils.getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
 
         if (propertyDetails == null)
         {

Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java?rev=711557&r1=711556&r2=711557&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/recorder/CrossValidationUserInputRecorder.java Wed Nov  5 04:12:46 2008
@@ -54,7 +54,7 @@
         ProcessedInformationEntry entry;
 
         PropertyDetails propertyDetails =
-            ExtValUtils.getELHelper().getTargetInformation(uiComponent);
+            ExtValUtils.getELHelper().getPropertyDetailsOfValueBinding(uiComponent);
 
         if(propertyDetails == null)
         {