1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.jxpath.servlet;
19
20 import java.util.Enumeration;
21 import java.util.HashSet;
22
23 import javax.servlet.ServletRequest;
24
25
26
27
28
29 public class ServletRequestHandler extends HttpSessionHandler {
30
31
32
33
34 public ServletRequestHandler() {
35
36 }
37
38 @Override
39 protected void collectPropertyNames(final HashSet<String> set, final Object bean) {
40 super.collectPropertyNames(set, bean);
41 final ServletRequestAndContext handle = (ServletRequestAndContext) bean;
42 final ServletRequest servletRequest = handle.getServletRequest();
43 Enumeration<String> e = servletRequest.getAttributeNames();
44 while (e.hasMoreElements()) {
45 set.add(e.nextElement());
46 }
47 e = servletRequest.getParameterNames();
48 while (e.hasMoreElements()) {
49 set.add(e.nextElement());
50 }
51 }
52
53 @Override
54 public Object getProperty(final Object bean, final String property) {
55 final ServletRequestAndContext handle = (ServletRequestAndContext) bean;
56 final ServletRequest servletRequest = handle.getServletRequest();
57 final String[] strings = servletRequest.getParameterValues(property);
58 if (strings != null) {
59 if (strings.length == 0) {
60 return null;
61 }
62 if (strings.length == 1) {
63 return strings[0];
64 }
65 return strings;
66 }
67 final Object object = servletRequest.getAttribute(property);
68 if (object != null) {
69 return object;
70 }
71 return super.getProperty(bean, property);
72 }
73
74 @Override
75 public void setProperty(final Object request, final String property, final Object value) {
76 ((ServletRequestAndContext) request).getServletRequest().setAttribute(property, value);
77 }
78 }