1 //----------------------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //----------------------------------------------------------------------------- 4 5 namespace System.ServiceModel.Activities.Description 6 { 7 using System.Collections.ObjectModel; 8 using System.Runtime; 9 using System.ServiceModel.Activities; 10 using System.ServiceModel.Channels; 11 using System.ServiceModel.Description; 12 using System.ServiceModel.Dispatcher; 13 14 class WorkflowFormatterBehavior : IOperationBehavior 15 { 16 IDispatchMessageFormatter formatter; 17 IDispatchFaultFormatter faultFormatter; 18 Collection<Receive> receives; 19 20 public Collection<Receive> Receives 21 { 22 get 23 { 24 if (this.receives == null) 25 { 26 this.receives = new Collection<Receive>(); 27 } 28 return this.receives; 29 } 30 } 31 ApplyClientBehavior(OperationDescription operationDescription, System.ServiceModel.Dispatcher.ClientOperation clientOperation)32 public void ApplyClientBehavior(OperationDescription operationDescription, System.ServiceModel.Dispatcher.ClientOperation clientOperation) 33 { 34 throw FxTrace.Exception.AsError(new NotImplementedException()); 35 } 36 ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)37 public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation) 38 { 39 Fx.Assert(operationDescription != null, "OperationDescription cannot be null!"); 40 Fx.Assert(dispatchOperation != null, "DispatchOperation cannot be null!"); 41 42 if (dispatchOperation.Formatter == null) 43 { 44 return; 45 } 46 47 this.formatter = dispatchOperation.Formatter; 48 this.faultFormatter = dispatchOperation.FaultFormatter; 49 if (this.receives != null) 50 { 51 foreach (Receive receive in this.receives) 52 { 53 receive.SetFormatter(this.formatter, this.faultFormatter, dispatchOperation.IncludeExceptionDetailInFaults); 54 } 55 } 56 57 // Remove operation formatter from dispatch runtime 58 dispatchOperation.Formatter = null; 59 dispatchOperation.DeserializeRequest = false; 60 dispatchOperation.SerializeReply = false; 61 } 62 AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)63 public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) 64 { 65 } 66 Validate(OperationDescription operationDescription)67 public void Validate(OperationDescription operationDescription) 68 { 69 } 70 } 71 } 72