< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Description.DataContractSerializerOperationBehavior
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Description/DataContractSerializerOperationBehavior.cs
Line coverage
81%
Covered lines: 74
Uncovered lines: 17
Coverable lines: 91
Total lines: 202
Line coverage: 81.3%
Branch coverage
69%
Covered branches: 25
Total branches: 36
Branch coverage: 69.4%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Description/DataContractSerializerOperationBehavior.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.Collections.Generic;
 6using System.Runtime.Serialization;
 7using System.Xml;
 8using CoreWCF.Channels;
 9using CoreWCF.Dispatcher;
 10
 11namespace CoreWCF.Description
 12{
 13    public class DataContractSerializerOperationBehavior : IOperationBehavior, IWsdlExportExtension
 14    {
 15        private readonly OperationDescription _operation;
 16        internal bool ignoreExtensionDataObject = DataContractSerializerDefaults.IgnoreExtensionDataObject;
 17        internal int maxItemsInObjectGraph = DataContractSerializerDefaults.MaxItemsInObjectGraph;
 307418
 19        public DataContractFormatAttribute DataContractFormatAttribute { get; }
 326920
 21        public DataContractSerializerOperationBehavior(OperationDescription operation)
 22            : this(operation, null)
 44123        {
 24        }
 44125
 26        public DataContractSerializerOperationBehavior(OperationDescription operation, DataContractFormatAttribute dataC
 307427        {
 28            DataContractFormatAttribute = dataContractFormatAttribute ?? new DataContractFormatAttribute();
 307429            _operation = operation;
 307430        }
 307431
 32        public DataContractSerializerOperationBehavior(OperationDescription operation,
 33            DataContractFormatAttribute dataContractFormatAttribute, bool builtInOperationBehavior)
 34            : this(operation, dataContractFormatAttribute)
 263335        {
 36            IsBuiltInOperationBehavior = builtInOperationBehavior;
 263337        }
 263338
 39        internal bool IsBuiltInOperationBehavior { get; }
 040
 41        public int MaxItemsInObjectGraph
 42        {
 43            get { return maxItemsInObjectGraph; }
 80444            set
 45            {
 46                maxItemsInObjectGraph = value;
 047                MaxItemsInObjectGraphSetExplicit = true;
 048            }
 049        }
 50
 51        internal bool MaxItemsInObjectGraphSetExplicit { get; set; }
 297852
 53        public bool IgnoreExtensionDataObject
 54        {
 55            get { return ignoreExtensionDataObject; }
 27256            set
 57            {
 58                ignoreExtensionDataObject = value;
 059                IgnoreExtensionDataObjectSetExplicit = true;
 060            }
 061        }
 62
 63        internal bool IgnoreExtensionDataObjectSetExplicit { get; set; }
 297864
 65        public ISerializationSurrogateProvider SerializationSurrogateProvider { get; set; }
 53566
 67        public DataContractResolver DataContractResolver { get; set; }
 53468
 69        public virtual XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes)
 70        {
 71            XmlDictionary dictionary = new XmlDictionary(2);
 972            DataContractSerializerSettings settings = new DataContractSerializerSettings();
 973            settings.RootName = dictionary.Add(name);
 974            settings.RootNamespace = dictionary.Add(ns);
 975            settings.KnownTypes = knownTypes;
 976            settings.MaxItemsInObjectGraph = MaxItemsInObjectGraph;
 977            settings.DataContractResolver = DataContractResolver;
 978            DataContractSerializer dcs = new DataContractSerializer(type, settings);
 979            if (SerializationSurrogateProvider != null)
 980            {
 81                dcs.SetSerializationSurrogateProvider(SerializationSurrogateProvider);
 182            }
 83            return dcs;
 984        }
 85
 86        public virtual XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns,
 87        {
 88            DataContractSerializerSettings settings = new DataContractSerializerSettings();
 52389            settings.RootName = name;
 52390            settings.RootNamespace = ns;
 52391            settings.KnownTypes = knownTypes;
 52392            settings.MaxItemsInObjectGraph = MaxItemsInObjectGraph;
 52393            settings.DataContractResolver = DataContractResolver;
 52394            DataContractSerializer dcs = new DataContractSerializer(type, settings);
 52395            if (SerializationSurrogateProvider != null)
 52396            {
 97                dcs.SetSerializationSurrogateProvider(SerializationSurrogateProvider);
 098            }
 99            return dcs;
 523100        }
 101
 102        internal object GetFormatter(OperationDescription operation, out bool formatRequest, out bool formatReply, bool 
 103        {
 104            MessageDescription request = operation.Messages[0];
 105            MessageDescription response = null;
 106            if (operation.Messages.Count == 2)
 107            {
 108                response = operation.Messages[1];
 109            }
 110
 111            formatRequest = (request != null) && !request.IsUntypedMessage;
 112            formatReply = (response != null) && !response.IsUntypedMessage;
 113
 114            if (formatRequest || formatReply)
 115            {
 1116                if (PrimitiveOperationFormatter.IsContractSupported(operation))
 117                {
 118                    return new PrimitiveOperationFormatter(operation, DataContractFormatAttribute.Style == OperationForm
 119                }
 120                else
 2815121                {
 2815122                    return new DataContractSerializerOperationFormatter(operation, DataContractFormatAttribute, this);
 2815123                }
 124            }
 2491125
 126            return null;
 127        }
 2815128
 2815129
 130        void IOperationBehavior.Validate(OperationDescription description)
 2815131        {
 132        }
 2789133
 134        void IOperationBehavior.AddBindingParameters(OperationDescription description, BindingParameterCollection parame
 1972135        {
 136        }
 137
 138        void IOperationBehavior.ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch)
 817139        {
 140            if (description == null)
 141            {
 142                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(description));
 26143            }
 144
 145            if (dispatch == null)
 146            {
 147                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(dispatch));
 148            }
 2595149
 150            if (dispatch.Formatter != null)
 151            {
 152                return;
 3128153            }
 154
 155            dispatch.Formatter = (IDispatchMessageFormatter)GetFormatter(description, out bool formatRequest, out bool f
 156            dispatch.DeserializeRequest = formatRequest;
 2976157            dispatch.SerializeReply = formatReply;
 158        }
 0159
 160        void IOperationBehavior.ApplyClientBehavior(OperationDescription description, ClientOperation proxy)
 161        {
 2976162            if (description == null)
 163            {
 0164                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(description));
 165            }
 166
 2976167            if (proxy == null)
 168            {
 163169                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(proxy));
 170            }
 171
 2813172            if (proxy.Formatter != null)
 2813173            {
 2813174                return;
 2813175            }
 176
 177            proxy.Formatter = (IClientMessageFormatter)GetFormatter(description, out bool formatRequest, out bool format
 178            proxy.SerializeRequest = formatRequest;
 2179            proxy.DeserializeReply = formatReply;
 180        }
 0181
 182        void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext endpointContext)
 183        {
 2184            if (exporter == null)
 185                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(exporter));
 0186            if (endpointContext == null)
 187                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(endpointContext));
 188
 2189            MessageContractExporter.ExportMessageBinding(exporter, endpointContext, typeof(DataContractSerializerMessage
 190        }
 0191
 192        void IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext contractContext)
 193        {
 2194            if (exporter == null)
 2195                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(exporter));
 2196            if (contractContext == null)
 2197                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(contractContext));
 198
 199            new DataContractSerializerMessageContractExporter(exporter, contractContext, _operation, this).ExportMessage
 200        }
 150201    }
 0202}

