1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.pluto.portalImpl.portlet.test;
17
18 import java.lang.reflect.InvocationTargetException;
19 import java.lang.reflect.Method;
20 import java.util.Map;
21
22 import javax.portlet.PortletConfig;
23 import javax.portlet.PortletContext;
24 import javax.portlet.PortletRequest;
25 import javax.portlet.PortletResponse;
26 import javax.portlet.PortletSession;
27
28 import org.apache.pluto.portalImpl.portlet.TestConfig;
29
30 /***
31 * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
32 */
33 public abstract class AbstractReflectivePortletTest implements PortletTest {
34
35 private Map initParameters;
36 private TestConfig config;
37
38 public TestResults doTest(PortletConfig config,
39 PortletContext context,
40 PortletRequest req,
41 PortletResponse res) {
42 TestResults results = new TestResults(getTestSuiteName());
43
44 Class klass = getClass();
45 Method[] methods = klass.getDeclaredMethods();
46
47 for(int i = 0; i<methods.length;i++) {
48 if(methods[i].getName().startsWith("check")) {
49 try {
50 results.add(invoke(methods[i], config, context, req, res));
51 }
52 catch(Exception e) {
53 e.printStackTrace();
54 TestResult result = new TestResult();
55 result.setName(methods[i].getName());
56 result.setDesc("Unknown");
57 result.setReturnCode(TestResult.FAILED);
58 result.setResults(e.getMessage());
59 results.add(result);
60 }
61 }
62 }
63 return results;
64 }
65
66 public void init(TestConfig config) {
67 this.initParameters = config.getInitParameters();
68 this.config = config;
69 }
70
71 private TestResult invoke(Method method, PortletConfig config,
72 PortletContext context,
73 PortletRequest req, PortletResponse res)
74 throws IllegalAccessException, InvocationTargetException {
75
76 TestResult result = null;
77 Class[] paramTypes= method.getParameterTypes();
78 Object[] paramValues = new Object[paramTypes.length];
79
80 for(int i=0;i<paramTypes.length;i++) {
81 if(paramTypes[i].equals(PortletContext.class)) {
82 paramValues[i] = context;
83 }
84 if(paramTypes[i].equals(PortletRequest.class)) {
85 paramValues[i] = req;
86 }
87 if(paramTypes[i].equals(PortletResponse.class)) {
88 paramValues[i] = res;
89 }
90 if(paramTypes[i].equals(PortletSession.class)) {
91 paramValues[i] = req.getPortletSession();
92 }
93 if(paramTypes[i].equals(PortletConfig.class)) {
94 paramValues[i] = config;
95 }
96 }
97 result = (TestResult)method.invoke(this, paramValues);
98 return result;
99 }
100
101 public Map getRenderParameters(PortletRequest req) {
102 Map map = new java.util.HashMap();
103 return map;
104 }
105
106 public Map getInitParameters() {
107 return initParameters;
108 }
109
110 public TestConfig getConfig() {
111 return config;
112 }
113 }