1 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 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 } 114 | Popular Tags |