Run a verifier test to check the transaction attributes of the
ejbTimeout method. The allowed attributes are -
RequiresNew or NotSupported.
result = getInitializedResult();
compName = getVerifierContext().getComponentNameConstructor();
if(descriptor.isTimedObject()) {
if (descriptor.getTransactionType().equals
(EjbDescriptor.CONTAINER_TRANSACTION_TYPE)) {
MethodDescriptor methodDesc = descriptor.getEjbTimeoutMethod();
ContainerTransaction txAttr =
descriptor.getContainerTransactionFor(methodDesc);
String version = getVerifierContext().getJavaEEVersion();
if(txAttr != null) {
String ta = txAttr.getTransactionAttribute();
if ((version.compareTo(SpecVersionMapper.JavaEEVersion_5) >= 0) &&
!(ContainerTransaction.REQUIRES_NEW.equals(ta)
|| ContainerTransaction.NOT_SUPPORTED.equals(ta)
|| ContainerTransaction.REQUIRED.equals(ta))) {
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName()+".failed1",
"Error : Bean [ {0} ] Transaction attribute for timeout method" +
"must be Required, RequiresNew or NotSupported",
new Object[] {descriptor.getName()}));
} else if ((version.compareTo(SpecVersionMapper.JavaEEVersion_5) < 0) &&
!(ContainerTransaction.REQUIRES_NEW.equals(ta)
|| ContainerTransaction.NOT_SUPPORTED.equals(ta))) {
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName()+".failed2",
"Error : Bean [ {0} ] Transaction attribute for ejbTimeout " +
"must be RequiresNew or NotSupported",
new Object[] {descriptor.getName()}));
}
} else if(version.compareTo(SpecVersionMapper.JavaEEVersion_5)<0) {
// Transaction attribute for ejbTimeout not specified in the DD
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName()+".failed3",
"Transaction attribute for Timeout is not specified for [ {0} ]",
new Object[] {descriptor.getName()}));
}
}
}
if (result.getStatus() != Result.FAILED) {
addGoodDetails(result, compName);
result.passed(smh.getLocalString
(getClass().getName()+".passed",
"Transaction attributes are properly specified"));
}
return result;