1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.ejbfindermethod; 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 47 public class EjbFinderMethodNameCmp extends EjbTest implements EjbCheck { 48 49 50 64 public Result check(EjbDescriptor descriptor) { 65 66 Result result = getInitializedResult(); 67 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 68 69 if (descriptor instanceof EjbEntityDescriptor) { 70 String persistence = 71 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 72 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 73 74 boolean oneFailed = false; 75 int foundAtLeastOne = 0; 76 try { 77 78 Context context = getVerifierContext(); 80 ClassLoader jcl = context.getClassLoader(); 81 82 Class EJBClass = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader()); 84 do { 86 Method [] ejbFinderMethods = EJBClass.getDeclaredMethods(); 87 88 for (int j = 0; j < ejbFinderMethods.length; ++j) { 89 if (ejbFinderMethods[j].getName().startsWith("ejbFind")) { 90 foundAtLeastOne++; 91 if (!oneFailed) { 92 oneFailed = true; 93 } 94 result.addErrorDetails(smh.getLocalString 95 ("tests.componentNameConstructor", 96 "For [ {0} ]", 97 new Object [] {compName.toString()})); 98 result.addErrorDetails(smh.getLocalString 99 (getClass().getName() + ".debug1", 100 "For EJB Class [ {0} ] method [ {1} ]", 101 new Object [] {EJBClass.getName(),ejbFinderMethods[j].getName()})); 102 result.addErrorDetails(smh.getLocalString 103 (getClass().getName() + ".failed", 104 "Error: An improperly named [ {0} ] method was found.", 105 new Object [] {ejbFinderMethods[j].getName()})); 106 } 107 } 108 } while (((EJBClass = EJBClass.getSuperclass()) != null)); 109 110 if (foundAtLeastOne == 0){ 111 result.addGoodDetails(smh.getLocalString 112 ("tests.componentNameConstructor", 113 "For [ {0} ]", 114 new Object [] {compName.toString()})); 115 result.passed(smh.getLocalString 116 (getClass().getName() + ".passed", 117 "[ {0} ] does not declare any ejbFind<METHOD>(...) methods.", 118 new Object [] {descriptor.getEjbClassName()})); 119 } 120 121 } catch (ClassNotFoundException e) { 122 Verifier.debug(e); 123 result.addErrorDetails(smh.getLocalString 124 ("tests.componentNameConstructor", 125 "For [ {0} ]", 126 new Object [] {compName.toString()})); 127 result.failed(smh.getLocalString 128 (getClass().getName() + ".failedException", 129 "Error: EJB Class [ {1} ] does not exist or is not loadable.", 130 new Object [] {descriptor.getEjbClassName()})); 131 oneFailed = true; 132 } 133 134 if (oneFailed) { 135 result.setStatus(result.FAILED); 136 } else { 137 result.setStatus(result.PASSED); 138 } 139 140 return result; 141 142 } else { result.addNaDetails(smh.getLocalString 144 ("tests.componentNameConstructor", 145 "For [ {0} ]", 146 new Object [] {compName.toString()})); 147 result.notApplicable(smh.getLocalString 148 (getClass().getName() + ".notApplicable1", 149 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 150 new Object [] {EjbEntityDescriptor.BEAN_PERSISTENCE,descriptor.getName(),persistence})); 151 return result; 152 } 153 154 } else { 155 result.addNaDetails(smh.getLocalString 156 ("tests.componentNameConstructor", 157 "For [ {0} ]", 158 new Object [] {compName.toString()})); 159 result.notApplicable(smh.getLocalString 160 (getClass().getName() + ".notApplicable", 161 "[ {0} ] expected {1} bean, but called with {2} bean.", 162 new Object [] {getClass(),"Entity","Session"})); 163 return result; 164 } 165 } 166 } 167 | Popular Tags |