The primkey-field must be one of the fields declared in the cmp-field
elements.
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
// The primkey-field must be one of the fields declared in the
// cmp-field elements
if (descriptor instanceof EjbEntityDescriptor) {
String persistence =
((EjbEntityDescriptor)descriptor).getPersistenceType();
if (EjbEntityDescriptor.CONTAINER_PERSISTENCE.equals(persistence)) {
try {
// do i need to use this to help determine single vs. multiple
// object finders, etc.
String primkey =
((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName();
if (primkey.equals("java.lang.String")) {
try {
FieldDescriptor primField =
((EjbCMPEntityDescriptor)descriptor).getPrimaryKeyFieldDesc();
// primField must exist in order to be valid & pass test
Descriptor persistentField;
Field field;
Set persistentFields =
((EjbCMPEntityDescriptor)descriptor).getPersistenceDescriptor().getCMPFields();
Iterator iterator = persistentFields.iterator();
boolean foundMatch = false;
while (iterator.hasNext()) {
persistentField = (Descriptor)iterator.next();
if (primField != null) {
if (primField.getName().equals(persistentField.getName())) {
foundMatch = true;
break;
} else {
continue;
}
} else {
// should already be set, can't ever be in cmp
// fields if primField doesn't exist
foundMatch = false;
break;
}
}
if (foundMatch) {
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed(smh.getLocalString
(getClass().getName() + ".passed",
"Primary key field [ {0} ] is defined within set of container managed fields for bean [ {1} ]",
new Object[] {primField.getName(),descriptor.getName()}));
} else {
if (primField != null) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString
(getClass().getName() + ".failed",
"Primary key field [ {0} ] is not defined within set of container managed fields for bean [ {1} ]",
new Object[] {primField.getName(),descriptor.getName()}));
} else {
// unless special case, where primary key class
// is java.lang.Object, then test should be N/A
// not failed
try {
if (((EjbEntityDescriptor)descriptor).getPrimaryKeyClassName().equals("java.lang.Object")) {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable2",
"Primkey field not defined for [ {0} ] bean.",
new Object[] {descriptor.getName()}));
} else {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString
(getClass().getName() + ".failed1",
"Primary key field is not defined within set of container managed fields for bean [ {0} ]",
new Object[] {descriptor.getName()}));
}
} catch (NullPointerException e) {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable2",
"Primkey field not defined for [ {0} ] bean.",
new Object[] {descriptor.getName()}));
}
}
}
} catch (NullPointerException e) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed
(smh.getLocalString
(getClass().getName() + ".failed2",
"Error: Primary Key Field must be defined for bean [ {0} ] with primary key class set to [ {1} ]",
new Object[] {descriptor.getName(),primkey}));
}
} else {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable3",
"primkey [ {0} ] is not java.lang.String for bean [ {1} ]",
new Object[] {primkey,descriptor.getName()}));
}
} catch (NullPointerException e) {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable2",
"Primkey field not defined for [ {0} ] bean.",
new Object[] {descriptor.getName()}));
}
} else {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable1",
"Expected [ {0} ] managed persistence, but [ {1} ] bean has [ {2} ] managed persistence",
new Object[] {EjbEntityDescriptor.CONTAINER_PERSISTENCE,descriptor.getName(),persistence}));
}
} else {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"{0} expected \n {1} bean, but called with {2} bean",
new Object[] {getClass(),"Entity","Session"}));
}
return result;