Implements the SessionBean Interface test.
All session Beans must implement, directly or indirectly, the SessionBean
interface.
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbSessionDescriptor) {
try {
Context context = getVerifierContext();
ClassLoader jcl = context.getClassLoader();
Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
boolean validBean = false;
// walk up the class tree
do {
Class[] interfaces = c.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
logger.log(Level.FINE, getClass().getName() + ".debug1",
new Object[] {interfaces[i].getName()});
if (interfaces[i].getName().equals("javax.ejb.SessionBean") &&
descriptor instanceof EjbSessionDescriptor) {
validBean = true;
result.addGoodDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.passed(smh.getLocalString
(getClass().getName() + ".passed",
"[ {0} ] properly implements the SessionBean interface.",
new Object[] {descriptor.getEjbClassName()}));
break;
}
}
} while ((((c=c.getSuperclass()) != null) && (!validBean)));
if (!validBean) {
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString
(getClass().getName() + ".failed",
"Error: [ {0} ] does not properly implement the SessionBean interface. All session Beans must implement the SessionBean interface. [ {1} ] is not a valid bean.",
new Object[] {descriptor.getEjbClassName(),descriptor.getEjbClassName()}));
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
result.addErrorDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.failed(smh.getLocalString
(getClass().getName() + ".failedException",
"Error: [ {0} ] class not found.",
new Object[] {descriptor.getEjbClassName()}));
}
return result;
} else {
result.addNaDetails(smh.getLocalString
("tests.componentNameConstructor",
"For [ {0} ]",
new Object[] {compName.toString()}));
result.notApplicable(smh.getLocalString
(getClass().getName() + ".notApplicable",
"[ {0} ] expected {1} bean, but called with {2} bean.",
new Object[] {getClass(),"Session","Entity"}));
return result;
}