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 2010/08/17 14:05:11 UTC

svn commit: r986284 - in /myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el: DefaultELHelper.java ExtValELResolver.java

Author: gpetracek
Date: Tue Aug 17 12:05:10 2010
New Revision: 986284

URL: http://svn.apache.org/viewvc?rev=986284&view=rev
Log:
EXTVAL-113

Modified:
    myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
    myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java

Modified: myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java?rev=986284&r1=986283&r2=986284&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java Tue Aug 17 12:05:10 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.myfaces.extensions.validator.core.el;
 
+import org.apache.myfaces.extensions.validator.core.JsfProjectStage;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
@@ -58,6 +59,8 @@ public class DefaultELHelper implements 
 
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
+    protected final boolean projectStageDevelopment = JsfProjectStage.is(JsfProjectStage.Development);
+
     public DefaultELHelper()
     {
         logger.fine(getClass().getName() + " instantiated");
@@ -157,21 +160,21 @@ public class DefaultELHelper implements 
             return null;
         }
 
-        ExtValELResolver elResolver = createWrappedELContext(facesContext);
+        ExtValELResolver elResolver = createExtValELResolver(facesContext);
         inspectTarget(valueExpression,
                 ExtValELResolver.createContextWrapper(facesContext.getELContext(), elResolver), false);
 
         ExtValELResolver compositeComponentELResolver = null;
 
         //see EXTVAL-102
-        if (elResolver.getBaseObject() instanceof CompositeComponentExpressionHolder)
+        while(elResolver.getBaseObject() instanceof CompositeComponentExpressionHolder)
         {
             ValueExpression newValueExpression = ((CompositeComponentExpressionHolder) elResolver.getBaseObject())
                     .getExpression(elResolver.getProperty());
 
             if (newValueExpression != null)
             {
-                elResolver = createWrappedELContext(facesContext);
+                elResolver = createExtValELResolver(facesContext);
                 inspectTarget(newValueExpression,
                         ExtValELResolver.createContextWrapper(
                                 facesContext.getELContext(), elResolver), false);
@@ -183,7 +186,7 @@ public class DefaultELHelper implements 
         {
             ValueExpression compositeExpression = elResolver.getCompositeComponentExpression();
             
-            compositeComponentELResolver = createWrappedELContext(facesContext);
+            compositeComponentELResolver = createExtValELResolver(facesContext);
             inspectTarget(compositeExpression,
                     ExtValELResolver.createContextWrapper(
                             facesContext.getELContext(), compositeComponentELResolver), true);
@@ -225,9 +228,9 @@ public class DefaultELHelper implements 
         }
     }
 
-    private ExtValELResolver createWrappedELContext(FacesContext facesContext)
+    private ExtValELResolver createExtValELResolver(FacesContext facesContext)
     {
-        return new ExtValELResolver(facesContext.getApplication().getELResolver());
+        return new ExtValELResolver(facesContext.getApplication().getELResolver(), this.projectStageDevelopment);
     }
 
     //keep in sync with DefaultELHelper#getPropertyDetailsOfValueBinding of branch!!!

Modified: myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java?rev=986284&r1=986283&r2=986284&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_2_0/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java Tue Aug 17 12:05:10 2010
@@ -44,6 +44,9 @@ public class ExtValELResolver extends EL
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
     private ELResolver wrapped;
+
+    private boolean projectStageDevelopment;
+
     private Object baseObject;
     private String property;
     //forms the id for cross-validation within complex components
@@ -52,9 +55,10 @@ public class ExtValELResolver extends EL
     private CompositeComponentExpressionHolder compositeComponentExpressionHolder;
     private String compositeComponentExpressionBase;
 
-    public ExtValELResolver(ELResolver elResolver)
+    public ExtValELResolver(ELResolver elResolver, boolean projectStageDevelopment)
     {
         this.wrapped = elResolver;
+        this.projectStageDevelopment = projectStageDevelopment;
     }
 
     public Object getBaseObject()
@@ -192,7 +196,16 @@ public class ExtValELResolver extends EL
     public void setValue(ELContext elContext, Object o, Object o1, Object o2)
     {
         expression += "." + o1;
-        property = (String)o1;
+
+        if(o1 instanceof String)
+        {
+            property = (String)o1;
+        }
+        else
+        {
+            logWarningForUnsupportedExpression(o1);
+        }
+
         baseObject = o;
         elContext.setPropertyResolved(true);
     }
@@ -278,4 +291,19 @@ public class ExtValELResolver extends EL
         }
         return null;
     }
+
+    private void logWarningForUnsupportedExpression(Object o1)
+    {
+        if(this.projectStageDevelopment)
+        {
+            try
+            {
+                this.logger.warning(o1 + " is not a valid property for constraint based validation.");
+            }
+            catch (NullPointerException e)
+            {
+                this.logger.warning("A property which doesn't support constraint based validation has been detected.");
+            }
+        }
+    }
 }