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 java.util.*; 33 import com.sun.enterprise.tools.verifier.tests.ejb.EjbCheck; 34 import com.sun.enterprise.tools.verifier.tests.ejb.EjbUtils; 35 36 45 public class PrimaryKeyClassFieldsMatchBeanFields extends EjbTest implements EjbCheck { 46 47 48 61 public Result check(EjbDescriptor descriptor) { 62 63 Result result = getInitializedResult(); 64 ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor(); 65 66 if (descriptor instanceof EjbEntityDescriptor) { 69 String persistence = 70 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 71 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 72 73 try { 77 FieldDescriptor fd = ((EjbCMPEntityDescriptor)descriptor).getPrimaryKeyFieldDesc(); 78 if (fd != null) { 79 String pkf = fd.getName(); 80 if (pkf.length() > 0) { 81 result.addNaDetails(smh.getLocalString 83 ("tests.componentNameConstructor", 84 "For [ {0} ]", 85 new Object [] {compName.toString()})); 86 result.notApplicable(smh.getLocalString 87 (getClass().getName() + ".notApplicable2", 88 "Entity Bean [ {0} ] with primekey-field non-blank, test not applicable.", 89 new Object [] {descriptor.getEjbClassName()})); 90 } 91 } else { 92 try { 93 Context context = getVerifierContext(); 94 ClassLoader jcl = context.getClassLoader(); 95 Class c = Class.forName(((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(), false, getVerifierContext().getClassLoader()); 96 Field [] fields = c.getDeclaredFields(); 97 98 Vector beanFields = ((EjbDescriptor)descriptor).getFieldDescriptors(); 99 100 boolean oneFailed = false; 101 boolean badField = false; 102 for (int i = 0; i < fields.length; i++) { 103 badField = false; 104 if (EjbUtils.isPKFieldMatchingBeanFields(fields[i],beanFields)) { 105 result.addGoodDetails(smh.getLocalString 106 ("tests.componentNameConstructor", 107 "For [ {0} ]", 108 new Object [] {compName.toString()})); 109 result.addGoodDetails(smh.getLocalString 110 (getClass().getName() + ".passed1", 111 "Valid: Field [ {0} ] defined within primary key class [ {1} ] does correspond to the field names of the entity bean class [ {2} ] that comprise the key.", 112 new Object [] {fields[i].getName(),((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(),descriptor.getEjbClassName()})); 113 continue; 114 } else { 115 if (!oneFailed) { 116 oneFailed = true; 117 } 118 badField = true; 119 } 120 121 if (badField == true) { 122 result.addErrorDetails(smh.getLocalString 123 ("tests.componentNameConstructor", 124 "For [ {0} ]", 125 new Object [] {compName.toString()})); 126 result.failed(smh.getLocalString 127 (getClass().getName() + ".failed", 128 "Error: Field [ {0} ] defined within primary key class [ {1} ] does not correspond to the field names of the entity bean class [ {2} ] that comprise the key.", 129 new Object [] {fields[i].getName(),((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(),descriptor.getEjbClassName()})); 130 } 131 } 132 if (!oneFailed) { 133 result.addGoodDetails(smh.getLocalString 134 ("tests.componentNameConstructor", 135 "For [ {0} ]", 136 new Object [] {compName.toString()})); 137 result.passed(smh.getLocalString 138 (getClass().getName() + ".passed", 139 "This primary key class [ {0} ] has defined all fields which correspond to the field names of the entity bean class [ {1} ] that comprise the key.", 140 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(),descriptor.getEjbClassName()})); 141 } 142 } catch (ClassNotFoundException e) { 143 Verifier.debug(e); 144 result.addErrorDetails(smh.getLocalString 145 ("tests.componentNameConstructor", 146 "For [ {0} ]", 147 new Object [] {compName.toString()})); 148 result.failed(smh.getLocalString 149 (getClass().getName() + ".failedException", 150 "Error: [ {0} ] class or [ {1} ] class not found.", 151 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(),((EjbEntityDescriptor)descriptor).getEjbClassName()})); 152 } catch (Throwable t) { 153 result.addWarningDetails(smh.getLocalString 154 ("tests.componentNameConstructor", 155 "For [ {0} ]", 156 new Object [] {compName.toString()})); 157 result.warning(smh.getLocalString 158 (getClass().getName() + ".warningException", 159 "Warning: [ {0} ] class encountered [ {1} ]. Cannot access fields of class [ {2} ] which is external to [ {3} ].", 160 new Object [] {(descriptor).getEjbClassName(),t.toString(), t.getMessage(), descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri()})); 161 } 162 } 163 } catch (NullPointerException e) { 164 result.addErrorDetails(smh.getLocalString 165 ("tests.componentNameConstructor", 166 "For [ {0} ]", 167 new Object [] {compName.toString()})); 168 result.failed(smh.getLocalString 169 (getClass().getName() + ".failedException2", 170 "Error: Primkey field not defined within [ {0} ] bean.", 171 new Object [] {descriptor.getName()})); 172 } 173 return result; 174 175 } else { result.addNaDetails(smh.getLocalString 177 ("tests.componentNameConstructor", 178 "For [ {0} ]", 179 new Object [] {compName.toString()})); 180 result.notApplicable(smh.getLocalString 181 (getClass().getName() + ".notApplicable1", 182 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 183 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence})); 184 return result; 185 } 186 } else { 187 result.addNaDetails(smh.getLocalString 188 ("tests.componentNameConstructor", 189 "For [ {0} ]", 190 new Object [] {compName.toString()})); 191 result.notApplicable(smh.getLocalString 192 (getClass().getName() + ".notApplicable", 193 "{0} expected {1} bean, but called with {2}.", 194 new Object [] {getClass(),"Entity","Session"})); 195 return result; 196 } 197 } 198 } 199 | Popular Tags |