internal static void Set(System.Transactions.Transaction transaction, Message message)
        {
            TransactionFlowProperty propertyAndThrowIfAlreadySet = GetPropertyAndThrowIfAlreadySet(message);

            propertyAndThrowIfAlreadySet.flowedTransaction = transaction;
            message.Properties.Add("TransactionFlowProperty", propertyAndThrowIfAlreadySet);
        }
        static internal void Set(Transaction transaction, Message message)
        {
            TransactionFlowProperty property = GetPropertyAndThrowIfAlreadySet(message);

            property.flowedTransaction = transaction;
            message.Properties.Add(PropertyName, property);
        }
Esempio n. 3
0
        public void WriteIssuedTokens(Message message, MessageDirection direction)
        {
            ICollection <RequestSecurityTokenResponse> issuances = TransactionFlowProperty.TryGetIssuedTokens(message);

            if (issuances != null)
            {
                IssuedTokensHeader header = new IssuedTokensHeader(issuances, this.factory.StandardsManager);
                message.Headers.Add(header);
            }
        }
        internal static ICollection <RequestSecurityTokenResponse> TryGetIssuedTokens(Message message)
        {
            TransactionFlowProperty property = TryGet(message);

            if ((property != null) && ((property.issuedTokens != null) && (property.issuedTokens.Count != 0)))
            {
                return(property.issuedTokens);
            }
            return(null);
        }
 internal static TransactionFlowProperty Ensure(Message message)
 {
     if (message.Properties.ContainsKey("TransactionFlowProperty"))
     {
         return (TransactionFlowProperty) message.Properties["TransactionFlowProperty"];
     }
     TransactionFlowProperty property = new TransactionFlowProperty();
     message.Properties.Add("TransactionFlowProperty", property);
     return property;
 }
        internal static TransactionFlowProperty Ensure(Message message)
        {
            if (message.Properties.ContainsKey("TransactionFlowProperty"))
            {
                return((TransactionFlowProperty)message.Properties["TransactionFlowProperty"]);
            }
            TransactionFlowProperty property = new TransactionFlowProperty();

            message.Properties.Add("TransactionFlowProperty", property);
            return(property);
        }
        static internal TransactionFlowProperty Ensure(Message message)
        {
            if (message.Properties.ContainsKey(PropertyName))
            {
                return((TransactionFlowProperty)message.Properties[PropertyName]);
            }

            TransactionFlowProperty property = new TransactionFlowProperty();

            message.Properties.Add(PropertyName, property);
            return(property);
        }
        private static TransactionFlowProperty GetPropertyAndThrowIfAlreadySet(Message message)
        {
            TransactionFlowProperty property = TryGet(message);

            if (property != null)
            {
                if (property.flowedTransaction != null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(System.ServiceModel.SR.GetString("SFxTryAddMultipleTransactionsOnMessage")));
                }
                return(property);
            }
            return(new TransactionFlowProperty());
        }
        public void ReadIssuedTokens(Message message, MessageDirection direction)
        {
            TransactionFlowOption flowIssuedTokens = this.factory.FlowIssuedTokens;
            ICollection <RequestSecurityTokenResponse> issuedTokens = this.GetIssuedTokens(message);

            if ((issuedTokens != null) && (issuedTokens.Count != 0))
            {
                if (flowIssuedTokens == TransactionFlowOption.NotAllowed)
                {
                    this.FaultOnMessage(message, System.ServiceModel.SR.GetString("IssuedTokenFlowNotAllowed"), "IssuedTokenFlowNotAllowed");
                }
                foreach (RequestSecurityTokenResponse response in issuedTokens)
                {
                    TransactionFlowProperty.Ensure(message).IssuedTokens.Add(response);
                }
            }
        }
        static internal ICollection <RequestSecurityTokenResponse> TryGetIssuedTokens(Message message)
        {
            TransactionFlowProperty property = TransactionFlowProperty.TryGet(message);

            if (property == null)
            {
                return(null);
            }

            // use this when reading only, consistently return null if no tokens.
            if (property.issuedTokens == null || property.issuedTokens.Count == 0)
            {
                return(null);
            }

            return(property.issuedTokens);
        }
        static TransactionFlowProperty GetPropertyAndThrowIfAlreadySet(Message message)
        {
            TransactionFlowProperty property = TryGet(message);

            if (property != null)
            {
                if (property.flowedTransaction != null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(SR.GetString(SR.SFxTryAddMultipleTransactionsOnMessage)));
                }
            }
            else
            {
                property = new TransactionFlowProperty();
            }

            return(property);
        }
Esempio n. 12
0
        public void ReadIssuedTokens(Message message, MessageDirection direction)
        {
            TransactionFlowOption option = this.factory.FlowIssuedTokens;

            ICollection <RequestSecurityTokenResponse> issuances = this.GetIssuedTokens(message);

            if (issuances != null && issuances.Count != 0)
            {
                if (option == TransactionFlowOption.NotAllowed)
                {
                    FaultOnMessage(message, SR.GetString(SR.IssuedTokenFlowNotAllowed), FaultCodeConstants.Codes.IssuedTokenFlowNotAllowed);
                }

                foreach (RequestSecurityTokenResponse rstr in issuances)
                {
                    TransactionFlowProperty.Ensure(message).IssuedTokens.Add(rstr);
                }
            }
        }
Esempio n. 13
0
        void WriteTransactionToMessage(Message message, TransactionFlowOption txFlowOption)
        {
            Transaction transaction = TransactionFlowProperty.TryGetTransaction(message);

            if (transaction != null)
            {
                try
                {
                    this.formatter.WriteTransaction(transaction, message);
                }
                catch (TransactionException e)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ProtocolException(e.Message, e));
                }
            }
            else if (txFlowOption == TransactionFlowOption.Mandatory)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ProtocolException(SR.GetString(SR.SFxTransactionFlowRequired)));
            }
        }
        private void WriteTransactionToMessage(Message message, TransactionFlowOption txFlowOption)
        {
            Transaction transaction = TransactionFlowProperty.TryGetTransaction(message);

            if (transaction != null)
            {
                try
                {
                    this.formatter.WriteTransaction(transaction, message);
                    return;
                }
                catch (TransactionException exception)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ProtocolException(exception.Message, exception));
                }
            }
            if (txFlowOption == TransactionFlowOption.Mandatory)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ProtocolException(System.ServiceModel.SR.GetString("SFxTransactionFlowRequired")));
            }
        }
        static TransactionFlowProperty GetPropertyAndThrowIfAlreadySet(Message message)
        {
            TransactionFlowProperty property = TryGet(message);

            if (property != null)
            {
                if (property.flowedTransaction != null)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(SR.GetString(SR.SFxTryAddMultipleTransactionsOnMessage)));
                }
            }
            else
            {
                property = new TransactionFlowProperty();
            }

            return property;
        }
        static internal TransactionFlowProperty Ensure(Message message)
        {
            if (message.Properties.ContainsKey(PropertyName))
                return (TransactionFlowProperty)message.Properties[PropertyName];

            TransactionFlowProperty property = new TransactionFlowProperty();
            message.Properties.Add(PropertyName, property);
            return property;
        }