1 23 package com.sun.enterprise.tools.verifier.tests.ejb.session; 24 25 import java.lang.reflect.Field ; 26 import java.lang.reflect.Modifier ; 27 28 import com.sun.enterprise.deployment.EjbDescriptor; 29 import com.sun.enterprise.deployment.EjbSessionDescriptor; 30 import com.sun.enterprise.tools.verifier.Result; 31 import com.sun.enterprise.tools.verifier.Verifier; 32 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 33 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 34 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 35 36 46 public class BeanFieldsTransient extends EjbTest implements EjbCheck { 47 48 49 63 public Result check(EjbDescriptor descriptor) { 64 65 Result result = getInitializedResult(); 66 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 67 68 if (descriptor instanceof EjbSessionDescriptor) { 69 try { 70 Class c = Class.forName(((EjbSessionDescriptor)descriptor).getEjbClassName(), false, getVerifierContext().getClassLoader()); 71 Field [] fields = c.getDeclaredFields(); 73 for (int i = 0; i < fields.length; i++) { 74 int modifiers = fields[i].getModifiers(); 75 if (!Modifier.isTransient(modifiers)) { 76 continue; 77 } else { 78 addWarningDetails(result, compName); 79 result.warning(smh.getLocalString 80 (getClass().getName() + ".warning", 81 "Warning: Field [ {0} ] defined within session bean class [ {1} ] is defined as transient. Session bean fields should not be defined in the session bean class as transient.", 82 new Object [] {fields[i].getName(),((EjbSessionDescriptor)descriptor).getEjbClassName()})); 83 } 84 } 85 } catch (ClassNotFoundException e) { 86 Verifier.debug(e); 87 addErrorDetails(result, compName); 88 result.failed(smh.getLocalString 89 (getClass().getName() + ".failedException", 90 "Error: [ {0} ] class not found.", 91 new Object [] {((EjbSessionDescriptor)descriptor).getEjbClassName()})); 92 } catch (Throwable t) { 93 addWarningDetails(result, compName); 94 result.warning(smh.getLocalString 95 (getClass().getName() + ".warningException", 96 "Warning: [ {0} ] class encountered [ {1} ]. " + 97 "Cannot access fields of class [ {2} ] which is external to [ {3} ].", 98 new Object [] {(descriptor).getEjbClassName(),t.toString(), 99 t.getMessage(), 100 descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri()})); 101 } 102 return result; 103 } 104 105 if(result.getStatus()!=Result.WARNING){ 106 addGoodDetails(result, compName); 107 result.passed(smh.getLocalString 108 (getClass().getName() + ".passed", 109 "The session bean class has defined all fields " + 110 "as non-transient fields.")); 111 112 } 113 return result; 114 } 115 } 116 | Popular Tags |