EjbClassImplementsComponentInterfacepublic class EjbClassImplementsComponentInterface extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheckOptionally implements the enterprise Bean's remote interface test.
The class may, but is not required to, implement the enterprise Bean's
remote interface. It is recommended that the enterprise bean class
not implement the remote interface to prevent inadvertent passing of
this as a method argument or result.
Note: Display warning to user in this instance. |
Fields Summary |
---|
Result | result | ComponentNameConstructor | compName |
Methods Summary |
---|
public Result | check(com.sun.enterprise.deployment.EjbDescriptor descriptor)Optionally implements the enterprise Bean's remote interface test.
The class may, but is not required to, implement the enterprise Bean's
remote interface. It is recommended that the enterprise bean class
not implement the remote interface to prevent inadvertent passing of
this as a method argument or result.
Note: Display warning to user in this instance.
result = getInitializedResult();
compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbSessionDescriptor) {
if(descriptor.getRemoteClassName() != null && !"".equals(descriptor.getRemoteClassName()))
commonToBothInterfaces(descriptor.getRemoteClassName(),(EjbSessionDescriptor)descriptor);
if(descriptor.getLocalClassName() != null && !"".equals(descriptor.getLocalClassName()))
commonToBothInterfaces(descriptor.getLocalClassName(),(EjbSessionDescriptor)descriptor);
}
if(result.getStatus()!=Result.FAILED && result.getStatus()!=Result.WARNING) {
addGoodDetails(result, compName);
result.addGoodDetails(smh.getLocalString
(getClass().getName() + ".passed",
"Bean class does not implement the enterprise Bean's remote interface"));
}
return result;
| private void | commonToBothInterfaces(java.lang.String component, com.sun.enterprise.deployment.EjbSessionDescriptor descriptor)
try {
Class c = Class.forName(descriptor.getEjbClassName(), false, getVerifierContext().getClassLoader());
Class rc = Class.forName(component, false, getVerifierContext().getClassLoader());
// walk up the class tree
do {
for (Class interfaces : c.getInterfaces()) {
logger.log(Level.FINE, getClass().getName() + ".debug1",
new Object[] {interfaces.getName()});
if (interfaces.getName().equals(rc.getName())) {
// display warning to user
addWarningDetails(result, compName);
result.warning(smh.getLocalString
(getClass().getName() + ".warning",
"Warning: [ {0} ] class implments the " +
"enterprise Bean's remote interface [ {1} ]. " +
"It is recommended that the enterprise bean class not" +
" implement the remote interface to prevent " +
"inadvertent passing of this as a method argument or result. ",
new Object[] {descriptor.getEjbClassName(),rc.getName()}));
break;
}
}
} while ((c=c.getSuperclass()) != null);
} catch (ClassNotFoundException e) {
Verifier.debug(e);
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName() + ".failedException",
"Error: [ {0} ] class not found.",
new Object[] {descriptor.getEjbClassName()}));
}
|
|