1 23 package com.sun.enterprise.tools.verifier.tests.ejb.businessmethod; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.lang.reflect.*; 27 import java.util.Set ; 28 29 import com.sun.enterprise.deployment.*; 30 import com.sun.enterprise.tools.verifier.*; 31 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 32 import com.sun.enterprise.tools.verifier.tests.ejb.RmiIIOPUtils; 33 import com.sun.enterprise.tools.verifier.tests.*; 34 35 36 43 public class BusinessMethodRmiIIOPReturn extends EjbTest implements EjbCheck { 44 45 Result result = null; 46 ComponentNameConstructor compName = null; 47 58 public Result check(EjbDescriptor descriptor) { 59 60 result = getInitializedResult(); 61 compName = getVerifierContext().getComponentNameConstructor(); 62 63 if ((descriptor instanceof EjbSessionDescriptor) || 64 (descriptor instanceof EjbEntityDescriptor)) { 65 if(descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName())) 66 commonToBothInterfaces(descriptor.getRemoteClassName(),descriptor); 67 68 Set <String > remoteInterfaces = descriptor.getRemoteBusinessClassNames(); 69 for (String remoteIntf : remoteInterfaces) 70 commonToBothInterfaces(remoteIntf, descriptor); 71 } 72 if(result.getStatus() != Result.FAILED) { 73 addGoodDetails(result, compName); 74 result.passed(smh.getLocalString 75 (getClass().getName() + ".passed", 76 "Proper declaration of business method(s) found.")); 77 } 78 return result; 79 } 80 81 private void commonToBothInterfaces(String intf, EjbDescriptor descriptor) { 82 try { 83 Class intfClass = Class.forName(intf, false, getVerifierContext().getClassLoader()); 84 85 for (Method remoteMethod : intfClass.getMethods()) { 86 87 if (remoteMethod.getDeclaringClass().getName().equals("javax.ejb.EJBObject")) 89 continue; 90 Class beanClass = Class.forName(descriptor.getEjbClassName(), 91 false, 92 getVerifierContext().getClassLoader()); 93 for (Method method : beanClass.getMethods()) { 94 95 if (method.getName().equals(remoteMethod.getName()) && 96 !RmiIIOPUtils.isValidRmiIIOPReturnType(method.getReturnType())) { 97 addErrorDetails(result, compName); 101 result.failed(smh.getLocalString 102 (getClass().getName() + ".failed", 103 "Error: business method [ {0} ] was found, but " + 104 "business method has invalid return type [ {1} ]. Business " + 105 "method return type must be a valid type for RMI-IIOP.", 106 new Object [] {method.getName(), method.getReturnType()})); 107 } 108 } 109 } 110 111 } catch (ClassNotFoundException e) { 112 Verifier.debug(e); 113 addErrorDetails(result, compName); 114 result.failed(smh.getLocalString 115 (getClass().getName() + ".failedException", 116 "Error: Remote interface [ {0} ] or bean class [ {1} ] does " + 117 "not exist or is not loadable within bean [ {2} ].", 118 new Object [] {descriptor.getRemoteClassName(), 119 descriptor.getEjbClassName(), 120 descriptor.getName()})); 121 } 122 123 } 124 } 125 | Popular Tags |