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
{