Issue #1944: Move DelegatingStream to internal namespace and rename to NonDisposableStream.

This commit is contained in:
sornaks 2015-02-03 11:25:23 -08:00
parent c669f7a612
commit 2c5ae68ab6
9 changed files with 33 additions and 26 deletions

View File

@ -4,6 +4,7 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json;
@ -68,8 +69,8 @@ namespace Microsoft.AspNet.Mvc
var response = context.ActionContext.HttpContext.Response;
var selectedEncoding = context.SelectedEncoding;
using (var delegatingStream = new DelegatingStream(response.Body))
using (var writer = new StreamWriter(delegatingStream, selectedEncoding, 1024, leaveOpen: true))
using (var nonDisposableStream = new NonDisposableStream(response.Body))
using (var writer = new StreamWriter(nonDisposableStream, selectedEncoding, 1024, leaveOpen: true))
{
WriteObject(writer, context.Object);
}

View File

@ -8,22 +8,22 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.AspNet.Mvc
namespace Microsoft.AspNet.Mvc.Internal
{
/// <summary>
/// Stream that delegates to an inner stream.
/// This Stream is present so that the inner stream is not closed
/// even when Close() or Dispose() is called.
/// </summary>
public class DelegatingStream : Stream
public class NonDisposableStream : Stream
{
private readonly Stream _innerStream;
/// <summary>
/// Initializes a new <see cref="DelegatingStream"/>.
/// Initializes a new <see cref="NonDisposableStream"/>.
/// </summary>
/// <param name="innerStream">The stream which should not be closed or flushed.</param>
public DelegatingStream([NotNull] Stream innerStream)
public NonDisposableStream([NotNull] Stream innerStream)
{
_innerStream = innerStream;
}

View File

@ -10,6 +10,7 @@ using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc.Xml
@ -168,7 +169,7 @@ namespace Microsoft.AspNet.Mvc.Xml
{
var request = context.ActionContext.HttpContext.Request;
using (var xmlReader = CreateXmlReader(new DelegatingStream(request.Body)))
using (var xmlReader = CreateXmlReader(new NonDisposableStream(request.Body)))
{
var type = GetSerializableType(context.ModelType);

View File

@ -7,6 +7,7 @@ using System.IO;
using System.Runtime.Serialization;
using System.Threading.Tasks;
using System.Xml;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc.Xml
@ -161,7 +162,7 @@ namespace Microsoft.AspNet.Mvc.Xml
var innerStream = context.ActionContext.HttpContext.Response.Body;
using (var outputStream = new DelegatingStream(innerStream))
using (var outputStream = new NonDisposableStream(innerStream))
using (var xmlWriter = CreateXmlWriter(outputStream, tempWriterSettings))
{
var obj = context.Object;

View File

@ -10,6 +10,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc.Xml
@ -146,7 +147,7 @@ namespace Microsoft.AspNet.Mvc.Xml
{
var request = context.ActionContext.HttpContext.Request;
using (var xmlReader = CreateXmlReader(new DelegatingStream(request.Body)))
using (var xmlReader = CreateXmlReader(new NonDisposableStream(request.Body)))
{
var type = GetSerializableType(context.ModelType);

View File

@ -7,6 +7,7 @@ using System.IO;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace Microsoft.AspNet.Mvc.Xml
@ -137,7 +138,7 @@ namespace Microsoft.AspNet.Mvc.Xml
var innerStream = context.ActionContext.HttpContext.Response.Body;
using (var outputStream = new DelegatingStream(innerStream))
using (var outputStream = new NonDisposableStream(innerStream))
using (var xmlWriter = CreateXmlWriter(outputStream, tempWriterSettings))
{
var obj = context.Object;

View File

@ -7,19 +7,19 @@ using System.Threading.Tasks;
using Microsoft.AspNet.Mvc.Core;
using Xunit;
namespace Microsoft.AspNet.Mvc
namespace Microsoft.AspNet.Mvc.Internal
{
public class DelegatingStreamTests
public class NonDisposableStreamTest
{
[Fact]
public void InnerStreamIsOpenOnClose()
{
// Arrange
var innerStream = new MemoryStream();
var delegatingStream = new DelegatingStream(innerStream);
var nonDisposableStream = new NonDisposableStream(innerStream);
// Act
delegatingStream.Close();
nonDisposableStream.Close();
// Assert
Assert.True(innerStream.CanRead);
@ -30,10 +30,10 @@ namespace Microsoft.AspNet.Mvc
{
// Arrange
var innerStream = new MemoryStream();
var delegatingStream = new DelegatingStream(innerStream);
var nonDisposableStream = new NonDisposableStream(innerStream);
// Act
delegatingStream.Dispose();
nonDisposableStream.Dispose();
// Assert
Assert.True(innerStream.CanRead);
@ -43,10 +43,10 @@ namespace Microsoft.AspNet.Mvc
public void InnerStreamIsNotFlushedOnDispose()
{
var stream = FlushReportingStream.GetThrowingStream();
var delegatingStream = new DelegatingStream(stream);
var nonDisposableStream = new NonDisposableStream(stream);
// Act & Assert
delegatingStream.Dispose();
nonDisposableStream.Dispose();
}
[Fact]
@ -55,10 +55,10 @@ namespace Microsoft.AspNet.Mvc
// Arrange
var stream = FlushReportingStream.GetThrowingStream();
var delegatingStream = new DelegatingStream(stream);
var nonDisposableStream = new NonDisposableStream(stream);
// Act & Assert
delegatingStream.Close();
nonDisposableStream.Close();
}
[Fact]
@ -67,10 +67,10 @@ namespace Microsoft.AspNet.Mvc
// Arrange
var stream = FlushReportingStream.GetThrowingStream();
var delegatingStream = new DelegatingStream(stream);
var nonDisposableStream = new NonDisposableStream(stream);
// Act & Assert
delegatingStream.Flush();
nonDisposableStream.Flush();
}
[Fact]
@ -79,10 +79,10 @@ namespace Microsoft.AspNet.Mvc
// Arrange
var stream = FlushReportingStream.GetThrowingStream();
var delegatingStream = new DelegatingStream(stream);
var nonDisposableStream = new NonDisposableStream(stream);
// Act & Assert
await delegatingStream.FlushAsync();
await nonDisposableStream.FlushAsync();
}
}
}

View File

@ -8,6 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using ConnegWebSite.Models;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace ConnegWebSite
@ -38,7 +39,7 @@ namespace ConnegWebSite
builder.AppendLine();
builder.AppendLine("END:VCARD");
var responseStream = new DelegatingStream(context.ActionContext.HttpContext.Response.Body);
var responseStream = new NonDisposableStream(context.ActionContext.HttpContext.Response.Body);
using (var writer = new StreamWriter(responseStream, context.SelectedEncoding, bufferSize: 1024))
{
await writer.WriteAsync(builder.ToString());

View File

@ -8,6 +8,7 @@ using System.Text;
using System.Threading.Tasks;
using ConnegWebSite.Models;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Internal;
using Microsoft.Net.Http.Headers;
namespace ConnegWebSite
@ -41,7 +42,7 @@ namespace ConnegWebSite
builder.AppendLine();
builder.AppendLine("END:VCARD");
var responseStream = new DelegatingStream(context.ActionContext.HttpContext.Response.Body);
var responseStream = new NonDisposableStream(context.ActionContext.HttpContext.Response.Body);
using (var writer = new StreamWriter(responseStream, context.SelectedEncoding, bufferSize: 1024))
{
await writer.WriteAsync(builder.ToString());