public static MediaTypeFormatter CreateTracer(MediaTypeFormatter formatter, ITraceWriter traceWriter, HttpRequestMessage request) { // If we have been asked to wrap a tracer around a formatter, it could be // already wrapped, and there is nothing to do. But if we see it is a tracer // that is not associated with a request, we wrap it into a new tracer that // does have a request. The only formatter tracers without requests are the // ones in the default MediaTypeFormatterCollection in the HttpConfiguration. IFormatterTracer formatterTracer = formatter as IFormatterTracer; if (formatterTracer != null) { if (formatterTracer.Request == request) { return formatter; } formatter = formatterTracer.InnerFormatter; } MediaTypeFormatter tracer = null; // We special-case Xml, Json and FormUrlEncoded formatters because we expect to be able // to find them with IsAssignableFrom in the MediaTypeFormatterCollection. if (formatter is XmlMediaTypeFormatter) { tracer = new XmlMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is JsonMediaTypeFormatter) { tracer = new JsonMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is FormUrlEncodedMediaTypeFormatter) { tracer = new FormUrlEncodedMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is BufferedMediaTypeFormatter) { tracer = new BufferedMediaTypeFormatterTracer(formatter, traceWriter, request); } else { tracer = new MediaTypeFormatterTracer(formatter, traceWriter, request); } // Copy SupportedMediaTypes and MediaTypeMappings because they are publically visible tracer.SupportedMediaTypes.Clear(); foreach (MediaTypeHeaderValue mediaType in formatter.SupportedMediaTypes) { tracer.SupportedMediaTypes.Add(mediaType); } tracer.MediaTypeMappings.Clear(); foreach (MediaTypeMapping mapping in formatter.MediaTypeMappings) { tracer.MediaTypeMappings.Add(mapping); } return tracer; }
public static MediaTypeFormatter CreateTracer(MediaTypeFormatter formatter, ITraceWriter traceWriter, HttpRequestMessage request) { // If we have been asked to wrap a tracer around a formatter, it could be // already wrapped, and there is nothing to do. But if we see it is a tracer // that is not associated with a request, we wrap it into a new tracer that // does have a request. The only formatter tracers without requests are the // ones in the default MediaTypeFormatterCollection in the HttpConfiguration. IFormatterTracer formatterTracer = formatter as IFormatterTracer; if (formatterTracer != null) { if (formatterTracer.Request == request) { return(formatter); } formatter = formatterTracer.InnerFormatter; } MediaTypeFormatter tracer = null; // We special-case Xml, Json and FormUrlEncoded formatters because we expect to be able // to find them with IsAssignableFrom in the MediaTypeFormatterCollection. if (formatter is XmlMediaTypeFormatter) { tracer = new XmlMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is JsonMediaTypeFormatter) { tracer = new JsonMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is FormUrlEncodedMediaTypeFormatter) { tracer = new FormUrlEncodedMediaTypeFormatterTracer(formatter, traceWriter, request); } else if (formatter is BufferedMediaTypeFormatter) { tracer = new BufferedMediaTypeFormatterTracer(formatter, traceWriter, request); } else { tracer = new MediaTypeFormatterTracer(formatter, traceWriter, request); } // Copy SupportedMediaTypes and MediaTypeMappings because they are publically visible tracer.SupportedMediaTypes.Clear(); foreach (MediaTypeHeaderValue mediaType in formatter.SupportedMediaTypes) { tracer.SupportedMediaTypes.Add(mediaType); } tracer.MediaTypeMappings.Clear(); foreach (MediaTypeMapping mapping in formatter.MediaTypeMappings) { tracer.MediaTypeMappings.Add(mapping); } return(tracer); }
public void SerializerSettings_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); JsonMediaTypeFormatter innerFormatter = new JsonMediaTypeFormatter() { SerializerSettings = serializerSettings }; JsonMediaTypeFormatterTracer tracer = new JsonMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Same(innerFormatter.SerializerSettings, tracer.SerializerSettings); }
public void Indent_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); JsonMediaTypeFormatter innerFormatter = new JsonMediaTypeFormatter(); innerFormatter.Indent = !innerFormatter.Indent; JsonMediaTypeFormatterTracer tracer = new JsonMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Equal(innerFormatter.Indent, tracer.Indent); }
public void MaxDepth_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); JsonMediaTypeFormatter innerFormatter = new JsonMediaTypeFormatter(); innerFormatter.MaxDepth = innerFormatter.MaxDepth + 1; JsonMediaTypeFormatterTracer tracer = new JsonMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Equal(innerFormatter.MaxDepth, tracer.MaxDepth); }
public void UseDataContractJsonSerializer_Uses_Inners() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); JsonMediaTypeFormatter innerFormatter = new JsonMediaTypeFormatter(); innerFormatter.UseDataContractJsonSerializer = !innerFormatter.UseDataContractJsonSerializer; JsonMediaTypeFormatterTracer tracer = new JsonMediaTypeFormatterTracer(innerFormatter, new TestTraceWriter(), request); // Act & Assert Assert.Equal(innerFormatter.UseDataContractJsonSerializer, tracer.UseDataContractJsonSerializer); }
public void Decorator_GetInner_On_JsonMediaTypeFormatterTracerTest_Returns_JsonMediaTypeFormatter() { // Arrange JsonMediaTypeFormatter expectedInner = new JsonMediaTypeFormatter(); JsonMediaTypeFormatterTracer productUnderTest = new JsonMediaTypeFormatterTracer(expectedInner, new TestTraceWriter(), new HttpRequestMessage()); // Act JsonMediaTypeFormatter actualInner = Decorator.GetInner(productUnderTest as JsonMediaTypeFormatter); // Assert Assert.Same(expectedInner, actualInner); }
public void Inner_Property_On_JsonMediaTypeFormatterTracerTest_Returns_JsonMediaTypeFormatter() { // Arrange JsonMediaTypeFormatter expectedInner = new JsonMediaTypeFormatter(); JsonMediaTypeFormatterTracer productUnderTest = new JsonMediaTypeFormatterTracer(expectedInner, new TestTraceWriter(), new HttpRequestMessage()); // Act JsonMediaTypeFormatter actualInner = productUnderTest.Inner; // Assert Assert.Same(expectedInner, actualInner); }
public static MediaTypeFormatter CreateTracer(MediaTypeFormatter formatter, ITraceWriter traceWriter, HttpRequestMessage request) { // If we have been asked to wrap a tracer around a formatter, it could be // already wrapped, and there is nothing to do. But if we see it is a tracer // that is not associated with a request, we wrap it into a new tracer that // does have a request. The only formatter tracers without requests are the // ones in the default MediaTypeFormatterCollection in the HttpConfiguration. IFormatterTracer formatterTracer = formatter as IFormatterTracer; if (formatterTracer != null) { if (formatterTracer.Request == request) { return(formatter); } formatter = formatterTracer.InnerFormatter; } MediaTypeFormatter tracer = null; XmlMediaTypeFormatter xmlFormatter = formatter as XmlMediaTypeFormatter; JsonMediaTypeFormatter jsonFormatter = formatter as JsonMediaTypeFormatter; FormUrlEncodedMediaTypeFormatter formUrlFormatter = formatter as FormUrlEncodedMediaTypeFormatter; BufferedMediaTypeFormatter bufferedFormatter = formatter as BufferedMediaTypeFormatter; // We special-case Xml, Json and FormUrlEncoded formatters because we expect to be able // to find them with IsAssignableFrom in the MediaTypeFormatterCollection. if (xmlFormatter != null) { tracer = new XmlMediaTypeFormatterTracer(xmlFormatter, traceWriter, request); } else if (jsonFormatter != null) { tracer = new JsonMediaTypeFormatterTracer(jsonFormatter, traceWriter, request); } else if (formUrlFormatter != null) { tracer = new FormUrlEncodedMediaTypeFormatterTracer(formUrlFormatter, traceWriter, request); } else if (bufferedFormatter != null) { tracer = new BufferedMediaTypeFormatterTracer(bufferedFormatter, traceWriter, request); } else { tracer = new MediaTypeFormatterTracer(formatter, traceWriter, request); } return(tracer); }
public static MediaTypeFormatter CreateTracer(MediaTypeFormatter formatter, ITraceWriter traceWriter, HttpRequestMessage request) { // If we have been asked to wrap a tracer around a formatter, it could be // already wrapped, and there is nothing to do. But if we see it is a tracer // that is not associated with a request, we wrap it into a new tracer that // does have a request. The only formatter tracers without requests are the // ones in the default MediaTypeFormatterCollection in the HttpConfiguration. IFormatterTracer formatterTracer = formatter as IFormatterTracer; if (formatterTracer != null) { if (formatterTracer.Request == request) { return formatter; } formatter = formatterTracer.InnerFormatter; } MediaTypeFormatter tracer = null; XmlMediaTypeFormatter xmlFormatter = formatter as XmlMediaTypeFormatter; JsonMediaTypeFormatter jsonFormatter = formatter as JsonMediaTypeFormatter; FormUrlEncodedMediaTypeFormatter formUrlFormatter = formatter as FormUrlEncodedMediaTypeFormatter; BufferedMediaTypeFormatter bufferedFormatter = formatter as BufferedMediaTypeFormatter; // We special-case Xml, Json and FormUrlEncoded formatters because we expect to be able // to find them with IsAssignableFrom in the MediaTypeFormatterCollection. if (xmlFormatter != null) { tracer = new XmlMediaTypeFormatterTracer(xmlFormatter, traceWriter, request); } else if (jsonFormatter != null) { tracer = new JsonMediaTypeFormatterTracer(jsonFormatter, traceWriter, request); } else if (formUrlFormatter != null) { tracer = new FormUrlEncodedMediaTypeFormatterTracer(formUrlFormatter, traceWriter, request); } else if (bufferedFormatter != null) { tracer = new BufferedMediaTypeFormatterTracer(bufferedFormatter, traceWriter, request); } else { tracer = new MediaTypeFormatterTracer(formatter, traceWriter, request); } return tracer; }