GetConfig() public method

public GetConfig ( Type implementation ) : TransactionConfig
implementation System.Type
return TransactionConfig
Exemplo n.º 1
0
        public object Intercept(IMethodInvocation invocation, params object[] args)
        {
            if (_transactionManager.CurrentTransaction != null)
            {
                // No support for nested transactions
                // is necessary
                return(invocation.Proceed(args));
            }

            TransactionConfig config =
                _transactionConfHolder.GetConfig(
                    invocation.Method.DeclaringType);

            if (config != null && config.IsMethodTransactional(invocation.Method))
            {
                ITransaction transaction =
                    _transactionManager.CreateTransaction();

                object value = null;

                try
                {
                    value = invocation.Proceed(args);

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    throw ex;
                }
                finally
                {
                    _transactionManager.Release(transaction);
                }

                return(value);
            }
            else
            {
                return(invocation.Proceed(args));
            }
        }