FileDocCategorySizeDatePackage
HasValidEjbTimeoutDescriptor.javaAPI DocGlassfish v2 API5834Fri May 04 22:34:08 BST 2007com.sun.enterprise.tools.verifier.tests.ejb.timer

HasValidEjbTimeoutDescriptor

public class HasValidEjbTimeoutDescriptor extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest
Check that the transaction attributes for the ejbTimeout method are one of the following - RequiresNew or NotSupported
version
author
Anisha Malhotra

Fields Summary
Result
result
ComponentNameConstructor
compName
Constructors Summary
Methods Summary
public Resultcheck(EjbDescriptor descriptor)
Run a verifier test to check the transaction attributes of the ejbTimeout method. The allowed attributes are - RequiresNew or NotSupported.

param
descriptor the Enterprise Java Bean deployment descriptor
return
Result the results for this assertion

                                             
        

        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;