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