Skip to content

Commit fc9d527

Browse files
More uniform handling of response content data (stream vs. plain data)
1 parent 766766a commit fc9d527

1 file changed

Lines changed: 15 additions & 17 deletions

File tree

ng-adaptor-jetty/src/main/java/ng/adaptor/jetty/NGAdaptorJetty.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.io.ByteArrayOutputStream;
55
import java.io.IOException;
66
import java.io.InputStream;
7-
import java.io.OutputStream;
87
import java.io.UncheckedIOException;
98
import java.net.BindException;
109
import java.nio.charset.StandardCharsets;
@@ -159,27 +158,26 @@ private void doRequest( final Request jettyRequest, final Response jettyResponse
159158

160159
Content.copy( cs, jettyResponse, callback );
161160
}
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;
168164

169-
jettyResponse.getHeaders().put( "content-length", String.valueOf( contentLength ) );
165+
if( ngResponse.contentInputStream() != null ) {
166+
contentLength = ngResponse.contentInputStreamLength();
170167

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+
}
177171

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() ) );
180177
}
181178

182-
callback.succeeded();
179+
jettyResponse.getHeaders().put( "content-length", String.valueOf( contentLength ) );
180+
Content.copy( cs, jettyResponse, callback );
183181
}
184182
}
185183

0 commit comments

Comments
 (0)