1 23 24 package com.sun.enterprise.tools.verifier.tests.ejb.ejb30; 25 26 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 27 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 28 import com.sun.enterprise.tools.verifier.Result; 29 import com.sun.enterprise.deployment.EjbDescriptor; 30 import com.sun.enterprise.deployment.EjbSessionDescriptor; 31 import com.sun.enterprise.deployment.LifecycleCallbackDescriptor; 32 import com.sun.enterprise.deployment.EjbInterceptor; 33 34 import java.util.Set ; 35 import java.util.HashSet ; 36 import java.lang.reflect.Method ; 37 38 46 public class CallbackMethodException extends EjbTest { 47 48 public Result check(EjbDescriptor descriptor) { 49 Result result = getInitializedResult(); 50 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 51 ClassLoader cl = getVerifierContext().getClassLoader(); 52 53 Set <LifecycleCallbackDescriptor> callbackDescs = 54 new HashSet <LifecycleCallbackDescriptor>(); 55 56 for (EjbInterceptor interceptor : descriptor.getInterceptorClasses()) { 57 callbackDescs.addAll(interceptor.getPostConstructDescriptors()); 58 callbackDescs.addAll(interceptor.getPreDestroyDescriptors()); 59 callbackDescs.addAll(interceptor.getCallbackDescriptors( 60 LifecycleCallbackDescriptor.CallbackType.PRE_PASSIVATE)); 61 callbackDescs.addAll(interceptor.getCallbackDescriptors( 62 LifecycleCallbackDescriptor.CallbackType.POST_ACTIVATE)); 63 } 64 65 if(descriptor.hasPostConstructMethod()) 66 callbackDescs.addAll(descriptor.getPostConstructDescriptors()); 67 if(descriptor.hasPreDestroyMethod()) 68 callbackDescs.addAll(descriptor.getPreDestroyDescriptors()); 69 70 if(descriptor instanceof EjbSessionDescriptor) { 72 EjbSessionDescriptor ejbSessionDescriptor = ((EjbSessionDescriptor)descriptor); 73 if(ejbSessionDescriptor.hasPostActivateMethod()) 74 callbackDescs.addAll(ejbSessionDescriptor.getPostActivateDescriptors()); 75 if(ejbSessionDescriptor.hasPrePassivateMethod()) 76 callbackDescs.addAll(ejbSessionDescriptor.getPrePassivateDescriptors()); 77 } 78 79 for (LifecycleCallbackDescriptor callbackDesc : callbackDescs) { 80 try { 81 Method method = callbackDesc.getLifecycleCallbackMethodObject(cl); 82 Class [] excepClasses = method.getExceptionTypes(); 83 for (Class exception : excepClasses) { 84 if(!(RuntimeException .class.isAssignableFrom(exception) || 85 java.rmi.RemoteException .class.isAssignableFrom(exception))) { 86 addErrorDetails(result, compName); 87 result.failed(smh.getLocalString 88 (getClass().getName() + ".failed", 89 "Method [ {0} ] throws an application exception.", 90 new Object [] {method})); 91 } 92 } 93 } catch (Exception e) {} } 95 96 if(result.getStatus()!=Result.FAILED) { 97 addGoodDetails(result, compName); 98 result.passed(smh.getLocalString 99 (getClass().getName() + ".passed", 100 "Valid Callback methods.")); 101 } 102 103 return result; 104 } 105 } 106 | Popular Tags |