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 PrimaryKeyClassOptReturn extends EjbTest implements EjbCheck { 63 64 65 97 public Result check(EjbDescriptor descriptor) { 98 99 Result result = getInitializedResult(); 100 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 101 102 if (descriptor instanceof EjbEntityDescriptor) { 103 String persistence = 104 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 105 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 106 String primkey = 107 ((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(); 108 109 if (primkey.equals("java.lang.Object")) { 112 try { 113 Context context = getVerifierContext(); 114 ClassLoader jcl = context.getClassLoader(); 115 Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader()); 116 boolean returnsJLO = false; 117 do { 119 Method [] methods = c.getDeclaredMethods(); 120 returnsJLO = false; 121 for (int j = 0; j < methods.length; ++j) { 122 if (methods[j].getName().equals("ejbCreate")) { 123 Class rt = methods[j].getReturnType(); 125 if (rt.getName().equals("java.lang.Object")) { 126 returnsJLO = true; 127 break; 128 } 129 } 130 } 131 } while (((c = c.getSuperclass()) != null) && (!returnsJLO)); 132 133 if (returnsJLO) { 134 result.addGoodDetails(smh.getLocalString 135 ("tests.componentNameConstructor", 136 "For [ {0} ]", 137 new Object [] {compName.toString()})); 138 result.passed(smh.getLocalString 139 (getClass().getName() + ".passed", 140 "ejbCreate() method properly defines method return type [ {0} ]", 141 new Object [] {"java.lang.Object"})); 142 } else { 143 result.addErrorDetails(smh.getLocalString 144 ("tests.componentNameConstructor", 145 "For [ {0} ]", 146 new Object [] {compName.toString()})); 147 result.failed(smh.getLocalString 148 (getClass().getName() + ".failed", 149 "ejbCreate() method does not properly define method return type [ {0} ]", 150 new Object [] {"java.lang.Object"})); 151 } 152 } catch (Exception e) { 153 Verifier.debug(e); 154 result.addErrorDetails(smh.getLocalString 155 ("tests.componentNameConstructor", 156 "For [ {0} ]", 157 new Object [] {compName.toString()})); 158 result.failed(smh.getLocalString 159 (getClass().getName() + ".failedException", 160 "Error: Loading bean class [ {0} ]", 161 new Object [] {descriptor.getEjbClassName()})); 162 return result; 163 } 164 } else { 165 result.addNaDetails(smh.getLocalString 166 ("tests.componentNameConstructor", 167 "For [ {0} ]", 168 new Object [] {compName.toString()})); 169 result.notApplicable(smh.getLocalString 170 (getClass().getName() + ".notApplicable1", 171 "Primary Key Class is [ {0} ]", 172 new Object [] {primkey})); 173 } 174 175 return result; 176 177 } else if (EjbEntityDescriptor.BEAN_PERSISTENCE.equals(persistence)) { 178 result.addNaDetails(smh.getLocalString 179 ("tests.componentNameConstructor", 180 "For [ {0} ]", 181 new Object [] {compName.toString()})); 182 result.notApplicable(smh.getLocalString 183 (getClass().getName() + ".notApplicable2", 184 "Entity bean with [ {0} ] managed persistence, primkey mandatory.", 185 new Object [] {persistence})); 186 return result; 187 } 188 else { 189 result.addNaDetails(smh.getLocalString 190 ("tests.componentNameConstructor", 191 "For [ {0} ]", 192 new Object [] {compName.toString()})); 193 result.notApplicable(smh.getLocalString 194 (getClass().getName() + ".notApplicable3", 195 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 196 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence})); 197 return result; 198 } 199 } else { 200 result.addNaDetails(smh.getLocalString 201 ("tests.componentNameConstructor", 202 "For [ {0} ]", 203 new Object [] {compName.toString()})); 204 result.notApplicable(smh.getLocalString 205 (getClass().getName() + ".notApplicable", 206 "[ {0} ] expected {1} bean, but called with {2} bean.", 207 new Object [] {getClass(),"Entity","Session"})); 208 return result; 209 } 210 } 211 } 212 | Popular Tags |