1 23 package com.sun.enterprise.tools.verifier.tests.ejb.homeintf; 24 25 import com.sun.enterprise.deployment.EjbDescriptor; 26 import com.sun.enterprise.tools.verifier.Result; 27 import com.sun.enterprise.tools.verifier.Verifier; 28 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 29 30 import java.lang.ClassLoader ; 31 import java.lang.reflect.Method ; 32 33 40 abstract public class HomeMethodNameMatch extends HomeMethodTest { 41 42 51 52 protected void runIndividualHomeMethodTest(Method method, EjbDescriptor descriptor, Result result) { 53 54 Method m; 55 ComponentNameConstructor compName = null; 56 try { 57 compName = getVerifierContext().getComponentNameConstructor(); 58 ClassLoader jcl = getVerifierContext().getClassLoader(); 60 Class ejbClass = Class.forName(descriptor.getEjbClassName(), false, jcl); 61 String methodName = method.getName().replaceFirst(method.getName().substring(0,1), 63 method.getName().substring(0,1).toUpperCase()); 64 String expectedMethodName = "ejbHome" + methodName; 65 do { 66 m = getMethod(ejbClass, expectedMethodName, method.getParameterTypes()); 68 } while (((ejbClass = ejbClass.getSuperclass()) != null) && (m==null)); 69 70 if (m != null) { 71 addGoodDetails(result, compName); 74 result.passed(smh.getLocalString 75 (getClass().getName() + ".passed", 76 "For method [ {1} ] in Home Interface [ {0} ], a ejbHome<METHOD> name matching method was found", 77 new Object [] {method.getDeclaringClass().getName(), method.getName()})); 78 } else { 79 addErrorDetails(result, compName); 80 result.failed(smh.getLocalString 81 (getClass().getName() + ".failed", 82 "Error : For method [ {1} ] defined in Home Interface [ {0} ], no ejbHome<METHOD> name matching method was found" , 83 new Object [] {method.getDeclaringClass().getName(), method.getName()})); 84 } 85 } catch (ClassNotFoundException e) { 86 Verifier.debug(e); 87 addErrorDetails(result, compName); 88 result.failed(smh.getLocalString( 89 getClass().getName() + ".failedException", 90 "Error: Home interface [ {0} ] does not exist or is not loadable within bean [ {1} ]", 91 new Object [] {getClassName(descriptor),descriptor.getName()})); 92 } 93 } 94 95 private String getClassName(EjbDescriptor descriptor) { 96 return getHomeInterfaceName(descriptor); 97 } 98 } 99 | Popular Tags |