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 com.sun.enterprise.deployment.*; 27 import java.lang.ClassLoader ; 28 import com.sun.enterprise.tools.verifier.tests.*; 29 import java.util.*; 30 import java.lang.reflect.*; 31 import com.sun.enterprise.tools.verifier.*; 32 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 33 import com.sun.enterprise.tools.verifier.tests.ejb.EjbUtils; 34 35 44 public class HomeInterfaceFindMethodHasQuery extends EjbTest implements EjbCheck { 45 Result result = null; 46 ComponentNameConstructor compName = null; 47 private final static String FINDBYPRIMARYKEY = "findByPrimaryKey"; 48 49 50 63 public Result check(EjbDescriptor descriptor) { 64 65 result = getInitializedResult(); 66 compName = getVerifierContext().getComponentNameConstructor(); 67 boolean oneFailed = false; 68 if (descriptor instanceof EjbEntityDescriptor) { 69 String persistence = 70 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 71 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 72 if (((EjbCMPEntityDescriptor) descriptor).getCMPVersion()==EjbCMPEntityDescriptor.CMP_2_x) { 73 if(descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName())) { 74 oneFailed = commonToBothInterfaces(descriptor.getHomeClassName(),descriptor, MethodDescriptor.EJB_HOME); 75 } 76 if(oneFailed == false) { 77 if(descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName())) { 78 oneFailed = commonToBothInterfaces(descriptor.getLocalHomeClassName(),descriptor, MethodDescriptor.EJB_LOCALHOME); 79 } 80 } 81 if (oneFailed) { 82 result.setStatus(result.FAILED); 83 } else { 84 result.setStatus(result.PASSED); 85 } 86 return result; 87 } 88 } 89 result.addNaDetails(smh.getLocalString 91 ("tests.componentNameConstructor", 92 "For [ {0} ]", 93 new Object [] {compName.toString()})); 94 result.notApplicable(smh.getLocalString 95 (getClass().getName() + ".notApplicable2", 96 "Expected [ {0} {1} ] managed persistence, but [ {2} ] bean has [ {3} ] managed persistence.", 97 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE, new Integer (EjbCMPEntityDescriptor.CMP_2_x), descriptor.getName(),persistence})); 98 return result; 99 100 } else { 101 result.addNaDetails(smh.getLocalString 102 ("tests.componentNameConstructor", 103 "For [ {0} ]", 104 new Object [] {compName.toString()})); 105 result.notApplicable(smh.getLocalString 106 (getClass().getName() + ".notApplicable", 107 "[ {0} ] expected {1} bean, but called with {2} bean.", 108 new Object [] {getClass(),"Entity","Session"})); 109 return result; 110 } 111 } 112 113 120 121 private boolean commonToBothInterfaces(String home, EjbDescriptor descriptor, String methodIntf) { 122 boolean oneFailed = false; 123 try { 126 PersistenceDescriptor pers = ((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor(); 127 128 Context context = getVerifierContext(); 129 ClassLoader jcl = context.getClassLoader(); 130 Class c = Class.forName(home, false, getVerifierContext().getClassLoader()); 131 Method methods[] = c.getDeclaredMethods(); 132 133 for (int i=0; i< methods.length; i++) { 134 if (methods[i].getName().startsWith("find") && !(methods[i].getName()).equals(FINDBYPRIMARYKEY)) { 135 QueryDescriptor query = pers.getQueryFor(new MethodDescriptor(methods[i], methodIntf)); 136 if (query != null) { 137 if (query.getQuery() != null && !"".equals(query.getQuery())) { 138 result.addGoodDetails(smh.getLocalString 139 ("tests.componentNameConstructor", 140 "For [ {0} ]", 141 new Object [] {compName.toString()})); 142 result.addGoodDetails(smh.getLocalString 143 (getClass().getName() + ".debug1", 144 "For Home Interface [ {0} ] Method [ {1} ]", 145 new Object [] {c.getName(),methods[i].getName()})); 146 result.addGoodDetails(smh.getLocalString 147 (getClass().getName() + ".passed", 148 "The [ {0} ] method has a query assigned to it", 149 new Object [] {methods[i].getName()})); 150 } else { 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} ] Method [ {1} ]", 159 new Object [] {c.getName(),methods[i].getName()})); 160 result.addErrorDetails(smh.getLocalString 161 (getClass().getName() + ".failed", 162 "Error: A [ {0} ] method was found, but did not have a query element assigned", 163 new Object [] {methods[i].getName()})); 164 } } 166 else { 167 oneFailed = true; 168 result.addErrorDetails(smh.getLocalString 169 ("tests.componentNameConstructor", 170 "For [ {0} ]", 171 new Object [] {compName.toString()})); 172 result.addErrorDetails(smh.getLocalString 173 (getClass().getName() + ".debug1", 174 "For Home Interface [ {0} ] Method [ {1} ]", 175 new Object [] {c.getName(),methods[i].getName()})); 176 result.addErrorDetails(smh.getLocalString 177 (getClass().getName() + ".failed", 178 "Error: A [ {0} ] method was found, but did not have a query element assigned", 179 new Object [] {methods[i].getName()})); 180 181 } 182 } 184 } return oneFailed; 186 187 } catch (ClassNotFoundException e) { 188 Verifier.debug(e); 189 result.addErrorDetails(smh.getLocalString 190 ("tests.componentNameConstructor", 191 "For [ {0} ]", 192 new Object [] {compName.toString()})); 193 result.failed(smh.getLocalString 194 (getClass().getName() + ".failedException", 195 "Error: Home interface [ {0} ] does not exist or is not loadable within bean [ {1} ]", 196 new Object [] {home, descriptor.getName()})); 197 return oneFailed; 198 } 199 200 } 201 } 202 | Popular Tags |