Result result = getInitializedResult();
ComponentNameConstructor compName = new ComponentNameConstructor(descriptor);
boolean oneFailed = false;
boolean notApp = false;
boolean initFailed=false;
if(descriptor.getEjbBundleDescriptor().getTestsDone().contains(getClass().getName()))
{
result.setStatus(Result.NOT_RUN);
result.addGoodDetails(smh.getLocalString("iasEjbJar.allReadyRun",
"NOT RUN [AS-EJB ias-ejb-jar] cmp-mapping is a JAR Level Test. This test has already been run once"));
return result;
}
descriptor.getEjbBundleDescriptor().setTestsDone(getClass().getName());
IASEjbBundleDescriptor desc=(IASEjbBundleDescriptor)descriptor.getEjbBundleDescriptor();
if(!mappingFileExist((EjbDescriptor)descriptor))//4703999
{
if(containsCMP(desc)){//4724249 additional check if the archive contain a cmp
result.warning(smh.getLocalString(getClass().getName()+".warning",
"WARNING [JDO-GEN-CMP-Validation] : CMP mapping file [ {0} ] not present, in the ejb archive [ {1} ].",
new Object[] {EjbBundleXmlReader.IAS_CMP_MAPPING_JAR_ENTRY, descriptor.getName()}));
return result;
}else{
notApp = true;
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"NOT APPLICABLE [JDO-GEN-CMP-Validation] : There is no cmp present, within the ejb archive [ {0} ].",
new Object[] {descriptor.getName()}));
return result;
}
}
ClassLoader loader=getVerifierContext().getClassLoader();
JDOCodeGenerator jdogen = new JDOCodeGenerator();
Iterator ejbs=desc.getEjbs().iterator();
//For each entity
if(ejbs.hasNext())
{
try{
jdogen.init(desc, loader);
}catch(Exception re){
oneFailed = true;
initFailed=true;
result.failed(smh.getLocalString(getClass().getName()+".failed2",
"FAILED [JDO-GEN-CMP-Validation] : Unexpected exception occured while initializing JDOCodeGenerator, for the mapping file [ {0} ], "+
"of the ejb archive [ {1} ] . "+
"Check stacktrace for details : \n [ {2} ]" ,
new Object[]{EjbBundleXmlReader.IAS_CMP_MAPPING_JAR_ENTRY,descriptor.getName(),re.getMessage()}));
}
while ( !initFailed && ejbs.hasNext() ) {
EjbDescriptor ejbdesc = (EjbDescriptor) ejbs.next();
if ( ejbdesc instanceof IASEjbCMPEntityDescriptor ) {
IASEjbCMPEntityDescriptor entd = (IASEjbCMPEntityDescriptor)ejbdesc;
try {
jdogen.validate(entd);
result.passed(smh.getLocalString(getClass().getName()+".passed",
"PASSED [JDO-GEN-CMP-Validation] : The descriptor entries, in the mapping file [ {0} ], "+
"for CMP [ {1} ]"+
"of the ejb archive [ {2} ] are valid. ",
new Object[]{EjbBundleXmlReader.IAS_CMP_MAPPING_JAR_ENTRY,ejbdesc.getEjbClassName(),descriptor.getName()}));
} catch (GeneratorException e) {
oneFailed = true;
result.failed(smh.getLocalString(getClass().getName()+".failed",
"FAILED [JDO-GEN-CMP-Validation] : Atleast one entry , in the mapping file [ {0} ], "+
"for CMP [ {1} ]"+
"of the ejb archive [ {2} ] is not valid. "+
"Check stacktrace for details : \n [ {3} ]" ,
new Object[]{EjbBundleXmlReader.IAS_CMP_MAPPING_JAR_ENTRY,ejbdesc.getEjbClassName(),descriptor.getName(),e.getMessage()}));
}catch (Exception e) {
oneFailed = true;
result.failed(smh.getLocalString(getClass().getName()+".failed1",
"FAILED [JDO-GEN-CMP-Validation] : Unexpected exception occured while validating , the mapping file [ {0} ], "+
"for CMP [ {1} ]"+
"of the ejb archive [ {2} ] . "+
"Check stacktrace for details : \n [ {3} ]" ,
new Object[]{EjbBundleXmlReader.IAS_CMP_MAPPING_JAR_ENTRY,ejbdesc.getEjbClassName(),descriptor.getName(),e.getMessage()}));
}
}
}//end while loop
}
else{
notApp = true;
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"NOT APPLICABLE [JDO-GEN-CMP-Validation] : There is no cmp present, within the ejb archive [ {0} ].",
new Object[] {descriptor.getName()}));
}
jdogen.cleanup();
if (oneFailed) {
result.setStatus(Result.FAILED);
} else if(notApp) {
result.setStatus(Result.NOT_APPLICABLE);
}else {
result.setStatus(Result.PASSED);
}
return result;