Author: awiner
Date: Wed Jan 17 16:25:03 2007
New Revision: 497264

URL: http://svn.apache.org/viewvc?view=rev&rev=497264
Log:
JSF 1.2: improved/corrected use of Application.evaluateExpressionGet() in XML 
menu model code

Modified:
    
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
    
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java
    
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuContentHandlerImpl.java
    
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
    
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java

Modified: 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java?view=diff&rev=497264&r1=497263&r2=497264
==============================================================================
--- 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
 (original)
+++ 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
 Wed Jan 17 16:25:03 2007
@@ -26,10 +26,12 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.PropertyNotFoundException;
+
+import javax.faces.application.Application;
 import javax.faces.context.FacesContext;
-import javax.faces.el.PropertyNotFoundException;
-import javax.faces.el.PropertyResolver;
-import javax.faces.el.ValueBinding;
 import javax.faces.webapp.UIComponentTag;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
@@ -384,14 +386,16 @@
     if (node == null)
       return null;
       
-    FacesContext context      = FacesContext.getCurrentInstance();
-    PropertyResolver resolver = context.getApplication().getPropertyResolver();
-    String value              = null;
+    FacesContext context = FacesContext.getCurrentInstance();
+    ELContext elContext  = context.getELContext();
+    ELResolver resolver  = elContext.getELResolver();
+    String value         = null;
     
     try
     {
       Map<String, String> propMap = 
-        (Map<String, String>) resolver.getValue(node, _CUSTOM_ATTR_LIST);
+        (Map<String, String>) resolver.getValue(elContext,
+                                                node, _CUSTOM_ATTR_LIST);
         
       value = propMap.get(propName);
     }
@@ -403,7 +407,7 @@
       return null;
     }
     
-    // If it is an El expression, we must evaluate it
+    // If it is an EL expression, we must evaluate it
     // and return its value
     if (   value != null
         && UIComponentTag.isValueReference(value)
@@ -413,9 +417,9 @@
        
        try
        {
-         FacesContext ctx     = FacesContext.getCurrentInstance();
-         ValueBinding binding = ctx.getApplication().createValueBinding(value);
-         elValue              = binding.getValue(ctx);
+         elValue = context.getApplication().evaluateExpressionGet(context,
+                                                                  value,
+                                                                  
Object.class);
        }
        catch (Exception ex)
        {

Modified: 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java?view=diff&rev=497264&r1=497263&r2=497264
==============================================================================
--- 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java
 (original)
+++ 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/ItemNode.java
 Wed Jan 17 16:25:03 2007
@@ -73,7 +73,7 @@
     {
       // Value of action is EL method binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
     }
 
     // Post me as the selected Node for the request
@@ -112,7 +112,7 @@
     {
       // Value of action is EL method binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
       setActionListener(value);
     }
 
@@ -149,7 +149,7 @@
     {
       // Value of action is EL method binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
       setLaunchListener(value);
     }
 
@@ -186,7 +186,7 @@
     {
       // Value of action is EL method binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
       setReturnListener(value);
     }
 
@@ -372,7 +372,7 @@
     {
       // Value of action is EL method binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
     }
 
     // Appending nodeId to URL so that we can identify the node
@@ -408,7 +408,7 @@
     {
       // Value of destination is EL value binding, so we 
       // need to evaluate it
-      value = (String)MenuUtils.getBoundValue(value);
+      value = MenuUtils.getBoundValue(value, String.class);
       setTargetFrame(value);
     }
      

Modified: 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuContentHandlerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuContentHandlerImpl.java?view=diff&rev=497264&r1=497263&r2=497264
==============================================================================
--- 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuContentHandlerImpl.java
 (original)
+++ 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuContentHandlerImpl.java
 Wed Jan 17 16:25:03 2007
@@ -259,7 +259,8 @@
         // into another menu model.
         _saveModelData();        
 
-        XMLMenuModel menuModel = (XMLMenuModel)MenuUtils.getBoundValue(expr);
+        XMLMenuModel menuModel = (XMLMenuModel)MenuUtils.getBoundValue(expr,
+                                                              Object.class);
         
         // Now must pop the values cause we are back to the parent
         // model.

Modified: 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java?view=diff&rev=497264&r1=497263&r2=497264
==============================================================================
--- 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
 (original)
+++ 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuNode.java
 Wed Jan 17 16:25:03 2007
@@ -753,13 +753,13 @@
       elVar = str.substring(0, str.indexOf('.'));
       String elKey = str.substring(str.indexOf('.'));
       String elStr = elVar + getHandlerId() + elKey;
-      String elVal = (String)MenuUtils.getBoundValue(elStr);
+      String elVal = MenuUtils.getBoundValue(elStr, String.class);
       return elVal;       
     }
     else
     {
       // We have some other EL expression
-      return (String)MenuUtils.getBoundValue(str);
+      return MenuUtils.getBoundValue(str, String.class);
     }
   }
   

Modified: 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java?view=diff&rev=497264&r1=497263&r2=497264
==============================================================================
--- 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java
 (original)
+++ 
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/menu/MenuUtils.java
 Wed Jan 17 16:25:03 2007
@@ -54,16 +54,17 @@
    * 
    * @param elExpression - String representing an EL expression
    */
-  static Object getBoundValue(String elExpression)
+  static <T> T getBoundValue(String elExpression, Class<T> desiredClass)
   {
-    Object retVal = null;
-    
     try
     {
+      if (desiredClass == null)
+        throw new NullPointerException();
+
       FacesContext ctx = FacesContext.getCurrentInstance();
-      return ctx.getApplication().evaluateExpressionGet(ctx,
-                                                        elExpression,
-                                                        null);
+      return (T) ctx.getApplication().evaluateExpressionGet(ctx,
+                                                            elExpression,
+                                                            desiredClass);
     }
     catch (Exception ex)
     {
@@ -95,7 +96,7 @@
         && UIComponentTag.isValueReference(boolStr)
        )
     {
-      Boolean bValue = (Boolean) getBoundValue(boolStr);
+      Boolean bValue = getBoundValue(boolStr, Boolean.class);
       return bValue.booleanValue();
     }
     else
@@ -119,7 +120,7 @@
         && UIComponentTag.isValueReference(propVal)
        )
     {
-      String elVal = (String) getBoundValue(propVal);
+      String elVal = getBoundValue(propVal, String.class);
       return elVal;
     }
     return propVal;
@@ -137,7 +138,7 @@
         && UIComponentTag.isValueReference(propVal)
        )
     {
-      Integer elVal = (Integer) getBoundValue(propVal);
+      Integer elVal = getBoundValue(propVal, Integer.class);
       return elVal.intValue();
     }
     return Integer.parseInt(propVal);
@@ -201,7 +202,7 @@
       // if _bundleName is an EL, then get its value
       if (UIComponentTag.isValueReference(resBundle)) 
       {
-        bundleName = (String)MenuUtils.getBoundValue(resBundle);
+        bundleName = MenuUtils.getBoundValue(resBundle, String.class);
       } 
       else
       {


Reply via email to