1 23 package com.sun.enterprise.tools.verifier.tests.ejb.homeintf; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.lang.ClassLoader ; 27 import java.lang.reflect.Modifier ; 28 29 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 30 import com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor; 31 import com.sun.enterprise.tools.verifier.Result; 32 import com.sun.enterprise.tools.verifier.Context; 33 import com.sun.enterprise.tools.verifier.Verifier; 34 import com.sun.enterprise.deployment.EjbDescriptor; 35 import com.sun.enterprise.deployment.EjbSessionDescriptor; 36 import com.sun.enterprise.deployment.EjbEntityDescriptor; 37 38 41 abstract public class HomeInterfacePublic extends EjbTest implements EjbCheck { 42 43 45 abstract protected String getHomeInterfaceName(EjbDescriptor descriptor); 46 47 54 55 56 public Result check(EjbDescriptor descriptor) { 57 58 Result result = getInitializedResult(); 59 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 60 61 if(getHomeInterfaceName(descriptor) == null || "".equals(getHomeInterfaceName(descriptor))){ 62 result.addNaDetails(smh.getLocalString 63 ("tests.componentNameConstructor", "For [ {0} ]", 64 new Object [] {compName.toString()})); 65 result.notApplicable(smh.getLocalString 66 ("com.sun.enterprise.tools.verifier.tests.ejb.localinterfaceonly.notapp", 67 "Not Applicable because, EJB [ {0} ] has Local Interfaces only.", 68 new Object [] {descriptor.getEjbClassName()})); 69 70 return result; 71 } 72 73 74 if ((descriptor instanceof EjbSessionDescriptor) || 75 (descriptor instanceof EjbEntityDescriptor)) { 76 77 try { 78 Context context = getVerifierContext(); 79 ClassLoader jcl = context.getClassLoader(); 80 Class c = Class.forName(getClassName(descriptor), false, jcl); 81 82 boolean isPublic = false; 84 int modifiers = c.getModifiers(); 85 if (Modifier.isPublic(modifiers)) { 86 isPublic = true; 87 } 88 89 if (!isPublic){ 91 result.addErrorDetails(smh.getLocalString 92 ("tests.componentNameConstructor", 93 "For [ {0} ]", 94 new Object [] {compName.toString()})); 95 result.failed(smh.getLocalString 96 (getClass().getName() + ".failed", 97 "Error: [ {0} ] is not defined as public. All enterprise beans home interfaces must be defined as public. [ {1} ] is not a valid home interface.", 98 new Object [] {getClassName(descriptor),getClassName(descriptor)})); 99 } else { 100 result.addGoodDetails(smh.getLocalString 101 ("tests.componentNameConstructor", 102 "For [ {0} ]", 103 new Object [] {compName.toString()})); 104 105 result.passed(smh.getLocalString 106 (getClass().getName() + ".passed", 107 "[ {0} ] properly declares the home interface as public.", 108 new Object [] {getClassName(descriptor)})); 109 } 110 } catch (ClassNotFoundException e) { 111 Verifier.debug(e); 112 result.addErrorDetails(smh.getLocalString 113 ("tests.componentNameConstructor", 114 "For [ {0} ]", 115 new Object [] {compName.toString()})); 116 result.failed(smh.getLocalString 117 (getClass().getName() + ".failedException", 118 "Error: [ {0} ] class not found.", 119 new Object [] {getClassName(descriptor)})); 120 } 121 return result; 122 123 } else { 124 result.addNaDetails(smh.getLocalString 125 ("tests.componentNameConstructor", 126 "For [ {0} ]", 127 new Object [] {compName.toString()})); 128 result.notApplicable(smh.getLocalString 129 (getClass().getName() + ".notApplicable", 130 "[ {0} ] expected {1} bean or {2} bean, but called with {3}.", 131 new Object [] {getClass(),"Session","Entity",descriptor.getName()})); 132 return result; 133 } 134 } 135 136 private String getClassName(EjbDescriptor descriptor) { 137 return getHomeInterfaceName(descriptor); 138 } 139 } 140 | Popular Tags |