Author: markt
Date: Wed Jul 17 14:14:28 2013
New Revision: 1504148
URL: http://svn.apache.org/r1504148
Log:
Add the two new resolver types (stream and static) to Jasper in the correct
order and modify JasperELResolver so the correct resolvers are skipped.
Modified:
tomcat/trunk/java/org/apache/jasper/compiler/Validator.java
tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java
tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
tomcat/trunk/java/org/apache/jasper/el/ExpressionImpl.java
tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java
tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
tomcat/trunk/test/javax/el/TestBeanELResolver.java
tomcat/trunk/test/javax/el/TestResourceBundleELResolver.java
tomcat/trunk/test/org/apache/el/TestELEvaluation.java
tomcat/trunk/test/org/apache/el/TestMethodExpressionImpl.java
tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
tomcat/trunk/test/org/apache/el/parser/TestELParser.java
tomcat/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java
tomcat/trunk/test/org/apache/jasper/el/TestJasperELResolver.java
Modified: tomcat/trunk/java/org/apache/jasper/compiler/Validator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/Validator.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/Validator.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/Validator.java Wed Jul 17
14:14:28 2013
@@ -1215,7 +1215,8 @@ class Validator {
attrs.getQName(i), attrs.getURI(i),
attrs.getLocalName(i),
attrs.getValue(i), false, el,
false);
- ELContextImpl ctx = new ELContextImpl();
+ ELContextImpl ctx = new ELContextImpl(
+ expressionFactory);
ctx.setFunctionMapper(getFunctionMapper(el));
try {
jspAttrs[i].validateEL(this.pageInfo.getExpressionFactory(), ctx);
@@ -1377,7 +1378,8 @@ class Validator {
result = new Node.JspAttribute(tai, qName, uri,
localName, value, false, el, dynamic);
- ELContextImpl ctx = new ELContextImpl();
+ ELContextImpl ctx =
+ new ELContextImpl(expressionFactory);
ctx.setFunctionMapper(getFunctionMapper(el));
try {
@@ -1564,7 +1566,7 @@ class Validator {
validateFunctions(el, n);
// test it out
- ELContextImpl ctx = new ELContextImpl();
+ ELContextImpl ctx = new ELContextImpl(expressionFactory);
ctx.setFunctionMapper(this.getFunctionMapper(el));
ExpressionFactory ef = this.pageInfo.getExpressionFactory();
try {
Modified: tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ELContextImpl.java Wed Jul 17
14:14:28 2013
@@ -25,10 +25,12 @@ import javax.el.BeanELResolver;
import javax.el.CompositeELResolver;
import javax.el.ELContext;
import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
import javax.el.FunctionMapper;
import javax.el.ListELResolver;
import javax.el.MapELResolver;
import javax.el.ResourceBundleELResolver;
+import javax.el.StaticFieldELResolver;
import javax.el.ValueExpression;
import javax.el.VariableMapper;
@@ -95,8 +97,8 @@ public final class ELContextImpl extends
private VariableMapper variableMapper;
- public ELContextImpl() {
- this(getDefaultResolver());
+ public ELContextImpl(ExpressionFactory factory) {
+ this(getDefaultResolver(factory));
}
public ELContextImpl(ELResolver resolver) {
@@ -129,11 +131,11 @@ public final class ELContextImpl extends
this.variableMapper = variableMapper;
}
- public static ELResolver getDefaultResolver() {
+ public static ELResolver getDefaultResolver(ExpressionFactory factory) {
if (Constants.IS_SECURITY_ENABLED) {
CompositeELResolver defaultResolver = new CompositeELResolver();
- // TODO ExpressionFactory.getStreamELResolver()
- // TODO javax.el.StaticFieldResolver
+ defaultResolver.add(factory.getStreamELResolver());
+ defaultResolver.add(new StaticFieldELResolver());
defaultResolver.add(new MapELResolver());
defaultResolver.add(new ResourceBundleELResolver());
defaultResolver.add(new ListELResolver());
Modified: tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java Wed Jul 17
14:14:28 2013
@@ -22,6 +22,7 @@ import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
import javax.el.PropertyNotWritableException;
import javax.servlet.jsp.el.VariableResolver;
@@ -31,9 +32,10 @@ public final class ELResolverImpl extend
private final VariableResolver variableResolver;
private final ELResolver elResolver;
- public ELResolverImpl(VariableResolver variableResolver) {
+ public ELResolverImpl(VariableResolver variableResolver,
+ ExpressionFactory factory) {
this.variableResolver = variableResolver;
- this.elResolver = ELContextImpl.getDefaultResolver();
+ this.elResolver = ELContextImpl.getDefaultResolver(factory);
}
@Override
Modified: tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java Wed Jul
17 14:14:28 2013
@@ -39,12 +39,12 @@ public final class ExpressionEvaluatorIm
FunctionMapper fMapper) throws ELException {
try {
ELContextImpl ctx =
- new ELContextImpl(ELContextImpl.getDefaultResolver());
+ new ELContextImpl(ELContextImpl.getDefaultResolver(factory));
if (fMapper != null) {
ctx.setFunctionMapper(new FunctionMapperImpl(fMapper));
}
ValueExpression ve = this.factory.createValueExpression(ctx,
expression, expectedType);
- return new ExpressionImpl(ve);
+ return new ExpressionImpl(ve, factory);
} catch (javax.el.ELException e) {
throw new ELParseException(e.getMessage());
}
Modified: tomcat/trunk/java/org/apache/jasper/el/ExpressionImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ExpressionImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ExpressionImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ExpressionImpl.java Wed Jul 17
14:14:28 2013
@@ -17,6 +17,7 @@
package org.apache.jasper.el;
import javax.el.ELContext;
+import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.servlet.jsp.el.ELException;
import javax.servlet.jsp.el.Expression;
@@ -26,15 +27,18 @@ import javax.servlet.jsp.el.VariableReso
public final class ExpressionImpl extends Expression {
private final ValueExpression ve;
+ private final ExpressionFactory factory;
- public ExpressionImpl(ValueExpression ve) {
+
+ public ExpressionImpl(ValueExpression ve, ExpressionFactory factory) {
this.ve = ve;
+ this.factory = factory;
}
@Override
public Object evaluate(VariableResolver vResolver) throws ELException {
- ELContext ctx = new ELContextImpl(new ELResolverImpl(vResolver));
+ ELContext ctx =
+ new ELContextImpl(new ELResolverImpl(vResolver, factory));
return ve.getValue(ctx);
}
-
}
Modified: tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java Wed Jul 17
14:14:28 2013
@@ -29,6 +29,7 @@ import javax.el.ListELResolver;
import javax.el.MapELResolver;
import javax.el.PropertyNotFoundException;
import javax.el.ResourceBundleELResolver;
+import javax.el.StaticFieldELResolver;
import javax.servlet.jsp.el.ImplicitObjectELResolver;
import javax.servlet.jsp.el.ScopedAttributeELResolver;
@@ -38,21 +39,24 @@ import javax.servlet.jsp.el.ScopedAttrib
*/
public class JasperELResolver extends CompositeELResolver {
+ private static final int STANDARD_RESOLVERS_COUNT = 9;
+
private int size;
private ELResolver[] resolvers;
private final int appResolversSize;
- public JasperELResolver(List<ELResolver> appResolvers) {
+ public JasperELResolver(List<ELResolver> appResolvers,
+ ELResolver streamResolver) {
appResolversSize = appResolvers.size();
- resolvers = new ELResolver[appResolversSize + 7];
+ resolvers = new ELResolver[appResolversSize +
STANDARD_RESOLVERS_COUNT];
size = 0;
add(new ImplicitObjectELResolver());
for (ELResolver appResolver : appResolvers) {
add(appResolver);
}
- // TODO ExpressionFactory.getStreamELResolver()
- // TODO javax.el.StaticFieldResolver
+ add(streamResolver);
+ add(new StaticFieldELResolver());
add(new MapELResolver());
add(new ResourceBundleELResolver());
add(new ListELResolver());
@@ -82,7 +86,6 @@ public class JasperELResolver extends Co
throws NullPointerException, PropertyNotFoundException, ELException {
context.setPropertyResolved(false);
- // TODO Review this once the additional resolvers have been implemented
int start;
Object result = null;
@@ -95,9 +98,9 @@ public class JasperELResolver extends Co
return result;
}
}
- // skip collection-based resolvers (map, resource, list, array, and
- // bean)
- start = index + 5;
+ // skip stream, static and collection-based resolvers (map,
+ // resource, list, array) and bean
+ start = index + 7;
} else {
// skip implicit resolver only
start = 1;
@@ -125,8 +128,10 @@ public class JasperELResolver extends Co
Object result = null;
- // skip implicit and call app resolvers
- int index = 1 /* implicit */ + appResolversSize;
+ // skip implicit and call app resolvers, stream resolver and static
+ // resolver
+ int index = 1 /* implicit */ + appResolversSize +
+ 2 /* stream + static */;
for (int i = 1; i < index; i++) {
result = resolvers[i].invoke(
context, base, targetMethod, paramTypes, params);
@@ -135,7 +140,7 @@ public class JasperELResolver extends Co
}
}
- // skip map, resource, list, and array resolvers
+ // skip collection (map, resource, list, and array) resolvers
index += 4;
// call bean and the rest of resolvers
for (int i = index; i < size; i++) {
Modified:
tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
Wed Jul 17 14:14:28 2013
@@ -112,7 +112,8 @@ public class JspApplicationContextImpl i
private ELResolver createELResolver() {
this.instantiated = true;
if (this.resolver == null) {
- CompositeELResolver r = new JasperELResolver(this.resolvers);
+ CompositeELResolver r = new JasperELResolver(this.resolvers,
+ expressionFactory.getStreamELResolver());
this.resolver = r;
}
return this.resolver;
Modified: tomcat/trunk/test/javax/el/TestBeanELResolver.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestBeanELResolver.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestBeanELResolver.java (original)
+++ tomcat/trunk/test/javax/el/TestBeanELResolver.java Wed Jul 17 14:14:28 2013
@@ -27,7 +27,7 @@ public class TestBeanELResolver {
@Test
public void testBug53421() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
Bean bean = new Bean();
Modified: tomcat/trunk/test/javax/el/TestResourceBundleELResolver.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestResourceBundleELResolver.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestResourceBundleELResolver.java (original)
+++ tomcat/trunk/test/javax/el/TestResourceBundleELResolver.java Wed Jul 17
14:14:28 2013
@@ -32,7 +32,7 @@ public class TestResourceBundleELResolve
@Test
public void bug53001() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
ResourceBundle rb = new TesterResourceBundle();
Modified: tomcat/trunk/test/org/apache/el/TestELEvaluation.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestELEvaluation.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestELEvaluation.java (original)
+++ tomcat/trunk/test/org/apache/el/TestELEvaluation.java Wed Jul 17 14:14:28
2013
@@ -199,9 +199,9 @@ public class TestELEvaluation {
// ************************************************************************
private String evaluateExpression(String expression) {
- ELContextImpl ctx = new ELContextImpl();
- ctx.setFunctionMapper(new FMapper());
ExpressionFactoryImpl exprFactory = new ExpressionFactoryImpl();
+ ELContextImpl ctx = new ELContextImpl(exprFactory);
+ ctx.setFunctionMapper(new FMapper());
ValueExpression ve = exprFactory.createValueExpression(ctx, expression,
String.class);
return (String) ve.getValue(ctx);
Modified: tomcat/trunk/test/org/apache/el/TestMethodExpressionImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestMethodExpressionImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestMethodExpressionImpl.java (original)
+++ tomcat/trunk/test/org/apache/el/TestMethodExpressionImpl.java Wed Jul 17
14:14:28 2013
@@ -43,7 +43,7 @@ public class TestMethodExpressionImpl {
@Before
public void setUp() {
factory = ExpressionFactory.newInstance();
- context = new ELContextImpl();
+ context = new ELContextImpl(factory);
TesterBeanA beanA = new TesterBeanA();
beanA.setName("A");
Modified: tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java (original)
+++ tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java Wed Jul 17
14:14:28 2013
@@ -40,7 +40,7 @@ public class TestValueExpressionImpl {
@Test
public void testGetValueReference() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanB beanB = new TesterBeanB();
beanB.setName("Tomcat");
@@ -66,7 +66,7 @@ public class TestValueExpressionImpl {
@Test
public void testGetValueReferenceVariable() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanB beanB = new TesterBeanB();
beanB.setName("Tomcat");
@@ -94,7 +94,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug49345() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanA beanA = new TesterBeanA();
TesterBeanB beanB = new TesterBeanB();
@@ -123,7 +123,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug50105() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterEnum testEnum = TesterEnum.APPLE;
@@ -146,7 +146,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug51177ObjectMap() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
Object o1 = "String value";
Object o2 = Integer.valueOf(32);
@@ -173,7 +173,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug51177ObjectList() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
Object o1 = "String value";
Object o2 = Integer.valueOf(32);
@@ -204,7 +204,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug51544Bean() throws Exception {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanA beanA = new TesterBeanA();
beanA.setValList(Collections.emptyList());
@@ -227,7 +227,7 @@ public class TestValueExpressionImpl {
@Test
public void testBug51544Direct() throws Exception {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
List<?> list = Collections.emptyList();
Modified: tomcat/trunk/test/org/apache/el/parser/TestELParser.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/parser/TestELParser.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/parser/TestELParser.java (original)
+++ tomcat/trunk/test/org/apache/el/parser/TestELParser.java Wed Jul 17
14:14:28 2013
@@ -63,7 +63,7 @@ public class TestELParser {
@Test
public void testJavaKeyWordSuffix() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanA beanA = new TesterBeanA();
beanA.setInt("five");
@@ -85,7 +85,7 @@ public class TestELParser {
@Test
public void testJavaKeyWordIdentifier() {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
TesterBeanA beanA = new TesterBeanA();
beanA.setInt("five");
@@ -106,7 +106,7 @@ public class TestELParser {
private void testExpression(String expression, String expected) {
ExpressionFactory factory = ExpressionFactory.newInstance();
- ELContext context = new ELContextImpl();
+ ELContext context = new ELContextImpl(factory);
ValueExpression ve = factory.createValueExpression(
context, expression, String.class);
Modified: tomcat/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java
(original)
+++ tomcat/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java Wed
Jul 17 14:14:28 2013
@@ -171,9 +171,9 @@ public class TestAttributeParser {
private String evalAttr(String expression, char quote) {
- ELContextImpl ctx = new ELContextImpl();
- ctx.setFunctionMapper(new FMapper());
ExpressionFactoryImpl exprFactory = new ExpressionFactoryImpl();
+ ELContextImpl ctx = new ELContextImpl(exprFactory);
+ ctx.setFunctionMapper(new FMapper());
ValueExpression ve = exprFactory.createValueExpression(ctx,
AttributeParser.getUnquoted(expression, quote, false, false,
false),
Modified: tomcat/trunk/test/org/apache/jasper/el/TestJasperELResolver.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/el/TestJasperELResolver.java?rev=1504148&r1=1504147&r2=1504148&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/jasper/el/TestJasperELResolver.java (original)
+++ tomcat/trunk/test/org/apache/jasper/el/TestJasperELResolver.java Wed Jul 17
14:14:28 2013
@@ -26,6 +26,8 @@ import javax.servlet.jsp.el.ImplicitObje
import org.junit.Assert;
import org.junit.Test;
+import org.apache.el.stream.StreamELResolverImpl;
+
public class TestJasperELResolver {
@Test
@@ -50,14 +52,15 @@ public class TestJasperELResolver {
list.add(new ImplicitObjectELResolver());
}
- JasperELResolver resolver = new JasperELResolver(list);
+ JasperELResolver resolver =
+ new JasperELResolver(list, new StreamELResolverImpl());
Assert.assertEquals(Integer.valueOf(count),
getField("appResolversSize", resolver));
- Assert.assertEquals(7 + count,
+ Assert.assertEquals(8 + count,
((ELResolver[])getField("resolvers", resolver)).length);
- Assert.assertEquals(Integer.valueOf(7 + count),
+ Assert.assertEquals(Integer.valueOf(8 + count),
getField("size", resolver));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]