--- java/org/apache/jasper/el/ELResolverImpl.java (revision 1033228) +++ java/org/apache/jasper/el/ELResolverImpl.java (working copy) @@ -45,10 +45,18 @@ ((CompositeELResolver) DefaultResolver).add(new BeanELResolver()); } + private ELResolver defaultResolver; + private final VariableResolver variableResolver; public ELResolverImpl(VariableResolver variableResolver) { this.variableResolver = variableResolver; + defaultResolver = new CompositeELResolver(); + ((CompositeELResolver) defaultResolver).add(new MapELResolver()); + ((CompositeELResolver) defaultResolver).add(new ResourceBundleELResolver()); + ((CompositeELResolver) defaultResolver).add(new ListELResolver()); + ((CompositeELResolver) defaultResolver).add(new ArrayELResolver()); + ((CompositeELResolver) defaultResolver).add(new BeanELResolver()); } @Override @@ -71,7 +79,7 @@ } if (!context.isPropertyResolved()) { - return getDefaultResolver().getValue(context, base, property); + return defaultResolver.getValue(context, base, property); } return null; } @@ -97,7 +105,7 @@ } if (!context.isPropertyResolved()) { - return getDefaultResolver().getType(context, base, property); + return defaultResolver.getType(context, base, property); } return null; } @@ -118,7 +126,7 @@ } if (!context.isPropertyResolved()) { - getDefaultResolver().setValue(context, base, property, value); + defaultResolver.setValue(context, base, property, value); } } @@ -134,12 +142,12 @@ return true; } - return getDefaultResolver().isReadOnly(context, base, property); + return defaultResolver.isReadOnly(context, base, property); } @Override public Iterator getFeatureDescriptors(ELContext context, Object base) { - return getDefaultResolver().getFeatureDescriptors(context, base); + return defaultResolver.getFeatureDescriptors(context, base); } @Override @@ -147,18 +155,18 @@ if (base == null) { return String.class; } - return getDefaultResolver().getCommonPropertyType(context, base); + return defaultResolver.getCommonPropertyType(context, base); } public static ELResolver getDefaultResolver() { if (Constants.IS_SECURITY_ENABLED) { - CompositeELResolver defaultResolver = new CompositeELResolver(); - defaultResolver.add(new MapELResolver()); - defaultResolver.add(new ResourceBundleELResolver()); - defaultResolver.add(new ListELResolver()); - defaultResolver.add(new ArrayELResolver()); - defaultResolver.add(new BeanELResolver()); - return defaultResolver; + CompositeELResolver newDefaultResolver = new CompositeELResolver(); + newDefaultResolver.add(new MapELResolver()); + newDefaultResolver.add(new ResourceBundleELResolver()); + newDefaultResolver.add(new ListELResolver()); + newDefaultResolver.add(new ArrayELResolver()); + newDefaultResolver.add(new BeanELResolver()); + return newDefaultResolver; } else { return DefaultResolver; } --- java/org/apache/jasper/el/ELContextImpl.java (revision 1033228) +++ java/org/apache/jasper/el/ELContextImpl.java (working copy) @@ -26,8 +26,6 @@ import javax.el.ValueExpression; import javax.el.VariableMapper; -import org.apache.jasper.Constants; - /** * Implementation of ELContext * @@ -66,22 +64,12 @@ private final ELResolver resolver; - private FunctionMapper functionMapper; + private FunctionMapper functionMapper = NullFunctionMapper; // immutable private VariableMapper variableMapper; public ELContextImpl() { this(ELResolverImpl.getDefaultResolver()); - if (Constants.IS_SECURITY_ENABLED) { - functionMapper = new FunctionMapper() { - @Override - public Method resolveFunction(String prefix, String localName) { - return null; - } - }; - } else { - functionMapper = NullFunctionMapper; - } } public ELContextImpl(ELResolver resolver) {