StatelessCreateNoArgspublic class StatelessCreateNoArgs extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest implements com.sun.enterprise.tools.verifier.tests.ejb.EjbCheckStateless session are only allowed to have create methods with no arguments. |
Fields Summary |
---|
Result | result | ComponentNameConstructor | compName |
Methods Summary |
---|
public Result | check(com.sun.enterprise.deployment.EjbDescriptor descriptor)Stateless session are only allowed to have create methods with no arguments.
result = getInitializedResult();
compName = getVerifierContext().getComponentNameConstructor();
if (descriptor instanceof EjbSessionDescriptor) {
String stateType = ((EjbSessionDescriptor)descriptor).getSessionType();
if (EjbSessionDescriptor.STATELESS.equals(stateType)) {
// RULE: Stateless session are only allowed to have create
// methods with no arguments.
if(descriptor.getHomeClassName() != null && !"".equals(descriptor.getHomeClassName()))
commonToBothInterfaces(descriptor.getHomeClassName(),(EjbSessionDescriptor)descriptor);
if(descriptor.getLocalHomeClassName() != null && !"".equals(descriptor.getLocalHomeClassName()))
commonToBothInterfaces(descriptor.getLocalHomeClassName(),(EjbSessionDescriptor)descriptor);
}
}
if (result.getStatus()!=Result.FAILED) {
addGoodDetails(result, compName);
result.passed(smh.getLocalString
(getClass().getName() + ".passed",
"The bean's Home Interface properly defines one create Method with no args"));
}
return result;
| private void | commonToBothInterfaces(java.lang.String home, com.sun.enterprise.deployment.EjbSessionDescriptor descriptor)This method is responsible for the logic of the test. It is called for both local and remote interfaces.
try {
Class c = Class.forName(home, false, getVerifierContext().getClassLoader());
Method m = null;
for(Method methods : c.getDeclaredMethods()) {
if (methods.getName().equals("create")) {
m = methods;
break;
}
}
//check if this method m does not have any paramenter
if (m != null) {
Class cc[] = m.getParameterTypes();
if (cc.length > 0) {
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName() + ".failed",
"Error: The create method has one or more parameters \n" +
"within bean [ {0} ]. Stateless session are only allowed \n" +
"to have create methods with no arguments.",
new Object[] {home}));
}
} else {
// set status to FAILED, 'cause there is not even
// a create method to begin with, regardless of its parameters
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName() + ".failed1",
"Error: No Create method exists within bean [ {0} ]",
new Object[] {home}));
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName() + ".failedException",
"Error: Class [ {0} ] not found within bean [ {1} ]",
new Object[] {home, descriptor.getName()}));
}
|
|