FileDocCategorySizeDatePackage
TransactionSupportExistence.javaAPI DocGlassfish v2 API11317Fri May 04 22:33:30 BST 2007com.sun.enterprise.tools.verifier.tests.connector

TransactionSupportExistence

public class TransactionSupportExistence extends ConnectorTest implements ConnectorCheck
Test the implementation of the proprer transaction support depending on the level of transaction declared in the deployment descriptor
author
Jerome Dochez
version

Fields Summary
Constructors Summary
Methods Summary
public com.sun.enterprise.tools.verifier.Resultcheck(com.sun.enterprise.deployment.ConnectorDescriptor descriptor)

Test the implementation of the proprer transaction support depending on the level of transaction declared in the deployment descriptor : - NoTransaction neither XAResource or LocalTransaction should be implemented, warning if it does - LocalTransaction LocalTransaction has to be implemented - XATransaction XAResource has to be implemented

param
descriptor deployment descriptor for the rar file
return
result object containing the result of the individual test performed

                
        Result result = getInitializedResult();
	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        if(!descriptor.getOutBoundDefined())
        {
          result.addNaDetails(smh.getLocalString
              ("tests.componentNameConstructor",
               "For [ {0} ]",
               new Object[] {compName.toString()}));
          result.notApplicable(smh.getLocalString
              ("com.sun.enterprise.tools.verifier.tests.connector.managed.notApplicableForInboundRA",
               "Resource Adapter does not provide outbound communication"));
          return result;
        }
        String connectorTransactionSupport =
        descriptor.getOutboundResourceAdapter().getTransSupport();
        
        // No transaction support specified, this is an error
        if (connectorTransactionSupport==null) {
	    result.addErrorDetails(smh.getLocalString
				   ("tests.componentNameConstructor",
				    "For [ {0} ]",
				    new Object[] {compName.toString()}));
	    result.failed(smh.getLocalString
			  ("com.sun.enterprise.tools.verifier.tests.connector.TransactionSupport.nonexist",
			   "Error: No Transaction support specified for ressource adapter",
			   new Object[] {connectorTransactionSupport}));        
            return result;
        }        
        
        // get the rar file handle
       // File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
        
//        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
        if (connectorTransactionSupport.equals(ConnectorTagNames.DD_NO_TRANSACTION)) {
            boolean oneFailed=false;
            if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")!=null) {
                oneFailed = true;
		result.addWarningDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
                result.warning(smh.getLocalString(getClass().getName() + ".warning",
                "Warning: Transaction support {0} is specified for ressource adapter but [ {1} ] is implemented",
		new Object[] {"NoTransaction", "javax.resource.spi.LocalTransaction"}));     
            }
            if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")!=null) {
                oneFailed = true;
		result.addWarningDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
                result.warning(smh.getLocalString(getClass().getName() + ".warning",
                "Warning: Transaction support {0} is specified for ressource adapter but [ {1} ] is implemented",
		new Object[] {"NoTransaction", "javax.transaction.xa.XAResource"}));     
            }
            if (!oneFailed) {
                result.addGoodDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));	
		result.passed(smh.getLocalString(getClass().getName() + ".passed1",
                    "Transaction support NoTransaction is specified for ressource adapter and [ {0} ] are not implemented",
                    new Object[] {"javax.transaction.xa.XAResource, javax.resource.spi.LocalTransaction"}));                          
            }
        }
        else {
            if (connectorTransactionSupport.equals(ConnectorTagNames.DD_LOCAL_TRANSACTION)) {
                if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")==null) {
                    result.addErrorDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
		result.failed(smh.getLocalString(getClass().getName() + ".nonexist",
                    "Error: Transaction support {0} is specified for ressource adapter but [ {1} ] is not implemented",
		    new Object[] {"LocalTransaction", "javax.resource.spi.LocalTransaction"}));     
                } else {                
                    if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")!=null) {
			result.addWarningDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
                        result.addWarningDetails(smh.getLocalString(getClass().getName() + ".warning",
                        "Warning: Transaction support {0} is specified for ressource adapter but [ {1} ] is implemented",
                		new Object[] {"LocalTransaction", "javax.transaction.xa.XAResource"}));     
                    } else {
                        result.addGoodDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
			result.passed(smh.getLocalString(getClass().getName() + ".passed2",
                            "Transaction support {0} is specified for ressource adapter and [ {1} ] is(are) implemented",
                		new Object[] {"LocalTransaction", "javax.resource.spi.LocalTransaction"}));                             
                    }
                }                            
            } else {
                if (connectorTransactionSupport.equals(ConnectorTagNames.DD_XA_TRANSACTION)) {
                    boolean oneFailed = false;
                    if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")==null) {
                        oneFailed = true;
                        result.addErrorDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
			result.failed(smh.getLocalString(getClass().getName() + ".nonexist",
                        "Error: Transaction support {0} is specified for ressource adapter but [ {1} ] is not implemented",
		        new Object[] {"XATransaction", "javax.resource.spi.LocalTransaction"}));                         
                    }
                    if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")==null) {
                        oneFailed = true;
                        result.addErrorDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
			result.failed(smh.getLocalString(getClass().getName() + ".nonexist",
                        "Error: Transaction support {0} is specified for ressource adapter but [ {1} ] is not implemented",
		        new Object[] {"XATransaction", "javax.transaction.xa.XAResource"}));                         
                    }
                    if (!oneFailed) {
                        result.addGoodDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
			result.passed(smh.getLocalString(getClass().getName() + ".passed2",
                            "Transaction support {0} is specified for ressource adapter and [ {1} ] is(are) implemented",
                            new Object[] {"XATransaction", "javax.transaction.xa.Transaction, javax.resource.spi.LocalTransaction"}));                               
                    }
                } else {
                    // unknow transaction support
	            result.addErrorDetails(smh.getLocalString
					  ("tests.componentNameConstructor",
					   "For [ {0} ]",
					   new Object[] {compName.toString()}));
		    result.failed(smh.getLocalString
	                ("com.sun.enterprise.tools.verifier.tests.connector.TransactionSupport.failed",
                        "Error: Deployment descriptor transaction-support [ {0} ] for ressource adapter is not valid",
		        new Object[] {connectorTransactionSupport}));                        
                }
            }
        } 
        return result;