Skip to content

Commit

Permalink
Refactoring to simplify code
Browse files Browse the repository at this point in the history
Provide Processor with access to the associated Protocol

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1774168 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
markt-asf committed Dec 14, 2016
1 parent 98466fd commit b2f79d2
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 29 deletions.
4 changes: 2 additions & 2 deletions java/org/apache/coyote/AbstractProcessor.java
Expand Up @@ -59,8 +59,8 @@ public abstract class AbstractProcessor extends AbstractProcessorLight implement
private ErrorState errorState = ErrorState.NONE; private ErrorState errorState = ErrorState.NONE;




public AbstractProcessor(AbstractEndpoint<?,?> endpoint) { public AbstractProcessor(AbstractProtocol<?> protocol) {
this(endpoint, new Request(), new Response()); this(protocol.getEndpoint(), new Request(), new Response());
} }




Expand Down
2 changes: 1 addition & 1 deletion java/org/apache/coyote/ajp/AbstractAjpProtocol.java
Expand Up @@ -184,7 +184,7 @@ public UpgradeProtocol[] findUpgradeProtocols() {


@Override @Override
protected Processor createProcessor() { protected Processor createProcessor() {
AjpProcessor processor = new AjpProcessor(getPacketSize(), getEndpoint()); AjpProcessor processor = new AjpProcessor(this);
processor.setAdapter(getAdapter()); processor.setAdapter(getAdapter());
processor.setAjpFlush(getAjpFlush()); processor.setAjpFlush(getAjpFlush());
processor.setTomcatAuthentication(getTomcatAuthentication()); processor.setTomcatAuthentication(getTomcatAuthentication());
Expand Down
6 changes: 3 additions & 3 deletions java/org/apache/coyote/ajp/AjpProcessor.java
Expand Up @@ -41,7 +41,6 @@
import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.buf.HexUtils;
import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.MimeHeaders;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState; import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
import org.apache.tomcat.util.net.ApplicationBufferHandler; import org.apache.tomcat.util.net.ApplicationBufferHandler;
import org.apache.tomcat.util.net.SSLSupport; import org.apache.tomcat.util.net.SSLSupport;
Expand Down Expand Up @@ -243,10 +242,11 @@ public class AjpProcessor extends AbstractProcessor {


// ------------------------------------------------------------ Constructor // ------------------------------------------------------------ Constructor


public AjpProcessor(int packetSize, AbstractEndpoint<?,?> endpoint) { public AjpProcessor(AbstractAjpProtocol<?> protocol) {


super(endpoint); super(protocol);


int packetSize = protocol.getPacketSize();
// Calculate maximum chunk size as packetSize may have been changed from // Calculate maximum chunk size as packetSize may have been changed from
// the default (Constants.MAX_PACKET_SIZE) // the default (Constants.MAX_PACKET_SIZE)
this.outputMaxChunkSize = this.outputMaxChunkSize =
Expand Down
7 changes: 4 additions & 3 deletions java/org/apache/coyote/http11/AbstractHttp11Protocol.java
Expand Up @@ -272,6 +272,9 @@ public void setAllowedTrailerHeaders(String commaSeparatedHeaders) {
allowedTrailerHeaders.removeAll(toRemove); allowedTrailerHeaders.removeAll(toRemove);
} }
} }
protected Set<String> getAllowedTrailerHeadersInternal() {
return allowedTrailerHeaders;
}
public String getAllowedTrailerHeaders() { public String getAllowedTrailerHeaders() {
// Chances of a size change between these lines are small enough that a // Chances of a size change between these lines are small enough that a
// sync is unnecessary. // sync is unnecessary.
Expand Down Expand Up @@ -636,9 +639,7 @@ public void setTrustManagerClassName(String trustManagerClassName) {


@Override @Override
protected Processor createProcessor() { protected Processor createProcessor() {
Http11Processor processor = new Http11Processor(getMaxHttpHeaderSize(), getEndpoint(), Http11Processor processor = new Http11Processor(this);
getMaxTrailerSize(), allowedTrailerHeaders, getMaxExtensionSize(),
getMaxSwallowSize(), httpUpgradeProtocols);
processor.setAdapter(getAdapter()); processor.setAdapter(getAdapter());
processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests()); processor.setMaxKeepAliveRequests(getMaxKeepAliveRequests());
processor.setConnectionUploadTimeout(getConnectionUploadTimeout()); processor.setConnectionUploadTimeout(getConnectionUploadTimeout());
Expand Down
32 changes: 12 additions & 20 deletions java/org/apache/coyote/http11/Http11Processor.java
Expand Up @@ -21,8 +21,6 @@
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern; import java.util.regex.Pattern;


import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
Expand Down Expand Up @@ -54,7 +52,6 @@
import org.apache.tomcat.util.http.FastHttpDateFormat; import org.apache.tomcat.util.http.FastHttpDateFormat;
import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.MimeHeaders;
import org.apache.tomcat.util.log.UserDataHelper; import org.apache.tomcat.util.log.UserDataHelper;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState; import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
import org.apache.tomcat.util.net.SSLSupport; import org.apache.tomcat.util.net.SSLSupport;
import org.apache.tomcat.util.net.SendfileDataBase; import org.apache.tomcat.util.net.SendfileDataBase;
Expand All @@ -71,6 +68,8 @@ public class Http11Processor extends AbstractProcessor {
private static final StringManager sm = StringManager.getManager(Http11Processor.class); private static final StringManager sm = StringManager.getManager(Http11Processor.class);




private final AbstractHttp11Protocol<?> protocol;

private final UserDataHelper userDataHelper; private final UserDataHelper userDataHelper;


/** /**
Expand Down Expand Up @@ -215,32 +214,27 @@ public class Http11Processor extends AbstractProcessor {
protected SendfileDataBase sendfileData = null; protected SendfileDataBase sendfileData = null;




/** public Http11Processor(AbstractHttp11Protocol<?> protocol) {
* UpgradeProtocol information
*/
private final Map<String,UpgradeProtocol> httpUpgradeProtocols;


super(protocol);
this.protocol = protocol;


public Http11Processor(int maxHttpHeaderSize, AbstractEndpoint<?,?> endpoint,int maxTrailerSize,
Set<String> allowedTrailerHeaders, int maxExtensionSize, int maxSwallowSize,
Map<String,UpgradeProtocol> httpUpgradeProtocols) {

super(endpoint);
userDataHelper = new UserDataHelper(log); userDataHelper = new UserDataHelper(log);


inputBuffer = new Http11InputBuffer(request, maxHttpHeaderSize); inputBuffer = new Http11InputBuffer(request, protocol.getMaxHttpHeaderSize());
request.setInputBuffer(inputBuffer); request.setInputBuffer(inputBuffer);


outputBuffer = new Http11OutputBuffer(response, maxHttpHeaderSize); outputBuffer = new Http11OutputBuffer(response, protocol.getMaxHttpHeaderSize());
response.setOutputBuffer(outputBuffer); response.setOutputBuffer(outputBuffer);


// Create and add the identity filters. // Create and add the identity filters.
inputBuffer.addFilter(new IdentityInputFilter(maxSwallowSize)); inputBuffer.addFilter(new IdentityInputFilter(protocol.getMaxSwallowSize()));
outputBuffer.addFilter(new IdentityOutputFilter()); outputBuffer.addFilter(new IdentityOutputFilter());


// Create and add the chunked filters. // Create and add the chunked filters.
inputBuffer.addFilter(new ChunkedInputFilter(maxTrailerSize, allowedTrailerHeaders, inputBuffer.addFilter(new ChunkedInputFilter(protocol.getMaxTrailerSize(),
maxExtensionSize, maxSwallowSize)); protocol.getAllowedTrailerHeadersInternal(), protocol.getMaxExtensionSize(),
protocol.getMaxSwallowSize()));
outputBuffer.addFilter(new ChunkedOutputFilter()); outputBuffer.addFilter(new ChunkedOutputFilter());


// Create and add the void filters. // Create and add the void filters.
Expand All @@ -255,8 +249,6 @@ public Http11Processor(int maxHttpHeaderSize, AbstractEndpoint<?,?> endpoint,int
outputBuffer.addFilter(new GzipOutputFilter()); outputBuffer.addFilter(new GzipOutputFilter());


pluggableFilterIndex = inputBuffer.getFilters().length; pluggableFilterIndex = inputBuffer.getFilters().length;

this.httpUpgradeProtocols = httpUpgradeProtocols;
} }




Expand Down Expand Up @@ -731,7 +723,7 @@ public SocketState service(SocketWrapperBase<?> socketWrapper)
// Check the protocol // Check the protocol
String requestedProtocol = request.getHeader("Upgrade"); String requestedProtocol = request.getHeader("Upgrade");


UpgradeProtocol upgradeProtocol = httpUpgradeProtocols.get(requestedProtocol); UpgradeProtocol upgradeProtocol = protocol.getUpgradeProtocol(requestedProtocol);
if (upgradeProtocol != null) { if (upgradeProtocol != null) {
if (upgradeProtocol.accept(request)) { if (upgradeProtocol.accept(request)) {
// TODO Figure out how to handle request bodies at this // TODO Figure out how to handle request bodies at this
Expand Down

0 comments on commit b2f79d2

Please sign in to comment.