View Javadoc

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  package org.apache.commons.jxpath.servlet;
17  
18  import java.util.Enumeration;
19  import java.util.HashSet;
20  
21  import javax.servlet.ServletRequest;
22  
23  /***
24   * Implementation of the DynamicPropertyHandler interface that provides
25   * access to attributes and parameters of a ServletRequest.
26   *
27   * @author Dmitri Plotnikov
28   * @version $Revision: 1.6 $ $Date: 2004/05/08 15:10:49 $
29   */
30  public class ServletRequestHandler extends HttpSessionHandler {
31      
32      protected void collectPropertyNames(HashSet set, Object bean) {
33          super.collectPropertyNames(set, bean);
34          ServletRequestAndContext handle = (ServletRequestAndContext) bean; 
35          ServletRequest servletRequest = handle.getServletRequest();
36          Enumeration e = servletRequest.getAttributeNames();
37          while (e.hasMoreElements()) {
38              set.add(e.nextElement());
39          }
40          e = servletRequest.getParameterNames();
41          while (e.hasMoreElements()) {
42              set.add(e.nextElement());
43          }
44      }
45      
46      public Object getProperty(Object bean, String property) { 
47          ServletRequestAndContext handle = (ServletRequestAndContext) bean; 
48          ServletRequest servletRequest = handle.getServletRequest();
49          String[] strings = servletRequest.getParameterValues(property);
50          if (strings != null) {
51              if (strings.length == 0) {
52                  return null;
53              }
54              if (strings.length == 1) {
55                  return strings[0];
56              }
57              return strings;
58          }
59          
60          Object object = servletRequest.getAttribute(property);
61          if (object != null) {
62              return object;
63          }
64          
65          return super.getProperty(bean, property);
66      }
67  
68      public void setProperty(Object request, String property, Object value) {
69          ((ServletRequest) request).setAttribute(property, value);
70      }
71  }