import javax.el.ValueExpression;
import javax.el.VariableMapper;
+import org.apache.catalina.Globals;
+
/**
* Implementation of ELContext
*
private final ELResolver resolver;
- private FunctionMapper functionMapper = NullFunctionMapper; // immutable
+ private FunctionMapper functionMapper;
private VariableMapper variableMapper;
public ELContextImpl() {
- this(ELResolverImpl.DefaultResolver);
+ this(ELResolverImpl.getDefaultResolver());
+ if (Globals.IS_SECURITY_ENABLED) {
+ functionMapper = new FunctionMapper() {
+ public Method resolveFunction(String prefix, String localName) {
+ return null;
+ }
+ };
+ } else {
+ functionMapper = NullFunctionMapper;
+ }
}
public ELContextImpl(ELResolver resolver) {
import javax.el.ResourceBundleELResolver;
import javax.servlet.jsp.el.VariableResolver;
+import org.apache.catalina.Globals;
+
public final class ELResolverImpl extends ELResolver {
-
+ /** @deprecated - Use getDefaultResolver(). Needs to be made private */
public final static ELResolver DefaultResolver = new CompositeELResolver();
static {
}
if (!context.isPropertyResolved()) {
- return DefaultResolver.getValue(context, base, property);
+ return getDefaultResolver().getValue(context, base, property);
}
return null;
}
}
if (!context.isPropertyResolved()) {
- return DefaultResolver.getType(context, base, property);
+ return getDefaultResolver().getType(context, base, property);
}
return null;
}
}
if (!context.isPropertyResolved()) {
- DefaultResolver.setValue(context, base, property, value);
+ getDefaultResolver().setValue(context, base, property, value);
}
}
return true;
}
- return DefaultResolver.isReadOnly(context, base, property);
+ return getDefaultResolver().isReadOnly(context, base, property);
}
public Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
- return DefaultResolver.getFeatureDescriptors(context, base);
+ return getDefaultResolver().getFeatureDescriptors(context, base);
}
public Class<?> getCommonPropertyType(ELContext context, Object base) {
if (base == null) {
return String.class;
}
- return DefaultResolver.getCommonPropertyType(context, base);
+ return getDefaultResolver().getCommonPropertyType(context, base);
}
+ public static ELResolver getDefaultResolver() {
+ if (Globals.IS_SECURITY_ENABLED) {
+ ELResolver 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());
+ return defaultResolver;
+ } else {
+ return DefaultResolver;
+ }
+ }
}