1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.util.logging.Level ; 27 28 import com.sun.enterprise.tools.verifier.tests.*; 29 import com.sun.enterprise.deployment.EjbDescriptor; 30 import com.sun.enterprise.deployment.EjbEntityDescriptor; 31 import com.sun.enterprise.tools.verifier.*; 32 import com.sun.enterprise.tools.verifier.tests.ejb.*; 33 34 39 public class EntityBeanExtendsSerializableClass extends EjbTest implements EjbCheck { 40 41 49 public Result check(EjbDescriptor descriptor) { 50 Result result = getInitializedResult(); 51 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 52 53 if (descriptor instanceof EjbEntityDescriptor) { 54 try { 55 Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader()); 56 57 boolean validBean = true; 58 Class superClass = c.getSuperclass(); 59 if (validBean == true) { 60 if(!(superClass.getName()).equals("java.lang.Object")) { 62 if (!isValidSerializableType(superClass) && 63 !isTimedObject(superClass)) { 64 validBean = false; 65 result.addWarningDetails(smh.getLocalString 66 ("tests.componentNameConstructor", 67 "For [ {0} ]", 68 new Object [] {compName.toString()})); 69 result.addWarningDetails(smh.getLocalString 70 (getClass().getName() + ".failed1", 71 "[ {0} ] extends class [ {1} ] which is not serializable. ", 72 new Object [] {descriptor.getEjbClassName(),superClass.getName()})); 73 result.setStatus(Result.WARNING); 74 return result; 75 } else { 76 result.addGoodDetails(smh.getLocalString 77 ("tests.componentNameConstructor", 78 "For [ {0} ]", 79 new Object [] {compName.toString()})); 80 result.addGoodDetails(smh.getLocalString 81 (getClass().getName() + ".passed1", 82 "Bean [ {0} ] extends class [ {1} ] which is serializable. ", 83 new Object [] {descriptor.getEjbClassName(), superClass.getName()})); 84 do { 85 Class [] interfaces = c.getInterfaces(); 86 87 for (int i = 0; i < interfaces.length; i++) { 88 89 logger.log(Level.FINE, getClass().getName() + ".debug1", 90 new Object [] {interfaces[i].getName()}); 91 92 if (!isValidSerializableType(interfaces[i]) 93 && !isTimedObject(interfaces[i])) { 94 validBean = false; 95 result.addWarningDetails(smh.getLocalString 96 ("tests.componentNameConstructor", 97 "For [ {0} ]", 98 new Object [] {compName.toString()})); 99 result.addWarningDetails(smh.getLocalString 100 (getClass().getName() + ".failed", 101 "[ {0} ] implements interface [ {1} ] which is not serializable. ", 102 new Object [] {descriptor.getEjbClassName(),interfaces[i].getName()})); 103 result.setStatus(Result.WARNING); 104 break; 105 } 106 } 107 } while ((((c=c.getSuperclass()) != null) && (validBean != false))); 108 } 109 } 110 if (validBean == true){ 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 "Bean [ {0} ] implements interfaces which are all serializable. ", 118 new Object [] {descriptor.getEjbClassName()})); 119 result.setStatus(Result.PASSED); 120 } 121 } 122 123 124 } catch (ClassNotFoundException e) { 125 Verifier.debug(e); 126 result.addErrorDetails(smh.getLocalString 127 ("tests.componentNameConstructor", 128 "For [ {0} ]", 129 new Object [] {compName.toString()})); 130 result.failed(smh.getLocalString 131 (getClass().getName() + ".failedException", 132 "Error: [ {0} ] class not found.", 133 new Object [] {descriptor.getEjbClassName()})); 134 } 135 136 return result; 137 138 } else { 139 result.addNaDetails(smh.getLocalString 140 ("tests.componentNameConstructor", 141 "For [ {0} ]", 142 new Object [] {compName.toString()})); 143 result.notApplicable(smh.getLocalString 144 (getClass().getName() + ".notApplicable", 145 "[ {0} ] expected {1} bean, but called with {2} bean.", 146 new Object [] {getClass(),"Entity","Session"})); 147 return result; 148 } 149 } 150 151 162 public static boolean isValidSerializableType(Class serClass) { 163 164 if (java.io.Serializable .class.isAssignableFrom(serClass)) 165 return true; 166 else 167 return false; 168 } 169 170 public static boolean isTimedObject(Class serClass) { 171 if (javax.ejb.TimedObject .class.isAssignableFrom(serClass)) 172 return true; 173 else 174 return false; 175 } 176 } 177 | Popular Tags |