1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.findermethod; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.lang.reflect.*; 27 import java.util.*; 28 import com.sun.enterprise.deployment.EjbEntityDescriptor; 29 import com.sun.enterprise.deployment.EjbDescriptor; 30 import com.sun.enterprise.deployment.MethodDescriptor; 31 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 32 import com.sun.enterprise.tools.verifier.*; 33 import java.lang.ClassLoader ; 34 import com.sun.enterprise.tools.verifier.tests.*; 35 36 49 public class HomeInterfaceFindMethodReturn extends EjbTest implements EjbCheck { 50 51 Result result = null; 52 ComponentNameConstructor compName = null; 53 69 public Result check(EjbDescriptor descriptor) { 70 71 result = getInitializedResult(); 72 compName = getVerifierContext().getComponentNameConstructor(); 73 74 if (descriptor instanceof EjbEntityDescriptor) { 75 String persistence = 76 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 77 if (EjbEntityDescriptor.BEAN_PERSISTENCE.equals(persistence)) { 78 boolean oneFailed = false; 79 if(descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName()) && 83 descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName())) { 84 oneFailed = commonToBothInterfaces(descriptor.getHomeClassName(),descriptor.getRemoteClassName(),descriptor); 85 } 86 if(oneFailed == false) { 87 if(descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName()) && 88 descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName())) { 89 oneFailed = commonToBothInterfaces(descriptor.getLocalHomeClassName(),descriptor.getLocalClassName(),descriptor); 90 } 91 } 92 93 if (oneFailed) { 94 result.setStatus(result.FAILED); 95 } else { 96 result.setStatus(result.PASSED); 97 } 98 return result; 99 } else { result.addNaDetails(smh.getLocalString 101 ("tests.componentNameConstructor", 102 "For [ {0} ]", 103 new Object [] {compName.toString()})); 104 result.notApplicable(smh.getLocalString 105 (getClass().getName() + ".notApplicable2", 106 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 107 new Object [] {EjbEntityDescriptor.BEAN_PERSISTENCE,descriptor.getName(),persistence})); 108 return result; 109 } 110 } else { 111 result.addNaDetails(smh.getLocalString 112 ("tests.componentNameConstructor", 113 "For [ {0} ]", 114 new Object [] {compName.toString()})); 115 result.notApplicable(smh.getLocalString 116 (getClass().getName() + ".notApplicable", 117 "[ {0} ] expected {1} bean, but called with {2} bean.", 118 new Object [] {getClass(),"Entity","Session"})); 119 return result; 120 } 121 } 122 123 130 131 private boolean commonToBothInterfaces(String home, String remote, EjbDescriptor descriptor) { 132 boolean oneFailed = false; 133 try { 134 Context context = getVerifierContext(); 135 ClassLoader jcl = context.getClassLoader(); 136 Class c = Class.forName(home, false, getVerifierContext().getClassLoader()); 137 Class rc = Class.forName(remote, false, getVerifierContext().getClassLoader()); 138 Method methods[] = c.getDeclaredMethods(); 139 Class methodReturnType; 140 boolean validReturn = false; 141 142 for (int i=0; i< methods.length; i++) { 143 validReturn = false; 145 if (methods[i].getName().startsWith("find")) { 146 methodReturnType = methods[i].getReturnType(); 149 if ((methodReturnType.getName().equals(rc.getName())) || 150 (methodReturnType.getName().equals("java.util.Collection")) || 151 (methodReturnType.getName().equals("java.util.Enumeration"))) { 152 validReturn = true; 154 } else { 155 validReturn = false; 156 } 158 if (validReturn) { 162 result.addGoodDetails(smh.getLocalString 163 ("tests.componentNameConstructor", 164 "For [ {0} ]", 165 new Object [] {compName.toString()})); 166 result.addGoodDetails(smh.getLocalString 167 (getClass().getName() + ".debug1", 168 "For Home Interface [ {0} ] Method [ {1} ]", 169 new Object [] {c.getName(),methods[i].getName()})); 170 result.addGoodDetails(smh.getLocalString 171 (getClass().getName() + ".passed", 172 "The find<METHOD> which returns remote interface or a collection there of was found.")); 173 } else if (!validReturn) { 174 oneFailed = true; 175 result.addErrorDetails(smh.getLocalString 176 ("tests.componentNameConstructor", 177 "For [ {0} ]", 178 new Object [] {compName.toString()})); 179 result.addErrorDetails(smh.getLocalString 180 (getClass().getName() + ".debug1", 181 "For Home Interface [ {0} ] Method [ {1} ]", 182 new Object [] {c.getName(),methods[i].getName()})); 183 result.addErrorDetails(smh.getLocalString 184 (getClass().getName() + ".failed", 185 "Error: A find<METHOD> was found, but the return type [ {0} ] was not the Remote interface [ {1} ] or a collection there of." , 186 new Object [] {methodReturnType.getName(),rc.getName()})); 187 } } } return oneFailed; 191 192 } catch (ClassNotFoundException e) { 193 Verifier.debug(e); 194 result.addErrorDetails(smh.getLocalString 195 ("tests.componentNameConstructor", 196 "For [ {0} ]", 197 new Object [] {compName.toString()})); 198 result.failed(smh.getLocalString 199 (getClass().getName() + ".failedException", 200 "Error: Home interface [ {0} ] or Remote interface [ {1} ] does not exist or is not loadable within bean [ {2} ]", 201 new Object [] {home,remote, descriptor.getName()})); 202 return oneFailed; 203 } 204 } 205 } 206 | Popular Tags |