1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 }