001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.el;
018
019 import javax.servlet.jsp.PageContext;
020 import javax.servlet.jsp.el.ELException;
021 import javax.servlet.jsp.el.VariableResolver;
022
023 /**
024 *
025 * <p>This is the JSTL-specific implementation of VariableResolver.
026 * It looks up variable references in the PageContext, and also
027 * recognizes references to implicit objects.
028 *
029 * @author Nathan Abramson - Art Technology Group
030 * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: mbenson $
031 **/
032
033 public class VariableResolverImpl
034 implements VariableResolver
035 {
036 //-------------------------------------
037 // Member variables
038 //-------------------------------------
039
040 private PageContext mCtx;
041
042 //-------------------------------------
043 /**
044 *
045 * Constructor
046 **/
047 public VariableResolverImpl (PageContext pCtx)
048 {
049 mCtx = pCtx;
050 }
051
052 //-------------------------------------
053 /**
054 *
055 * Resolves the specified variable within the given context.
056 * Returns null if the variable is not found.
057 **/
058 public Object resolveVariable (String pName)
059 throws ELException
060 {
061 // Check for implicit objects
062 if ("pageContext".equals (pName)) {
063 return mCtx;
064 }
065 else if ("pageScope".equals (pName)) {
066 return ImplicitObjects.
067 getImplicitObjects (mCtx).
068 getPageScopeMap ();
069 }
070 else if ("requestScope".equals (pName)) {
071 return ImplicitObjects.
072 getImplicitObjects (mCtx).
073 getRequestScopeMap ();
074 }
075 else if ("sessionScope".equals (pName)) {
076 return ImplicitObjects.
077 getImplicitObjects (mCtx).
078 getSessionScopeMap ();
079 }
080 else if ("applicationScope".equals (pName)) {
081 return ImplicitObjects.
082 getImplicitObjects (mCtx).
083 getApplicationScopeMap ();
084 }
085 else if ("param".equals (pName)) {
086 return ImplicitObjects.
087 getImplicitObjects (mCtx).
088 getParamMap ();
089 }
090 else if ("paramValues".equals (pName)) {
091 return ImplicitObjects.
092 getImplicitObjects (mCtx).
093 getParamsMap ();
094 }
095 else if ("header".equals (pName)) {
096 return ImplicitObjects.
097 getImplicitObjects (mCtx).
098 getHeaderMap ();
099 }
100 else if ("headerValues".equals (pName)) {
101 return ImplicitObjects.
102 getImplicitObjects (mCtx).
103 getHeadersMap ();
104 }
105 else if ("initParam".equals (pName)) {
106 return ImplicitObjects.
107 getImplicitObjects (mCtx).
108 getInitParamMap ();
109 }
110 else if ("cookie".equals (pName)) {
111 return ImplicitObjects.
112 getImplicitObjects (mCtx).
113 getCookieMap ();
114 }
115
116 // Otherwise, just look it up in the page context
117 else {
118 return mCtx.findAttribute (pName);
119 }
120 }
121
122 //-------------------------------------
123 }