Issue #1944: Move DelegatingStream to internal namespace and rename to NonDisposableStream.
This commit is contained in:
parent
c669f7a612
commit
2c5ae68ab6
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Reference in New Issue