Browse Source

Minor refactoring in Tomcat/Jetty adapters

pull/1307/head
Rossen Stoyanchev 9 years ago
parent
commit
4aac7c2ee2
  1. 9
      spring-web/src/main/java/org/springframework/http/server/reactive/JettyHttpHandlerAdapter.java
  2. 4
      spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java
  3. 15
      spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpResponse.java
  4. 6
      spring-web/src/main/java/org/springframework/http/server/reactive/TomcatHttpHandlerAdapter.java

9
spring-web/src/main/java/org/springframework/http/server/reactive/JettyHttpHandlerAdapter.java

@ -19,14 +19,12 @@ package org.springframework.http.server.reactive; @@ -19,14 +19,12 @@ package org.springframework.http.server.reactive;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Map;
import javax.servlet.AsyncContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.HttpOutput;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
@ -68,12 +66,9 @@ public class JettyHttpHandlerAdapter extends ServletHttpHandlerAdapter { @@ -68,12 +66,9 @@ public class JettyHttpHandlerAdapter extends ServletHttpHandlerAdapter {
@Override
protected int writeToOutputStream(DataBuffer dataBuffer) throws IOException {
ServletOutputStream outputStream = getServletResponse().getOutputStream();
ByteBuffer input = dataBuffer.asByteBuffer();
int len = input.remaining();
if (outputStream.isReady() && len > 0) {
((HttpOutput) outputStream).write(input);
}
((HttpOutput) getServletResponse().getOutputStream()).write(input);
return len;
}
}

4
spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java

@ -180,6 +180,10 @@ public class ServletServerHttpRequest extends AbstractServerHttpRequest { @@ -180,6 +180,10 @@ public class ServletServerHttpRequest extends AbstractServerHttpRequest {
return Flux.from(this.bodyPublisher);
}
/**
* Read from the request body InputStream and return a DataBuffer.
* Invoked only when {@link ServletInputStream#isReady()} returns "true".
*/
protected DataBuffer readFromInputStream() throws IOException {
int read = this.request.getInputStream().read(this.buffer);
if (logger.isTraceEnabled()) {

15
spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpResponse.java

@ -132,6 +132,12 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons @@ -132,6 +132,12 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons
return processor;
}
/**
* Write the DataBuffer to the response body OutputStream.
* Invoked only when {@link ServletOutputStream#isReady()} returns "true"
* and the readable bytes in the DataBuffer is greater than 0.
* @return the number of bytes written
*/
protected int writeToOutputStream(DataBuffer dataBuffer) throws IOException {
ServletOutputStream outputStream = response.getOutputStream();
InputStream input = dataBuffer.asInputStream();
@ -285,14 +291,13 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons @@ -285,14 +291,13 @@ public class ServletServerHttpResponse extends AbstractListenerServerHttpRespons
if (this.logger.isTraceEnabled()) {
this.logger.trace("write: " + dataBuffer + " ready: " + ready);
}
if (ready) {
int total = dataBuffer.readableByteCount();
int remaining = dataBuffer.readableByteCount();
if (ready && remaining > 0) {
int written = writeToOutputStream(dataBuffer);
if (this.logger.isTraceEnabled()) {
this.logger.trace("written: " + written + " total: " + total);
this.logger.trace("written: " + written + " total: " + remaining);
}
return written == total;
return written == remaining;
}
else {
return false;

6
spring-web/src/main/java/org/springframework/http/server/reactive/TomcatHttpHandlerAdapter.java

@ -20,7 +20,6 @@ import java.io.IOException; @@ -20,7 +20,6 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Map;
import javax.servlet.AsyncContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -100,12 +99,9 @@ public class TomcatHttpHandlerAdapter extends ServletHttpHandlerAdapter { @@ -100,12 +99,9 @@ public class TomcatHttpHandlerAdapter extends ServletHttpHandlerAdapter {
@Override
protected int writeToOutputStream(DataBuffer dataBuffer) throws IOException {
ServletOutputStream outputStream = getServletResponse().getOutputStream();
ByteBuffer input = dataBuffer.asByteBuffer();
int len = input.remaining();
if (outputStream.isReady() && len > 0) {
((CoyoteOutputStream) outputStream).write(input);
}
((CoyoteOutputStream) getServletResponse().getOutputStream()).write(input);
return len;
}
}

Loading…
Cancel
Save