1 23 package com.sun.enterprise.tools.verifier.tests.ejb.entity.pkmultiplefield; 24 25 import com.sun.enterprise.tools.verifier.tests.ejb.EjbTest; 26 import java.lang.ClassLoader ; 27 import com.sun.enterprise.tools.verifier.tests.*; 28 import java.lang.reflect.*; 29 import javax.ejb.EntityBean ; 30 import com.sun.enterprise.deployment.*; 31 import com.sun.enterprise.tools.verifier.*; 32 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 33 34 38 public class PrimaryKeyClassFieldsPublic extends EjbTest implements EjbCheck { 39 40 41 49 public Result check(EjbDescriptor descriptor) { 50 51 Result result = getInitializedResult(); 52 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 53 54 if (descriptor instanceof EjbEntityDescriptor) { 55 String persistence = 56 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 57 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 58 try { 61 FieldDescriptor fd = ((EjbCMPEntityDescriptor)descriptor).getPrimaryKeyFieldDesc(); 62 if (fd != null) { 63 String pkf = fd.getName(); 64 if (pkf.length() > 0) { 65 result.addNaDetails(smh.getLocalString 67 ("tests.componentNameConstructor", 68 "For [ {0} ]", 69 new Object [] {compName.toString()})); 70 result.notApplicable(smh.getLocalString 71 (getClass().getName() + ".notApplicable2", 72 "Entity Bean [ {0} ] with primekey-field non-blank, test not applicable.", 73 new Object [] {descriptor.getEjbClassName()})); 74 } 75 } else { 76 try { 77 Context context = getVerifierContext(); 78 ClassLoader jcl = context.getClassLoader(); 79 Class c = Class.forName(((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(), false, getVerifierContext().getClassLoader()); 80 81 boolean oneFailed = false; 82 boolean badField = false; 83 Field [] fields = c.getDeclaredFields(); 84 for (int i = 0; i < fields.length; i++) { 85 badField = false; 86 int modifiers = fields[i].getModifiers(); 87 if (Modifier.isPublic(modifiers)) { 88 continue; 89 } else { 90 if (!oneFailed) { 91 oneFailed = true; 92 } 93 badField = true; 94 } 95 96 if (badField) { 97 result.addErrorDetails(smh.getLocalString 98 ("tests.componentNameConstructor", 99 "For [ {0} ]", 100 new Object [] {compName.toString()})); 101 result.failed(smh.getLocalString 102 (getClass().getName() + ".failed", 103 "Error: Field [ {0} ] defined within primary key class [ {1} ] is not defined as public.", 104 new Object [] {fields[i].getName(),((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 105 } 106 } 107 if (!oneFailed) { 108 result.addGoodDetails(smh.getLocalString 109 ("tests.componentNameConstructor", 110 "For [ {0} ]", 111 new Object [] {compName.toString()})); 112 result.passed(smh.getLocalString 113 (getClass().getName() + ".passed", 114 "This primary key class [ {0} ] has defined all fields as public.", 115 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 116 } 117 } catch (ClassNotFoundException e) { 118 Verifier.debug(e); 119 result.addErrorDetails(smh.getLocalString 120 ("tests.componentNameConstructor", 121 "For [ {0} ]", 122 new Object [] {compName.toString()})); 123 result.failed(smh.getLocalString 124 (getClass().getName() + ".failedException", 125 "Error: [ {0} ] class not found.", 126 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 127 } catch (Throwable t) { 128 result.addWarningDetails(smh.getLocalString 129 ("tests.componentNameConstructor", 130 "For [ {0} ]", 131 new Object [] {compName.toString()})); 132 result.warning(smh.getLocalString 133 (getClass().getName() + ".warningException", 134 "Warning: [ {0} ] class encountered [ {1} ]. Cannot access fields of class [ {2} ] which is external to [ {3} ].", 135 new Object [] {(descriptor).getEjbClassName(),t.toString(), t.getMessage(), descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri()})); 136 } 137 } 138 } catch (NullPointerException e) { 139 result.addErrorDetails(smh.getLocalString 140 ("tests.componentNameConstructor", 141 "For [ {0} ]", 142 new Object [] {compName.toString()})); 143 result.failed(smh.getLocalString 144 (getClass().getName() + ".failedException2", 145 "Error: Primkey field not defined within [ {0} ] bean.", 146 new Object [] {descriptor.getName()})); 147 } 148 return result; 149 150 } else { result.addNaDetails(smh.getLocalString 152 ("tests.componentNameConstructor", 153 "For [ {0} ]", 154 new Object [] {compName.toString()})); 155 result.notApplicable(smh.getLocalString 156 (getClass().getName() + ".notApplicable1", 157 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 158 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence})); 159 return result; 160 } 161 162 } else { 163 result.addNaDetails(smh.getLocalString 164 ("tests.componentNameConstructor", 165 "For [ {0} ]", 166 new Object [] {compName.toString()})); 167 result.notApplicable(smh.getLocalString 168 (getClass().getName() + ".notApplicable", 169 "{0} expected {1} bean, but called with {2}.", 170 new Object [] {getClass(),"Entity","Session"})); 171 return result; 172 } 173 } 174 } 175 | Popular Tags |