You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2012/01/12 20:33:17 UTC
svn commit: r1230711 - in /tomcat/trunk:
java/org/apache/el/parser/AstIdentifier.java
test/org/apache/el/TestValueExpressionImpl.java
Author: markt
Date: Thu Jan 12 19:33:17 2012
New Revision: 1230711
URL: http://svn.apache.org/viewvc?rev=1230711&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52440
Need to resolve EL variables when returning ValueReferences
Includes a new test case.
Modified:
tomcat/trunk/java/org/apache/el/parser/AstIdentifier.java
tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
Modified: tomcat/trunk/java/org/apache/el/parser/AstIdentifier.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstIdentifier.java?rev=1230711&r1=1230710&r2=1230711&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstIdentifier.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstIdentifier.java Thu Jan 12 19:33:17 2012
@@ -24,6 +24,7 @@ import javax.el.MethodInfo;
import javax.el.MethodNotFoundException;
import javax.el.PropertyNotFoundException;
import javax.el.ValueExpression;
+import javax.el.ValueReference;
import javax.el.VariableMapper;
import org.apache.el.lang.EvaluationContext;
@@ -135,6 +136,25 @@ public final class AstIdentifier extends
this.image = image;
}
+
+ @Override
+ public ValueReference getValueReference(EvaluationContext ctx) {
+ VariableMapper varMapper = ctx.getVariableMapper();
+
+ if (varMapper == null) {
+ return null;
+ }
+
+ ValueExpression expr = varMapper.resolveVariable(this.image);
+
+ if (expr == null) {
+ return null;
+ }
+
+ return expr.getValueReference(ctx);
+ }
+
+
private final MethodExpression getMethodExpression(EvaluationContext ctx)
throws ELException {
Object obj = null;
Modified: tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java?rev=1230711&r1=1230710&r2=1230711&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java (original)
+++ tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java Thu Jan 12 19:33:17 2012
@@ -64,6 +64,34 @@ public class TestValueExpressionImpl {
}
@Test
+ public void testGetValueReferenceVariable() {
+ ExpressionFactory factory = ExpressionFactory.newInstance();
+ ELContext context = new ELContextImpl();
+
+ TesterBeanB beanB = new TesterBeanB();
+ beanB.setName("Tomcat");
+ ValueExpression var =
+ factory.createValueExpression(beanB, TesterBeanB.class);
+ context.getVariableMapper().setVariable("beanB", var);
+
+ ValueExpression var2 = factory.createValueExpression(
+ context, "${beanB.name}", String.class);
+
+ context.getVariableMapper().setVariable("foo", var2);
+
+ ValueExpression ve = factory.createValueExpression(
+ context, "${foo}", ValueExpression.class);
+
+
+ // Now check the value reference
+ ValueReference vr = ve.getValueReference(context);
+ assertNotNull(vr);
+
+ assertEquals(beanB, vr.getBase());
+ assertEquals("name", vr.getProperty());
+ }
+
+ @Test
public void testBug49345() {
ExpressionFactory factory = ExpressionFactory.newInstance();
ELContext context = new ELContextImpl();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org