1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.createmethod; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import com.sun.enterprise.deployment.EjbDescriptor; 27 import com.sun.enterprise.deployment.EjbEntityDescriptor; 28 import java.lang.ClassLoader ; 29 import com.sun.enterprise.tools.verifier.tests.*; 30 import java.util.logging.Level ; 31 import java.lang.reflect.*; 32 import com.sun.enterprise.tools.verifier.*; 33 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 34 import com.sun.enterprise.tools.verifier.tests.ejb.EjbUtils; 35 36 47 public class HomeInterfaceCreateMethodExceptionRemote extends EjbTest implements EjbCheck { 48 49 63 public Result check(EjbDescriptor descriptor) { 64 65 Result result = getInitializedResult(); 66 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 67 68 if (descriptor instanceof EjbEntityDescriptor) { 69 boolean oneFailed = false; 70 boolean foundAtLeastOneRemote = false; 71 if(descriptor.getHomeClassName() == null || "".equals(descriptor.getHomeClassName())) { 74 result.addNaDetails(smh.getLocalString 75 ("tests.componentNameConstructor", 76 "For [ {0} ]", 77 new Object [] {compName.toString()})); 78 result.addNaDetails(smh.getLocalString 79 (getClass().getName() + ".debug3", 80 "No Remote Home Interface for this ejb", 81 new Object [] {})); 82 return result; 83 } 84 try { 85 Class c = Class.forName(descriptor.getHomeClassName(), false, getVerifierContext().getClassLoader()); 86 Method methods[] = c.getDeclaredMethods(); 87 Class [] methodExceptionTypes; 88 boolean throwsRemoteException = false; 89 90 for (int i=0; i< methods.length; i++) { 91 throwsRemoteException = false; 93 if (methods[i].getName().startsWith("create")) { 94 if (!foundAtLeastOneRemote) { 99 foundAtLeastOneRemote = true; 100 } 101 102 methodExceptionTypes = methods[i].getExceptionTypes(); 103 104 if (EjbUtils.isValidRemoteException(methodExceptionTypes)) { 106 throwsRemoteException = true; 107 } 108 109 logger.log(Level.FINE, " Interface " + c.getName() + " method " + methods[i].getName()); 113 if (throwsRemoteException ) { 114 result.addGoodDetails(smh.getLocalString 115 ("tests.componentNameConstructor", 116 "For [ {0} ]", 117 new Object [] {compName.toString()})); 118 result.addGoodDetails(smh.getLocalString 119 (getClass().getName() + ".debug1", 120 "For Home Interface [ {0} ] Method [ {1} ]", 121 new Object [] {c.getName(),methods[i].getName()})); 122 result.addGoodDetails(smh.getLocalString 123 (getClass().getName() + ".passed", 124 "The create method which must throw java.rmi.RemoteException was found.")); 125 } else if (!throwsRemoteException) { 126 oneFailed = true; 127 result.addErrorDetails(smh.getLocalString 128 (getClass().getName() + ".debug1", 129 "For Home Interface [ {0} ] Method [ {1} ]", 130 new Object [] {c.getName(),methods[i].getName()})); 131 result.addErrorDetails(smh.getLocalString 132 (getClass().getName() + ".failed", 133 "Error: A create method was found, but did not throw java.rmi.RemoteException." )); 134 } } } 138 139 } catch (ClassNotFoundException e) { 140 Verifier.debug(e); 141 result.addErrorDetails(smh.getLocalString 142 ("tests.componentNameConstructor", 143 "For [ {0} ]", 144 new Object [] {compName.toString()})); 145 result.failed(smh.getLocalString 146 (getClass().getName() + ".failedException", 147 "Error: Home interface [ {0} ] does not exist or is not loadable within bean [ {1} ]", 148 new Object [] {descriptor.getHomeClassName(), descriptor.getName()})); 149 } 150 151 if (!foundAtLeastOneRemote) { 152 result.addGoodDetails(smh.getLocalString 153 ("tests.componentNameConstructor", 154 "For [ {0} ]", 155 new Object [] {compName.toString()})); 156 result.addGoodDetails(smh.getLocalString 157 (getClass().getName() + ".debug3", 158 "For Home Interface [ {0} ]", 159 new Object [] {descriptor.getHomeClassName()})); 160 result.addGoodDetails(smh.getLocalString 161 (getClass().getName() + ".notApplicable1", 162 "No create method was found, test not applicable." )); 163 result.setStatus(result.PASSED); 164 } else { 165 if (oneFailed) { 166 result.setStatus(result.FAILED); 167 } else { 168 result.setStatus(result.PASSED); 169 } 170 } 171 172 return result; 173 174 } else { 175 result.addNaDetails(smh.getLocalString 176 ("tests.componentNameConstructor", 177 "For [ {0} ]", 178 new Object [] {compName.toString()})); 179 result.notApplicable(smh.getLocalString 180 (getClass().getName() + ".notApplicable", 181 "[ {0} ] expected {1} bean, but called with {2} bean.", 182 new Object [] {getClass(),"Entity","Session"})); 183 return result; 184 } 185 } 186 } 187 | Popular Tags |