Implements the check on EJB QL's syntax and semantics.
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
try {
if (descriptor instanceof IASEjbCMPEntityDescriptor) {
Collection col = null;
if(getVerifierContext().getJDOException()!=null){
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed (smh.getLocalString(getClass().getName() + ".failed1",
"Error: Exception [ {0} ] while initialising JDO code generator.",
new Object[] {getVerifierContext().getJDOException().getMessage()}));
return result;
}else{
try{
JDOCodeGenerator jdc= getVerifierContext().getJDOCodeGenerator();
col = jdc.validate((IASEjbCMPEntityDescriptor)descriptor);
}catch(Exception ex){
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed (smh.getLocalString(getClass().getName() + ".failed",
"Error: Exception [ {0} ] when calling JDOCodeGenerator.validate().",
new Object[] {ex.getMessage()}));
return result;
}
}
if (col.isEmpty()){
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed(smh.getLocalString(getClass().getName() + ".passed",
"Syntax and Semantics of EJBQL Queries (if any) are correct."));
}else{
// collect all the EJBQL errors
String allErrors = null;
Iterator it = col.iterator();
while (it.hasNext()) {
Exception e = (Exception)it.next();
if (e instanceof EJBQLException) {
allErrors = e.getMessage() + "\n\n";
}
}
if (allErrors != null) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString(getClass().getName() + ".parseError",
"Error: Entity bean [ {0} ] has the following EJBQL error(s) [ {1} ]."
, new Object[] {descriptor.getEjbClassName(), "\n" + allErrors} ));
}
else {
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed(smh.getLocalString(getClass().getName() + ".passed",
"Syntax and Semantics of EJBQL Queries (if any) are correct."));
}
}
} else {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(
smh.getLocalString(getClass().getName() + ".notApplicable",
"Not applicable: Test only applies to container managed EJBs"));
}
} catch(Exception e) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed (smh.getLocalString(getClass().getName() + ".failed",
"Error: Exception [ {0} ] when calling JDOCodeGenerator.validate().",
new Object[] {e.getMessage()}));
}
return result;