FileDocCategorySizeDatePackage
ImplicitObjectELResolver.javaAPI DocGlassfish v2 API42598Fri May 04 22:34:28 BST 2007javax.servlet.jsp.el

ImplicitObjectELResolver

public class ImplicitObjectELResolver extends ELResolver
Defines variable resolution behavior for the EL implicit objects defined in the JSP specification.

The following variables are resolved by this ELResolver, as per the JSP specification:

  • pageContext - the PageContext object.
  • pageScope - a Map that maps page-scoped attribute names to their values.
  • requestScope - a Map that maps request-scoped attribute names to their values.
  • sessionScope - a Map that maps session-scoped attribute names to their values.
  • applicationScope - a Map that maps application-scoped attribute names to their values.
  • param - a Map that maps parameter names to a single String parameter value (obtained by calling ServletRequest.getParameter(String name)).
  • paramValues - a Map that maps parameter names to a String[] of all values for that parameter (obtained by calling ServletRequest.getParameterValues(String name)).
  • header - a Map that maps header names to a single String header value (obtained by calling HttpServletRequest.getHeader(String name)).
  • headerValues - a Map that maps header names to a String[] of all values for that header (obtained by calling HttpServletRequest.getHeaders(String)).
  • cookie - a Map that maps cookie names to a single Cookie object. Cookies are retrieved according to the semantics of HttpServletRequest.getCookies(). If the same name is shared by multiple cookies, an implementation must use the first one encountered in the array of Cookie objects returned by the getCookies() method. However, users of the cookie implicit object must be aware that the ordering of cookies is currently unspecified in the servlet specification.
  • initParam - a Map that maps context initialization parameter names to their String parameter value (obtained by calling ServletContext.getInitParameter(String name)).

see
javax.el.ELResolver
since
JSP 2.1

Fields Summary
Constructors Summary
Methods Summary
public java.lang.ClassgetCommonPropertyType(javax.el.ELContext context, java.lang.Object base)
If the base object is null, returns String.class. Otherwise, returns null.

param
context The context of this evaluation.
param
base Only null is handled by this resolver. Other values will result in a null return value.
return
null if base is not null; otherwise String.class.

        if (base == null) {
            return String.class;
        }
        return null;
    
public java.util.IteratorgetFeatureDescriptors(javax.el.ELContext context, java.lang.Object base)
If the base object is null, and the property matches the name of a JSP implicit object, returns an Iterator containing FeatureDescriptor objects with information about each JSP implicit object resolved by this resolver. Otherwise, returns null.

