1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.findbyprimarykey; 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 44 public class HomeInterfaceFindByPrimaryKeyReturn extends EjbTest implements EjbCheck { 45 Result result = null; 46 ComponentNameConstructor compName = null; 47 48 59 public Result check(EjbDescriptor descriptor) { 60 61 result = getInitializedResult(); 62 compName = getVerifierContext().getComponentNameConstructor(); 63 64 boolean oneFailed = false; 65 if (descriptor instanceof EjbEntityDescriptor) { 66 if(descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName())&& 67 descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName())) 68 oneFailed = commonToBothInterfaces(descriptor.getHomeClassName(), descriptor.getRemoteClassName(),descriptor); 69 if(oneFailed == false) { 70 if(descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName())&& 71 descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName())) 72 oneFailed = commonToBothInterfaces(descriptor.getLocalHomeClassName(),descriptor.getLocalClassName(),descriptor); 73 } 74 if (oneFailed) { 75 result.setStatus(result.FAILED); 76 } else { 77 result.setStatus(result.PASSED); 78 } 79 return result; 80 81 } else { 82 result.addNaDetails(smh.getLocalString 83 ("tests.componentNameConstructor", 84 "For [ {0} ]", 85 new Object [] {compName.toString()})); 86 result.notApplicable(smh.getLocalString 87 (getClass().getName() + ".notApplicable", 88 "[ {0} ] expected {1} bean, but called with {2} bean.", 89 new Object [] {getClass(),"Entity","Session"})); 90 return result; 91 } 92 } 93 94 101 102 103 private boolean commonToBothInterfaces(String home, String remote, EjbDescriptor descriptor) { 104 boolean findByPrimaryKeyMethodFound = false; 105 boolean oneFailed = false; 106 boolean returnValueValid = false; 107 try { 108 Context context = getVerifierContext(); 110 ClassLoader jcl = context.getClassLoader(); 111 Class homeInterfaceClass = Class.forName(home, false, getVerifierContext().getClassLoader()); 112 Method [] ejbFinderMethods = homeInterfaceClass.getDeclaredMethods(); 113 Class rc = Class.forName(remote, false, getVerifierContext().getClassLoader()); 114 115 for (int j = 0; j < ejbFinderMethods.length; ++j) { 116 returnValueValid = false; 118 119 if (ejbFinderMethods[j].getName().equals("findByPrimaryKey")) { 120 if (!findByPrimaryKeyMethodFound) { 125 findByPrimaryKeyMethodFound = true; 126 } 127 Class returnByPrimaryKeyValue = ejbFinderMethods[j].getReturnType(); 128 if (((returnByPrimaryKeyValue.getName().equals(rc.getName())) && 131 (!((returnByPrimaryKeyValue.getName().equals("java.util.Collection")) || 132 (returnByPrimaryKeyValue.getName().equals("java.util.Enumeration")))))) { 133 returnValueValid = true; 134 } 135 136 137 if (findByPrimaryKeyMethodFound && returnValueValid) { 139 result.addGoodDetails(smh.getLocalString 140 ("tests.componentNameConstructor", 141 "For [ {0} ]", 142 new Object [] {compName.toString()})); 143 result.addGoodDetails(smh.getLocalString 144 (getClass().getName() + ".debug1", 145 "For Home interface [ {0} ] Finder Method [ {1} ]", 146 new Object [] {homeInterfaceClass.getName(),ejbFinderMethods[j].getName()})); 147 result.addGoodDetails(smh.getLocalString 148 (getClass().getName() + ".passed", 149 "A findByPrimaryKey method was found with valid return type.")); 150 } else if (findByPrimaryKeyMethodFound && !returnValueValid) { 151 oneFailed = true; 152 result.addErrorDetails(smh.getLocalString 153 ("tests.componentNameConstructor", 154 "For [ {0} ]", 155 new Object [] {compName.toString()})); 156 result.addErrorDetails(smh.getLocalString 157 (getClass().getName() + ".debug1", 158 "For Home interface [ {0} ] Finder Method [ {1} ]", 159 new Object [] {homeInterfaceClass.getName(),ejbFinderMethods[j].getName()})); 160 result.addErrorDetails(smh.getLocalString 161 (getClass().getName() + ".failed", 162 "Error: A findByPrimaryKey method was found, but with invalid return type.")); 163 } 164 break; 166 } 167 } 168 if (!findByPrimaryKeyMethodFound) { 169 oneFailed = true; 170 result.addErrorDetails(smh.getLocalString 171 ("tests.componentNameConstructor", 172 "For [ {0} ]", 173 new Object [] {compName.toString()})); 174 result.addErrorDetails(smh.getLocalString 175 (getClass().getName() + ".debug3", 176 "For Home interface [ {0} ] ", 177 new Object [] {homeInterfaceClass.getName()})); 178 result.addErrorDetails(smh.getLocalString 179 (getClass().getName() + ".failed1", 180 "Error: No findByPrimaryKey method was found in home interface class [ {0} ].", 181 new Object [] {homeInterfaceClass.getName()})); 182 } 183 return oneFailed; 184 } catch (ClassNotFoundException e) { 185 Verifier.debug(e); 186 result.addErrorDetails(smh.getLocalString 187 ("tests.componentNameConstructor", 188 "For [ {0} ]", 189 new Object [] {compName.toString()})); 190 result.failed(smh.getLocalString 191 (getClass().getName() + ".failedException", 192 "Error: Home interface [ {0} ] does not exist or is not loadable.", 193 new Object [] {home})); 194 oneFailed = true; 195 return oneFailed; 196 } 197 198 } 199 } 200 | Popular Tags |