Methods/Properties

.ctor(CoreWCF.Description.OperationDescription,CoreWCF.DataContractFormatAttribute)
DataContractFormatAttribute()
.ctor(CoreWCF.Description.OperationDescription)
.ctor(CoreWCF.Description.OperationDescription,CoreWCF.DataContractFormatAttribute,System.Boolean)
IsBuiltInOperationBehavior()
MaxItemsInObjectGraph()
MaxItemsInObjectGraph(System.Int32)
MaxItemsInObjectGraphSetExplicit()
IgnoreExtensionDataObject()
IgnoreExtensionDataObject(System.Boolean)
IgnoreExtensionDataObjectSetExplicit()
SerializationSurrogateProvider()
DataContractResolver()
CreateSerializer(System.Type,System.String,System.String,System.Collections.Generic.IList`1<System.Type>)
CreateSerializer(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IList`1<System.Type>)
CreateAotSerializer(System.Type,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Collections.Generic.IList`1<System.Type>)
GetFormatter(CoreWCF.Description.OperationDescription,System.Boolean&,System.Boolean&,System.Boolean)
CoreWCF.Description.IOperationBehavior.Validate(CoreWCF.Description.OperationDescription)
CoreWCF.Description.IOperationBehavior.AddBindingParameters(CoreWCF.Description.OperationDescription,CoreWCF.Channels.BindingParameterCollection)
CoreWCF.Description.IOperationBehavior.ApplyDispatchBehavior(CoreWCF.Description.OperationDescription,CoreWCF.Dispatcher.DispatchOperation)
CoreWCF.Description.IOperationBehavior.ApplyClientBehavior(CoreWCF.Description.OperationDescription,CoreWCF.Dispatcher.ClientOperation)
CoreWCF.Description.IWsdlExportExtension.ExportEndpoint(CoreWCF.Description.WsdlExporter,CoreWCF.Description.WsdlEndpointConversionContext)
CoreWCF.Description.IWsdlExportExtension.ExportContract(CoreWCF.Description.WsdlExporter,CoreWCF.Description.WsdlContractConversionContext)