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 PrimaryKeyClassFieldsCmp 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) { 67 String persistence = 68 ((EjbEntityDescriptor)descriptor).getPersistenceType(); 69 if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) { 70 71 try { 74 FieldDescriptor fd = ((EjbCMPEntityDescriptor)descriptor).getPrimaryKeyFieldDesc(); 75 if (fd != null) { 76 String pkf = fd.getName(); 77 if (pkf.length() > 0) { 78 result.addNaDetails(smh.getLocalString 80 ("tests.componentNameConstructor", 81 "For [ {0} ]", 82 new Object [] {compName.toString()})); 83 result.notApplicable(smh.getLocalString 84 (getClass().getName() + ".notApplicable2", 85 "Entity Bean [ {0} ] with primekey-field non-blank, test not applicable.", 86 new Object [] {descriptor.getEjbClassName()})); 87 } 88 } else { 89 try { 90 Context context = getVerifierContext(); 91 ClassLoader jcl = context.getClassLoader(); 92 Class c = Class.forName(((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName(), false, getVerifierContext().getClassLoader()); 93 94 boolean oneFailed = false; 95 boolean badField = false; 96 Field [] fields = c.getDeclaredFields(); 97 Set persistentFields = 98 ((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor().getCMPFields(); 99 for (int i = 0; i < fields.length; i++) { 100 badField = false; 101 if (EjbUtils.isFieldSubsetOfCMP(fields[i],persistentFields)) { 102 continue; 103 } else { 104 if (!oneFailed) { 105 oneFailed = true; 106 } 107 badField = true; 108 } 109 110 if (badField) { 111 result.addErrorDetails(smh.getLocalString 112 ("tests.componentNameConstructor", 113 "For [ {0} ]", 114 new Object [] {compName.toString()})); 115 result.failed(smh.getLocalString 116 (getClass().getName() + ".failed", 117 "Error: Field [ {0} ] defined within primary key class [ {1} ] is not defined within container managed fields.", 118 new Object [] {fields[i].getName(),((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 119 } 120 } 121 if (!oneFailed) { 122 result.addGoodDetails(smh.getLocalString 123 ("tests.componentNameConstructor", 124 "For [ {0} ]", 125 new Object [] {compName.toString()})); 126 result.passed(smh.getLocalString 127 (getClass().getName() + ".passed", 128 "This primary key class [ {0} ] has defined all fields which are defined within container managed fields.", 129 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 130 } 131 } catch (ClassNotFoundException e) { 132 Verifier.debug(e); 133 result.addErrorDetails(smh.getLocalString 134 ("tests.componentNameConstructor", 135 "For [ {0} ]", 136 new Object [] {compName.toString()})); 137 result.failed(smh.getLocalString 138 (getClass().getName() + ".failedException", 139 "Error: [ {0} ] class not found.", 140 new Object [] {((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName()})); 141 } catch (Throwable t) { 142 result.addWarningDetails(smh.getLocalString 143 ("tests.componentNameConstructor", 144 "For [ {0} ]", 145 new Object [] {compName.toString()})); 146 result.warning(smh.getLocalString 147 (getClass().getName() + ".warningException", 148 "Warning: [ {0} ] class encountered [ {1} ]. Cannot access fields of class [ {2} ] which is external to [ {3} ].", 149 new Object [] {(descriptor).getEjbClassName(),t.toString(), t.getMessage(),descriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri()})); 150 } 151 } 152 } catch (NullPointerException e) { 153 result.addErrorDetails(smh.getLocalString 154 ("tests.componentNameConstructor", 155 "For [ {0} ]", 156 new Object [] {compName.toString()})); 157 result.failed(smh.getLocalString 158 (getClass().getName() + ".failedException2", 159 "Error: Primkey field not defined within [ {0} ] bean.", 160 new Object [] {descriptor.getName()})); 161 } 162 return result; 163 164 } else { result.addNaDetails(smh.getLocalString 166 ("tests.componentNameConstructor", 167 "For [ {0} ]", 168 new Object [] {compName.toString()})); 169 result.notApplicable(smh.getLocalString 170 (getClass().getName() + ".notApplicable1", 171 "Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence.", 172 new Object [] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence})); 173 return result; 174 } 175 } else { 176 result.addNaDetails(smh.getLocalString 177 ("tests.componentNameConstructor", 178 "For [ {0} ]", 179 new Object [] {compName.toString()})); 180 result.notApplicable(smh.getLocalString 181 (getClass().getName() + ".notApplicable", 182 "{0} expected {1} bean, but called with {2}.", 183 new Object [] {getClass(),"Entity","Session"})); 184 return result; 185 } 186 } 187 } 188 | Popular Tags |