|
4 | 4 | import java.io.ByteArrayOutputStream; |
5 | 5 | import java.io.IOException; |
6 | 6 | import java.io.InputStream; |
7 | | -import java.io.OutputStream; |
8 | 7 | import java.io.UncheckedIOException; |
9 | 8 | import java.net.BindException; |
10 | 9 | import java.nio.charset.StandardCharsets; |
@@ -159,27 +158,26 @@ private void doRequest( final Request jettyRequest, final Response jettyResponse |
159 | 158 |
|
160 | 159 | Content.copy( cs, jettyResponse, callback ); |
161 | 160 | } |
162 | | - else if( ngResponse.contentInputStream() != null ) { |
163 | | - final long contentLength = ngResponse.contentInputStreamLength(); // If an InputStream is present, the stream's length must be present as well |
164 | | - |
165 | | - if( contentLength == -1 ) { |
166 | | - throw new IllegalArgumentException( "NGResponse.contentInputStream() is set but contentInputLength has not been set. You must provide the content length when serving an InputStream" ); |
167 | | - } |
| 161 | + else { |
| 162 | + final Content.Source cs; |
| 163 | + final long contentLength; |
168 | 164 |
|
169 | | - jettyResponse.getHeaders().put( "content-length", String.valueOf( contentLength ) ); |
| 165 | + if( ngResponse.contentInputStream() != null ) { |
| 166 | + contentLength = ngResponse.contentInputStreamLength(); |
170 | 167 |
|
171 | | - final Content.Source cs = Content.Source.from( ngResponse.contentInputStream() ); |
172 | | - Content.copy( cs, jettyResponse, callback ); |
173 | | - } |
174 | | - else { |
175 | | - final long contentLength = ngResponse.contentBytesLength(); |
176 | | - jettyResponse.getHeaders().put( "content-length", String.valueOf( contentLength ) ); |
| 168 | + if( contentLength == -1 ) { |
| 169 | + throw new IllegalArgumentException( "NGResponse.contentInputStream() is set but contentInputLength has not been set. You must provide the content length when serving an InputStream" ); |
| 170 | + } |
177 | 171 |
|
178 | | - try( final OutputStream out = Response.asBufferedOutputStream( jettyRequest, jettyResponse )) { |
179 | | - ngResponse.contentByteStream().writeTo( out ); |
| 172 | + cs = Content.Source.from( ngResponse.contentInputStream() ); |
| 173 | + } |
| 174 | + else { |
| 175 | + contentLength = ngResponse.contentBytesLength(); |
| 176 | + cs = Content.Source.from( new ByteArrayInputStream( ngResponse.contentBytes() ) ); |
180 | 177 | } |
181 | 178 |
|
182 | | - callback.succeeded(); |
| 179 | + jettyResponse.getHeaders().put( "content-length", String.valueOf( contentLength ) ); |
| 180 | + Content.copy( cs, jettyResponse, callback ); |
183 | 181 | } |
184 | 182 | } |
185 | 183 |
|
|
0 commit comments