The abstract schema name for every CMP bean within a jar file should be unique.
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
boolean oneFailed = false;
String abstractSchema = null;
if (descriptor instanceof EjbEntityDescriptor) {
if (((EjbEntityDescriptor)descriptor).getPersistenceType().equals(EjbEntityDescriptor.CONTAINER_PERSISTENCE)) {
if (((EjbCMPEntityDescriptor) descriptor).getCMPVersion()==EjbCMPEntityDescriptor.CMP_2_x) {
abstractSchema = ((EjbCMPEntityDescriptor)descriptor).getAbstractSchemaName();
if (abstractSchema==null) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString
(getClass().getName() + ".failed2",
"No Abstract Schema Name specified for a CMP 2.0 Entity Bean {0} ",
new Object[] {descriptor.getName()}));
return result;
}
}
}
if (abstractSchema ==null) {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"This test is only for CMP 2.0 beans. Abstract Schema Names should be unique within an ejb JAR file."));
return result;
}
EjbBundleDescriptor bundle = descriptor.getEjbBundleDescriptor();
Iterator iterator = (bundle.getEjbs()).iterator();
Vector<String> schemaNames = new Vector<String>();
while(iterator.hasNext()) {
EjbDescriptor entity = (EjbDescriptor) iterator.next();
if (entity instanceof EjbEntityDescriptor) {
if (!entity.equals(descriptor)) {
if (((EjbEntityDescriptor)entity).getPersistenceType().equals(EjbEntityDescriptor.CONTAINER_PERSISTENCE)) {
schemaNames.addElement(((EjbCMPEntityDescriptor)entity).getAbstractSchemaName());
}
}
}
}
for (int i = 0; i < schemaNames.size(); i++) {
if (abstractSchema.equals(schemaNames.elementAt(i))) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.addErrorDetails
(smh.getLocalString
(getClass().getName() + ".failed",
"Abstract Schema Names should be unique within an ejb JAR file. Abstract Schema Name [ {0} ] is not unique.",
new Object[] {abstractSchema}));
oneFailed = true;
}
}
if (oneFailed == false) {
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed
(smh.getLocalString
(getClass().getName() + ".passed",
"PASSED : Abstract Schema Names for all beans within the ejb JAR file are unique."));
}
else result.setStatus(Result.FAILED);
} else {
addNaDetails(result, compName);
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"This test is only for CMP 2.0 beans. Abstract Schema Names should be unique within an ejb JAR file."));
}
return result;