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  }