KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > xtags > util > JspVariableContext


1 /*
2  * Copyright 1999,2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.apache.taglibs.xtags.util;
18
19 import javax.servlet.http.Cookie JavaDoc;
20 import javax.servlet.http.HttpServletRequest JavaDoc;
21 import javax.servlet.jsp.PageContext JavaDoc;
22
23 import org.jaxen.VariableContext;
24
25 /** A Servlet to display the result of an XPath expression as XML
26   *
27   * @author James Strachan
28   */

29
30 public class JspVariableContext implements VariableContext {
31
32     public static final String JavaDoc KEY_REQUEST_VARIABLE_CONTEXT = "org.apache.taglibs.xtags.jsp.VariableContext";
33     
34     /** Stores the page context */
35     private PageContext JavaDoc pageContext;
36
37
38     /** A static helper method to return the DOM4J {@link VariableContext}
39       * for the current request, lazily creating an instance if one does not
40       * currently exist.
41       */

42     public static JspVariableContext getInstance(PageContext JavaDoc pageContext) {
43         JspVariableContext answer = (JspVariableContext) JspHelper.findAttribute(
44                 pageContext,
45                 KEY_REQUEST_VARIABLE_CONTEXT
46         );
47         if ( answer == null ) {
48             answer = new JspVariableContext( pageContext );
49             pageContext.setAttribute(
50                 KEY_REQUEST_VARIABLE_CONTEXT,
51                 answer,
52                 PageContext.PAGE_SCOPE
53             );
54         }
55         return answer;
56     }
57     
58     public JspVariableContext(PageContext JavaDoc pageContext) {
59         this.pageContext = pageContext;
60     }
61
62     public Object JavaDoc getVariableValue(String JavaDoc name) {
63         Object JavaDoc answer = JspHelper.findAttribute( pageContext, name );
64         if ( answer == null ) {
65             answer = pageContext.getRequest().getParameter( name );
66             if ( answer == null ) {
67                 answer = pageContext.getServletContext().getInitParameter( name );
68             }
69         }
70         return answer;
71     }
72     
73     public Object JavaDoc getVariableValue(String JavaDoc prefix, String JavaDoc name) {
74         if ( prefix != null && prefix.length() > 0 ) {
75             if ( "app".equals( prefix ) ) {
76                 return pageContext.getAttribute( name, PageContext.APPLICATION_SCOPE );
77             }
78             else if ( "session".equals( prefix ) ) {
79                 return pageContext.getAttribute( name, PageContext.SESSION_SCOPE );
80             }
81             else if ( "request".equals( prefix ) ) {
82                 return pageContext.getAttribute( name, PageContext.REQUEST_SCOPE );
83             }
84             else if ( "page".equals( prefix ) ) {
85                 return pageContext.getAttribute( name, PageContext.PAGE_SCOPE );
86             }
87             else if ( "param".equals( prefix ) ) {
88                 return pageContext.getRequest().getParameter( name );
89             }
90             else if ( "initParam".equals( prefix ) ) {
91                 return pageContext.getServletContext().getInitParameter( name );
92             }
93             else if ( "header".equals( prefix ) ) {
94                 HttpServletRequest JavaDoc request = (HttpServletRequest JavaDoc) pageContext.getRequest();
95                 return request.getHeader( name );
96             }
97             else if ( "cookie".equals( prefix ) ) {
98                 HttpServletRequest JavaDoc request = (HttpServletRequest JavaDoc) pageContext.getRequest();
99                 Cookie JavaDoc[] cookies = request.getCookies();
100                 if ( cookies != null ) {
101                     for ( int i = 0, size = cookies.length; i < size; i++ ) {
102                         Cookie JavaDoc cookie = cookies[i];
103                         if ( name.equals( cookie.getName() ) ) {
104                             return cookie.getValue();
105                         }
106                     }
107                 }
108                 return null;
109             }
110         }
111         Object JavaDoc answer = JspHelper.findAttribute( pageContext, name );
112         if ( answer == null ) {
113             answer = pageContext.getRequest().getParameter( name );
114             if ( answer == null ) {
115                 answer = pageContext.getServletContext().getInitParameter( name );
116             }
117         }
118         return answer;
119     }
120     
121     public Object JavaDoc getVariableValue(String JavaDoc namespaceURI, String JavaDoc prefix, String JavaDoc name) {
122         return getVariableValue(prefix, name);
123     }
124 }
125
Popular Tags