1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.primarykeyclass; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.lang.reflect.Method ; 27 import com.sun.enterprise.deployment.EjbDescriptor; 28 import com.sun.enterprise.deployment.EjbEntityDescriptor; 29 import com.sun.enterprise.tools.verifier.*; 30 import java.lang.ClassLoader ; 31 import com.sun.enterprise.tools.verifier.tests.*; 32 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 33 34 62 public class PrimaryKeyClassOpt extends EjbTest implements EjbCheck { 63 64 Result result = null; 65 ComponentNameConstructor compName = null; 66 98 public Result check(EjbDescriptor descriptor) { 99 100 result = getInitializedResult(); 101 compName = getVerifierContext().getComponentNameConstructor(); 102 103 boolean oneFailed = false; 104 105 if (descriptor instanceof EjbEntityDescriptor) { 106 String persistence = 107 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 108 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 109 String primkey = 110 ((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(); 111 112 if (primkey.equals("java.lang.Object")) { 115 if(descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName())) { 116 oneFailed = commonToBothInterfaces(descriptor.getHomeClassName(), descriptor); 117 } 118 if(oneFailed == false) { 119 if(descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName())) { 120 oneFailed = commonToBothInterfaces(descriptor.getLocalHomeClassName(), descriptor); 121 } 122 } 123 } else { 124 result.addNaDetails(smh.getLocalString 125 ("tests.componentNameConstructor", 126 "For [ {0} ]", 127 new Object [] {compName.toString()})); 128 result.notApplicable(smh.getLocalString 129 (getClass().getName() + ".notApplicable1", 130 "Primary Key Class is [ {0} ]", 131 new Object [] {primkey})); 132 } 133 134 return result; 135 136 } else if (EjbEntityDescriptor.BEAN_PERSISTENCE.equals(persistence)) { 137 result.addNaDetails(smh.getLocalString 138 ("tests.componentNameConstructor", 139 "For [ {0} ]", 140 new Object [] {compName.toString()})); 141 result.notApplicable(smh.getLocalString 142 (getClass().getName() + ".notApplicable2", 143 "Entity Bean with [ {0} ] managed persistence, primkey mandatory.", 144 new Object [] {persistence})); 145 return result; 146 } 147 else { 148 result.addNaDetails(smh.getLocalString 149 ("tests.componentNameConstructor", 150 "For [ {0} ]", 151 new Object [] {compName.toString()})); 152 result.notApplicable(smh.getLocalString 153 (getClass().getName() + ".notApplicable3", 154 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 155 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence})); 156 return result; 157 } 158 } else { 159 result.addNaDetails(smh.getLocalString 160 ("tests.componentNameConstructor", 161 "For [ {0} ]", 162 new Object [] {compName.toString()})); 163 result.addNaDetails(smh.getLocalString 164 ("tests.componentNameConstructor", 165 "For [ {0} ]", 166 new Object [] {compName.toString()})); 167 result.notApplicable(smh.getLocalString 168 (getClass().getName() + ".notApplicable", 169 "[ {0} ] expected {1} bean, but called with {2} bean.", 170 new Object [] {getClass(),"Entity","Session"})); 171 return result; 172 } 173 } 174 175 181 182 183 private boolean commonToBothInterfaces(String home,EjbDescriptor descriptor) { 184 boolean oneFailed = false; 185 try { 186 Context context = getVerifierContext(); 187 ClassLoader jcl = context.getClassLoader(); 188 Class c = Class.forName(home, false, getVerifierContext().getClassLoader()); 189 Method [] ejbFinderMethods = c.getDeclaredMethods(); 190 boolean paramValid = false; 191 for (int j = 0; j < ejbFinderMethods.length; ++j) { 192 if (ejbFinderMethods[j].getName().equals("findByPrimaryKey")) { 194 Class [] ejbFinderMethodParameterTypes; 195 ejbFinderMethodParameterTypes = ejbFinderMethods[j].getParameterTypes(); 196 for (int k = 0; k < ejbFinderMethodParameterTypes.length; ++k) { 197 if (ejbFinderMethodParameterTypes[k].getName().equals("java.lang.Object")) { 198 paramValid = true; 199 break; 200 } 201 } 202 } 203 } 204 205 if (paramValid) { 206 result.addGoodDetails(smh.getLocalString 207 ("tests.componentNameConstructor", 208 "For [ {0} ]", 209 new Object [] {compName.toString()})); 210 result.passed(smh.getLocalString 211 (getClass().getName() + ".passed", 212 "findByPrimaryKey method properly defines method parameter [ {0} ]", 213 new Object [] {"java.lang.Object"})); 214 } else { 215 result.addErrorDetails(smh.getLocalString 216 ("tests.componentNameConstructor", 217 "For [ {0} ]", 218 new Object [] {compName.toString()})); 219 result.failed(smh.getLocalString 220 (getClass().getName() + ".failed", 221 "Error: findByPrimaryKey method does not properly define method parameter [ {0} ]", 222 new Object [] {"java.lang.Object"})); 223 } 224 return oneFailed; 225 } catch (Exception e) { 226 Verifier.debug(e); 227 result.addErrorDetails(smh.getLocalString 228 ("tests.componentNameConstructor", 229 "For [ {0} ]", 230 new Object [] {compName.toString()})); 231 result.failed(smh.getLocalString 232 (getClass().getName() + ".failedException", 233 "Error: Loading Home interface class [ {0} ]", 234 new Object [] {home})); 235 return oneFailed; 236 } 237 } 238 } 239 | Popular Tags |