Author: remy.maucherat(a)jboss.com
Date: 2012-01-12 16:28:57 -0500 (Thu, 12 Jan 2012)
New Revision: 1920
Modified:
trunk/java/org/apache/el/parser/AstIdentifier.java
trunk/test/java/org/apache/el/TestValueExpressionImpl.java
trunk/webapps/docs/changelog.xml
Log:
Port EL fix.
Modified: trunk/java/org/apache/el/parser/AstIdentifier.java
===================================================================
--- trunk/java/org/apache/el/parser/AstIdentifier.java 2012-01-12 11:27:47 UTC (rev 1919)
+++ trunk/java/org/apache/el/parser/AstIdentifier.java 2012-01-12 21:28:57 UTC (rev 1920)
@@ -24,6 +24,7 @@
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,24 @@
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: trunk/test/java/org/apache/el/TestValueExpressionImpl.java
===================================================================
--- trunk/test/java/org/apache/el/TestValueExpressionImpl.java 2012-01-12 11:27:47 UTC
(rev 1919)
+++ trunk/test/java/org/apache/el/TestValueExpressionImpl.java 2012-01-12 21:28:57 UTC
(rev 1920)
@@ -64,6 +64,34 @@
}
@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();
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2012-01-12 11:27:47 UTC (rev 1919)
+++ trunk/webapps/docs/changelog.xml 2012-01-12 21:28:57 UTC (rev 1920)
@@ -25,6 +25,13 @@
</fix>
</changelog>
</subsection>
+ <subsection name="Jasper">
+ <changelog>
+ <fix>
+ Resolve EL variables when returning value references. (markt)
+ </fix>
+ </changelog>
+ </subsection>
</section>
<section name="JBoss Web 7.0.8.Final (remm)">
Show replies by date