1 23 package com.sun.enterprise.tools.verifier.tests.ejb.intf; 24 25 import java.util.Arrays ; 26 import java.util.logging.Level ; 27 import java.lang.reflect.Method ; 28 import com.sun.enterprise.deployment.EjbDescriptor; 29 import com.sun.enterprise.tools.verifier.Result; 30 import com.sun.enterprise.tools.verifier.Verifier; 31 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 32 33 41 abstract public class InterfaceMatchMethodArgs extends InterfaceMethodTest { 42 52 protected boolean runIndividualMethodTest(EjbDescriptor descriptor, 53 Method method, 54 Result result) { 55 56 boolean businessMethodFound, signaturesMatch; 57 ComponentNameConstructor compName = null; 58 59 try { 60 compName = getVerifierContext().getComponentNameConstructor(); 61 ClassLoader jcl = getVerifierContext().getClassLoader(); 63 Class EJBClass = Class.forName(descriptor.getEjbClassName(), false, jcl); 64 Class [] methodParameterTypes = method.getParameterTypes(); 65 66 do { 68 businessMethodFound = false; 70 signaturesMatch = false; 71 for (Method businessMethod : EJBClass.getDeclaredMethods()) { 72 if (method.getName().equals(businessMethod.getName())) { 73 businessMethodFound = true; 74 Class [] businessMethodParameterTypes = businessMethod.getParameterTypes(); 76 if (Arrays.equals(methodParameterTypes,businessMethodParameterTypes)) { 77 signaturesMatch = true; 78 break; 79 } } else { 81 continue; 82 83 } } 86 if (businessMethodFound && signaturesMatch) { 89 addGoodDetails(result, compName); 90 result.addGoodDetails(smh.getLocalString 91 (getClass().getName() + ".passed", 92 "The corresponding business method with a matching " + 93 "parameters was found.")); 94 return true; 95 } else if (businessMethodFound && !signaturesMatch) { 96 logger.log(Level.FINE, getClass().getName() + ".debug1", 97 new Object [] {method.getDeclaringClass().getName(),method.getName()}); 98 logger.log(Level.FINE, getClass().getName() + ".debug3", 99 new Object [] {method.getName()}); 100 logger.log(Level.FINE, getClass().getName() + ".debug2"); 101 } 102 103 } while (((EJBClass = EJBClass.getSuperclass()) != null) && 104 (!(businessMethodFound && signaturesMatch))); 105 106 107 if (!signaturesMatch) { 108 addErrorDetails(result, compName); 109 result.addErrorDetails(smh.getLocalString 110 (getClass().getName() + ".failed", 111 "Error: No corresponding business method with matching " + 112 "arguments was found for method [ {0} ].", 113 new Object [] {method.getName()})); 114 } 115 } catch (ClassNotFoundException e) { 116 Verifier.debug(e); 117 addErrorDetails(result, compName); 118 result.failed(smh.getLocalString 119 (getClass().getName() + ".failedException", 120 "Error: "+getInterfaceType()+" interface [ {0} ] does not " + 121 "exist or is not loadable within bean [ {1} ]", 122 new Object [] {getClassName(descriptor),descriptor.getName()})); 123 } 124 return false; 125 } 126 127 private String getClassName(EjbDescriptor descriptor) { 128 return getInterfaceName(descriptor); 129 } 130 } 131 | Popular Tags |