The Iterator returned must contain one instance of {@link java.beans.FeatureDescriptor} for each of the EL implicit objects defined by the JSP spec. Each info object contains information about a single implicit object, and is initialized as follows:

  • displayName - The name of the implicit object.
  • name - Same as displayName property.
  • shortDescription - A suitable description for the implicit object. Will vary by implementation.
  • expert - false
  • hidden - false
  • preferred - true
  • In addition, the following named attributes must be set in the returned FeatureDescriptors:
  • {@link ELResolver#TYPE} - The runtime type of the implicit object.
  • {@link ELResolver#RESOLVABLE_AT_DESIGN_TIME} - true.
  • param
    context The context of this evaluation.
    param
    base Only null is handled by this resolver. Other values will result in a null return value.
    return
    An Iterator containing one FeatureDescriptor object for each implicit object, or null if base is not null.

            ArrayList<FeatureDescriptor> list =
                                            new ArrayList<FeatureDescriptor>(11);
    
            // pageContext
            FeatureDescriptor descriptor = new FeatureDescriptor();
            descriptor.setName("pageContext");
            descriptor.setDisplayName("pageContext");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", javax.servlet.jsp.PageContext.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // pageScope
            descriptor = new FeatureDescriptor();
            descriptor.setName("pageScope");
            descriptor.setDisplayName("pageScope");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // requestScope
            descriptor = new FeatureDescriptor();
            descriptor.setName("requestScope");
            descriptor.setDisplayName("requestScope");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // sessionScope
            descriptor = new FeatureDescriptor();
            descriptor.setName("sessionScope");
            descriptor.setDisplayName("sessionScope");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // applicationScope
            descriptor = new FeatureDescriptor();
            descriptor.setName("applicationScope");
            descriptor.setDisplayName("applicationScope");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // param
            descriptor = new FeatureDescriptor();
            descriptor.setName("param");
            descriptor.setDisplayName("param");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // paramValues
            descriptor = new FeatureDescriptor();
            descriptor.setName("paramValues");
            descriptor.setDisplayName("paramValues");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // header
            descriptor = new FeatureDescriptor();
            descriptor.setName("header");
            descriptor.setDisplayName("header");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // headerValues
            descriptor = new FeatureDescriptor();
            descriptor.setName("headerValues");
            descriptor.setDisplayName("headerValues");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // cookie
            descriptor = new FeatureDescriptor();
            descriptor.setName("cookie");
            descriptor.setDisplayName("cookie");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            // initParam
            descriptor = new FeatureDescriptor();
            descriptor.setName("initParam");
            descriptor.setDisplayName("initParam");
            //descriptor.setShortDescription("");
            descriptor.setExpert(false);
            descriptor.setHidden(false);
            descriptor.setPreferred(true);
            descriptor.setValue("type", Map.class);
            descriptor.setValue("resolvableAtDesignTime", Boolean.TRUE);
            list.add(descriptor);
    
            return list.iterator();
        
    public java.lang.ClassgetType(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)
    If the base object is null, and the property matches the name of a JSP implicit object, returns null to indicate that no types are ever accepted to setValue().

    The propertyResolved property of the ELContext object must be set to true by this resolver before returning if an implicit object is matched. If this property is not true after this method is called, the caller should ignore the return value.

    param
    context The context of this evaluation.
    param
    base Only null is handled by this resolver. Other values will result in an immediate return.
    param
    property The name of the implicit object to resolve.
    return
    If the propertyResolved property of ELContext was set to true, then null; otherwise undefined.
    throws
    NullPointerException if context is null
    throws
    ELException if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.

    
            if (context == null) {
                throw new NullPointerException();
            }
    
            if ((base == null) && ("pageContext".equals(property) || 
                    "pageScope".equals(property)) ||
                    "requestScope".equals(property) ||
                    "sessionScope".equals(property) ||
                    "applicationScope".equals (property) ||
                    "param".equals (property) ||
                    "paramValues".equals (property) ||
                    "header".equals (property) ||
                    "headerValues".equals (property) ||
                    "initParam".equals (property) ||
                    "cookie".equals (property)) {
                context.setPropertyResolved(true);
            }
            return null;
        
    public java.lang.ObjectgetValue(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)
    If the base object is null, and the property matches the name of a JSP implicit object, returns the implicit object.

    The propertyResolved property of the ELContext object must be set to true by this resolver before returning if an implicit object is matched. If this property is not true after this method is called, the caller should ignore the return value.

    param
    context The context of this evaluation.
    param
    base Only null is handled by this resolver. Other values will result in an immediate return.
    param
    property The name of the implicit object to resolve.
    return
    If the propertyResolved property of ELContext was set to true, then the implicit object; otherwise undefined.
    throws
    NullPointerException if context is null
    throws
    ELException if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.

    
            if (context == null) {
                throw new NullPointerException();
            }
    
            if (base != null) {
                return null;
            }
    
            PageContext ctxt = (PageContext)context.getContext(JspContext.class);
                                   
            if ("pageContext".equals(property)) {
                context.setPropertyResolved(true);
                return ctxt;
            }
            ImplicitObjects implicitObjects =
                ImplicitObjects.getImplicitObjects(ctxt);
            if ("pageScope".equals(property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getPageScopeMap();
            }
            if ("requestScope".equals(property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getRequestScopeMap();
            }
            if ("sessionScope".equals(property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getSessionScopeMap();
            }
            if ("applicationScope".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getApplicationScopeMap ();
            }
            if ("param".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getParamMap();
            }
            if ("paramValues".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getParamsMap();
            }
            if ("header".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getHeaderMap();
            }
            if ("headerValues".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getHeadersMap();
            }
            if ("initParam".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getInitParamMap ();
            }
            if ("cookie".equals (property)) {
                context.setPropertyResolved(true);
                return implicitObjects.getCookieMap ();
            }
            return null;
        
    public booleanisReadOnly(javax.el.ELContext context, java.lang.Object base, java.lang.Object property)
    If the base object is null, and the property matches the name of a JSP implicit object, returns true to indicate that implicit objects cannot be overwritten.

    The propertyResolved property of the ELContext object must be set to true by this resolver before returning if an implicit object is matched. If this property is not true after this method is called, the caller should ignore the return value.

    param
    context The context of this evaluation.
    param
    base Only null is handled by this resolver. Other values will result in an immediate return.
    param
    property The name of the implicit object.
    return
    If the propertyResolved property of ELContext was set to true, then true; otherwise undefined.
    throws
    NullPointerException if context is null.
    throws
    ELException if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.

            if (context == null) {
                throw new NullPointerException();
            }
    
            if ((base == null) && ("pageContext".equals(property) || 
                    "pageScope".equals(property)) ||
                    "requestScope".equals(property) ||
                    "sessionScope".equals(property) ||
                    "applicationScope".equals (property) ||
                    "param".equals (property) ||
                    "paramValues".equals (property) ||
                    "header".equals (property) ||
                    "headerValues".equals (property) ||
                    "initParam".equals (property) ||
                    "cookie".equals (property)) {
                context.setPropertyResolved(true);
                return true;
            }
            return false;	// Doesn't matter
        
    public voidsetValue(javax.el.ELContext context, java.lang.Object base, java.lang.Object property, java.lang.Object val)
    If the base object is null, and the property matches the name of a JSP implicit object, throws PropertyNotWritableException to indicate that implicit objects cannot be overwritten.

    The propertyResolved property of the ELContext object must be set to true by this resolver before returning if an implicit object is matched. If this property is not true after this method is called, the caller should ignore the return value.

    param
    context The context of this evaluation.
    param
    base Only null is handled by this resolver. Other values will result in an immediate return.
    param
    property The name of the implicit object.
    param
    val The value to be associated with the implicit object.
    throws
    NullPointerException if context is null.
    throws
    PropertyNotWritableException always thrown, if the implicit object name is recognized by this resolver.
    throws
    ELException if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available.

    
            if (context == null) {
                throw new NullPointerException();
            }
    
            if ((base == null) && ("pageContext".equals(property) || 
                    "pageScope".equals(property)) ||
                    "requestScope".equals(property) ||
                    "sessionScope".equals(property) ||
                    "applicationScope".equals (property) ||
                    "param".equals (property) ||
                    "paramValues".equals (property) ||
                    "header".equals (property) ||
                    "headerValues".equals (property) ||
                    "initParam".equals (property) ||
                    "cookie".equals (property)) {
                throw new PropertyNotWritableException();
            }