diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/xml/MarshallingView.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/xml/MarshallingView.java index cc53dd54ef..f81d782dbb 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/xml/MarshallingView.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/xml/MarshallingView.java @@ -19,7 +19,6 @@ package org.springframework.web.servlet.view.xml; import java.io.ByteArrayOutputStream; import java.util.Map; import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.transform.stream.StreamResult; @@ -27,8 +26,9 @@ import javax.xml.transform.stream.StreamResult; import org.springframework.beans.BeansException; import org.springframework.oxm.Marshaller; import org.springframework.util.Assert; +import org.springframework.util.FileCopyUtils; import org.springframework.web.servlet.View; -import org.springframework.web.servlet.view.AbstractUrlBasedView; +import org.springframework.web.servlet.view.AbstractView; /** * Spring-MVC {@link View} that allows for response context to be rendered as the result of marshalling by a {@link @@ -41,9 +41,11 @@ import org.springframework.web.servlet.view.AbstractUrlBasedView; * @author Arjen Poutsma * @since 3.0 */ -public class MarshallingView extends AbstractUrlBasedView { +public class MarshallingView extends AbstractView { - /** Default content type. Overridable as bean property. */ + /** + * Default content type. Overridable as bean property. + */ public static final String DEFAULT_CONTENT_TYPE = "application/xml"; private Marshaller marshaller; @@ -58,14 +60,18 @@ public class MarshallingView extends AbstractUrlBasedView { setContentType(DEFAULT_CONTENT_TYPE); } - /** Constructs a new MarshallingView with the given {@link Marshaller} set. */ + /** + * Constructs a new MarshallingView with the given {@link Marshaller} set. + */ public MarshallingView(Marshaller marshaller) { Assert.notNull(marshaller, "'marshaller' must not be null"); setContentType(DEFAULT_CONTENT_TYPE); this.marshaller = marshaller; } - /** Sets the {@link Marshaller} to be used by this view. */ + /** + * Sets the {@link Marshaller} to be used by this view. + */ public void setMarshaller(Marshaller marshaller) { Assert.notNull(marshaller, "'marshaller' must not be null"); this.marshaller = marshaller; @@ -99,9 +105,7 @@ public class MarshallingView extends AbstractUrlBasedView { response.setContentType(getContentType()); response.setContentLength(bos.size()); - ServletOutputStream out = response.getOutputStream(); - bos.writeTo(out); - out.flush(); + FileCopyUtils.copy(bos.toByteArray(), response.getOutputStream()); } /** diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/xml/MarshallingViewTest.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/xml/MarshallingViewTest.java index 352336dfd2..d962dfce3e 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/xml/MarshallingViewTest.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/view/xml/MarshallingViewTest.java @@ -44,7 +44,7 @@ public class MarshallingViewTest { } @Test - public void testGetContentType() { + public void getContentType() { assertEquals("Invalid content type", "application/xml", view.getContentType()); }