1 23 package com.sun.enterprise.tools.verifier.tests.ejb.session.stateless; 24 25 import java.lang.reflect.Method ; 26 27 import com.sun.enterprise.deployment.EjbDescriptor; 28 import com.sun.enterprise.deployment.EjbSessionDescriptor; 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 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 33 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 34 39 public class StatelessCreateReturn extends EjbTest implements EjbCheck { 40 boolean foundAtLeastOneCreate = false; 41 Result result = null; 42 ComponentNameConstructor compName = null; 43 44 53 public Result check(EjbDescriptor descriptor) { 54 55 result = getInitializedResult(); 56 compName = getVerifierContext().getComponentNameConstructor(); 57 58 if (descriptor instanceof EjbSessionDescriptor) { 59 String stateType = ((EjbSessionDescriptor)descriptor).getSessionType(); 60 if (EjbSessionDescriptor.STATELESS.equals(stateType)) { 61 if (descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName()) && 66 descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName()) ) 67 commonToBothInterfaces(descriptor.getRemoteClassName(),descriptor.getHomeClassName(),(EjbSessionDescriptor)descriptor); 68 69 if (descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName())&& 70 descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName())) 71 commonToBothInterfaces(descriptor.getLocalClassName(),descriptor.getLocalHomeClassName() ,(EjbSessionDescriptor)descriptor); 72 73 if(result.getStatus() != Result.FAILED) { 74 addGoodDetails(result, compName); 75 result.passed(smh.getLocalString 76 (getClass().getName() +".passed", 77 "create method is properly defined in the remote/local home interface")); 78 } 79 return result; 80 } 81 } 82 return result; 83 } 84 85 91 92 private void commonToBothInterfaces(String remote, String home, EjbSessionDescriptor descriptor) { 93 try { 94 Class c = Class.forName(home, false, getVerifierContext().getClassLoader()); 95 for (Method methods : c.getDeclaredMethods()) { 96 if (methods.getName().startsWith("create")) { 97 Class methodReturnType = methods.getReturnType(); 98 if (!(methodReturnType.getName().equals(remote))) { 99 addErrorDetails(result, compName); 100 result.addErrorDetails(smh.getLocalString 101 (getClass().getName() + ".debug1", 102 "For Home Interface [ {0} ] Method [ {1} ]", 103 new Object [] {home,methods.getName()})); 104 result.addErrorDetails(smh.getLocalString 105 (getClass().getName() + ".failed", 106 "Error: A Create method was found, but the " + 107 "return type [ {0} ] was not the Remote/Local interface" , 108 new Object [] {methodReturnType.getName()})); 109 110 } 111 } 112 } 113 } catch (ClassNotFoundException e) { 114 Verifier.debug(e); 115 addErrorDetails(result, compName); 116 result.failed(smh.getLocalString 117 (getClass().getName() + ".failedException", 118 "Error: Home/Local Home interface [ {0} ] does not exist or is not loadable within bean [ {1} ]", 119 new Object [] {home, descriptor.getName()})); 120 } 121 } 122 } 123 | Popular Tags |