protected ScopedTransactionStrategyBase(
            bool autoCommit,
            Func <ITransaction> transactionFactory,
            TransactionStrategyBase outerTransactionStrategy,
            IWxeFunctionExecutionContext executionContext)
        {
            ArgumentUtility.CheckNotNull("transactionFactory", transactionFactory);
            ArgumentUtility.CheckNotNull("outerTransactionStrategy", outerTransactionStrategy);
            ArgumentUtility.CheckNotNull("executionContext", executionContext);

            _autoCommit               = autoCommit;
            _transactionFactory       = transactionFactory;
            _outerTransactionStrategy = outerTransactionStrategy;
            _executionContext         = executionContext;
            _child = NullTransactionStrategy.Null;

            _transaction = CreateTransaction();

            var inParameters = _executionContext.GetInParameters();

            try
            {
                EnsureCompatibility(inParameters);
            }
            catch (InvalidOperationException ex)
            {
                var message = "One or more of the input parameters passed to the WxeFunction are incompatible with the function's transaction. " + ex.Message;
                throw new WxeException(message, ex);
            }
        }
        public override void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy)
        {
            ArgumentUtility.CheckNotNull("childTransactionStrategy", childTransactionStrategy);

            if (_child != childTransactionStrategy)
            {
                throw new InvalidOperationException(
                          "Unregistering a child transaction strategy that is different from the presently registered strategy is not supported.");
            }

            _child = NullTransactionStrategy.Null;
        }
        public override sealed TransactionStrategyBase CreateChildTransactionStrategy(bool autoCommit, IWxeFunctionExecutionContext executionContext, WxeContext wxeContext)
        {
            ArgumentUtility.CheckNotNull("executionContext", executionContext);
            ArgumentUtility.CheckNotNull("wxeContext", wxeContext);

            if (!_child.IsNull)
            {
                throw new InvalidOperationException(
                          "The transaction strategy already has an active child transaction strategy. "
                          + "This child transaction strategy must first be unregistered before invoking CreateChildTransactionStrategy again.");
            }

            var childTransactionStrategy = new ChildTransactionStrategy(autoCommit, this, Transaction, executionContext);

            _child = childTransactionStrategy;
            if (_scope != null)
            {
                _child.OnExecutionPlay(wxeContext, NullExecutionListener.Null);
            }

            return(childTransactionStrategy);
        }
Beispiel #4
0
 public override void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy)
 {
     ArgumentUtility.CheckNotNull("childTransactionStrategy", childTransactionStrategy);
     //NOP
 }
Beispiel #5
0
 public abstract void UnregisterChildTransactionStrategy(TransactionStrategyBase childTransactionStrategy);
 public ChildTransactionStrategy(
     bool autoCommit, TransactionStrategyBase outerTransactionStrategy, ITransaction parentTransaction, IWxeFunctionExecutionContext executionContext)
     : base(autoCommit, parentTransaction.CreateChild, outerTransactionStrategy, executionContext)
 {
 }
 public RootTransactionStrategy(
     bool autoCommit, Func <ITransaction> transactionFactory, TransactionStrategyBase outerTransactionStrategy, IWxeFunctionExecutionContext executionContext)
     : base(autoCommit, transactionFactory, outerTransactionStrategy, executionContext)
 {
 }
Beispiel #8
0
        public NoneTransactionStrategy(TransactionStrategyBase outerTransactionStrategy)
        {
            ArgumentUtility.CheckNotNull("outerTransactionStrategy", outerTransactionStrategy);

            _outerTransactionStrategy = outerTransactionStrategy;
        }