1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.morph.reflect.reflectors;
17
18 import javax.servlet.http.HttpServletRequest;
19
20 import net.sf.composite.util.ObjectUtils;
21 import net.sf.morph.reflect.Reflector;
22 import net.sf.morph.util.ClassUtils;
23
24 /**
25 * ServletRequest reflector.
26 *
27 * @author Matt Sgarlata
28 * @since Morph 1.1 (Oct 25, 2007)
29 */
30 public class ServletRequestReflector extends StubbornDelegatingReflector {
31
32 public ServletRequestReflector() {
33 super(new Reflector[] { new ServletRequestParameterReflector(),
34 new ServletRequestAttributeReflector() });
35 }
36
37 protected Class getTypeImpl(Object bean, String propertyName) throws Exception {
38 HttpServletRequest request = (HttpServletRequest) bean;
39
40
41 String[] values = request.getParameterValues(propertyName);
42 if (!ObjectUtils.isEmpty(values)) {
43 return ObjectUtils.isEmpty(values) || values.length == 1 ? String.class : String[].class;
44 }
45
46
47 Object attr = request.getAttribute(propertyName);
48 if (attr != null) {
49 return ClassUtils.getClass(attr);
50 }
51
52
53
54 return Object.class;
55 }
56
57 }