Author: markt Date: Mon Jun 21 11:27:18 2010 New Revision: 956533 URL: http://svn.apache.org/viewvc?rev=956533&view=rev Log: Reduce code duplication in connectors: Move addFilter() and addInputFilter() to base class
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=956533&r1=956532&r2=956533&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Mon Jun 21 11:27:18 2010 @@ -30,7 +30,7 @@ import org.apache.tomcat.util.buf.ByteCh import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.res.StringManager; -public class AbstractHttp11Processor { +public abstract class AbstractHttp11Processor { /** * Logger. @@ -720,4 +720,69 @@ public class AbstractHttp11Processor { } + /** + * Exposes input buffer to super class to allow better code re-use. + * @return The input buffer used by the processor. + */ + protected abstract AbstractInputBuffer getInputBuffer(); + + /** + * Exposes output buffer to super class to allow better code re-use. + * @return The output buffer used by the processor. + */ + protected abstract AbstractOutputBuffer getOutputBuffer(); + + /** + * Add input or output filter. + * + * @param className class name of the filter + */ + protected void addFilter(String className) { + try { + Class<?> clazz = Class.forName(className); + Object obj = clazz.newInstance(); + if (obj instanceof InputFilter) { + getInputBuffer().addFilter((InputFilter) obj); + } else if (obj instanceof OutputFilter) { + getOutputBuffer().addFilter((OutputFilter) obj); + } else { + log.warn(sm.getString("http11processor.filter.unknown", + className)); + } + } catch (Exception e) { + log.error(sm.getString( + "http11processor.filter.error", className), e); + } + } + + + /** + * Add an input filter to the current request. + * + * @return false if the encoding was not found (which would mean it is + * unsupported) + */ + protected boolean addInputFilter(InputFilter[] inputFilters, + String encodingName) { + if (encodingName.equals("identity")) { + // Skip + } else if (encodingName.equals("chunked")) { + getInputBuffer().addActiveFilter + (inputFilters[Constants.CHUNKED_FILTER]); + contentDelimitation = true; + } else { + for (int i = 2; i < inputFilters.length; i++) { + if (inputFilters[i].getEncodingName() + .toString().equals(encodingName)) { + getInputBuffer().addActiveFilter(inputFilters[i]); + return true; + } + } + return false; + } + return true; + } + + + } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=956533&r1=956532&r2=956533&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Mon Jun 21 11:27:18 2010 @@ -151,28 +151,6 @@ public class Http11AprProcessor extends /** - * Add input or output filter. - * - * @param className class name of the filter - */ - protected void addFilter(String className) { - try { - Class<?> clazz = Class.forName(className); - Object obj = clazz.newInstance(); - if (obj instanceof InputFilter) { - inputBuffer.addFilter((InputFilter) obj); - } else if (obj instanceof OutputFilter) { - outputBuffer.addFilter((OutputFilter) obj); - } else { - log.warn(sm.getString("http11processor.filter.unknown", className)); - } - } catch (Exception e) { - log.error(sm.getString("http11processor.filter.error", className), e); - } - } - - - /** * Process pipelined HTTP requests using the specified input and output * streams. * @@ -1196,33 +1174,14 @@ public class Http11AprProcessor extends outputBuffer.addFilter(new GzipOutputFilter()); } - - - /** - * Add an input filter to the current request. - * - * @return false if the encoding was not found (which would mean it is - * unsupported) - */ - protected boolean addInputFilter(InputFilter[] inputFilters, - String encodingName) { - if (encodingName.equals("identity")) { - // Skip - } else if (encodingName.equals("chunked")) { - inputBuffer.addActiveFilter - (inputFilters[Constants.CHUNKED_FILTER]); - contentDelimitation = true; - } else { - for (int i = 2; i < inputFilters.length; i++) { - if (inputFilters[i].getEncodingName() - .toString().equals(encodingName)) { - inputBuffer.addActiveFilter(inputFilters[i]); - return true; - } - } - return false; - } - return true; + + @Override + protected AbstractInputBuffer getInputBuffer() { + return inputBuffer; } + @Override + protected AbstractOutputBuffer getOutputBuffer() { + return outputBuffer; + } } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=956533&r1=956532&r2=956533&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Mon Jun 21 11:27:18 2010 @@ -16,7 +16,6 @@ */ package org.apache.coyote.http11; - import java.io.IOException; import java.io.InterruptedIOException; import java.net.InetAddress; @@ -161,28 +160,6 @@ public class Http11NioProcessor extends /** - * Add input or output filter. - * - * @param className class name of the filter - */ - protected void addFilter(String className) { - try { - Class<?> clazz = Class.forName(className); - Object obj = clazz.newInstance(); - if (obj instanceof InputFilter) { - inputBuffer.addFilter((InputFilter) obj); - } else if (obj instanceof OutputFilter) { - outputBuffer.addFilter((OutputFilter) obj); - } else { - log.warn(sm.getString("http11processor.filter.unknown", className)); - } - } catch (Exception e) { - log.error(sm.getString("http11processor.filter.error", className), e); - } - } - - - /** * Process pipelined HTTP requests using the specified input and output * streams. * @@ -1251,34 +1228,6 @@ public class Http11NioProcessor extends /** - * Add an input filter to the current request. - * - * @return false if the encoding was not found (which would mean it is - * unsupported) - */ - protected boolean addInputFilter(InputFilter[] inputFilters, - String encodingName) { - if (encodingName.equals("identity")) { - // Skip - } else if (encodingName.equals("chunked")) { - inputBuffer.addActiveFilter - (inputFilters[Constants.CHUNKED_FILTER]); - contentDelimitation = true; - } else { - for (int i = 2; i < inputFilters.length; i++) { - if (inputFilters[i].getEncodingName() - .toString().equals(encodingName)) { - inputBuffer.addActiveFilter(inputFilters[i]); - return true; - } - } - return false; - } - return true; - } - - - /** * Specialized utility method: find a sequence of lower case bytes inside * a ByteChunk. */ @@ -1323,6 +1272,16 @@ public class Http11NioProcessor extends status == 501 /* SC_NOT_IMPLEMENTED */; } + @Override + protected AbstractInputBuffer getInputBuffer() { + return inputBuffer; + } + + @Override + protected AbstractOutputBuffer getOutputBuffer() { + return outputBuffer; + } + /** * Set the SSL information for this HTTP connection. */ Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=956533&r1=956532&r2=956533&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Mon Jun 21 11:27:18 2010 @@ -1001,55 +1001,6 @@ public class Http11Processor extends Abs /** - * Add an input filter to the current request. - * - * @return false if the encoding was not found (which would mean it is - * unsupported) - */ - protected boolean addInputFilter(InputFilter[] inputFilters, - String encodingName) { - if (encodingName.equals("identity")) { - // Skip - } else if (encodingName.equals("chunked")) { - inputBuffer.addActiveFilter - (inputFilters[Constants.CHUNKED_FILTER]); - contentDelimitation = true; - } else { - for (int i = 2; i < inputFilters.length; i++) { - if (inputFilters[i].getEncodingName() - .toString().equals(encodingName)) { - inputBuffer.addActiveFilter(inputFilters[i]); - return true; - } - } - return false; - } - return true; - } - - - /** - * Add input or output filter. - * - * @param className class name of the filter - */ - protected void addFilter(String className) { - try { - Class<?> clazz = Class.forName(className); - Object obj = clazz.newInstance(); - if (obj instanceof InputFilter) { - inputBuffer.addFilter((InputFilter) obj); - } else if (obj instanceof OutputFilter) { - outputBuffer.addFilter((OutputFilter) obj); - } else { - log.warn(sm.getString("http11processor.filter.unknown", className)); - } - } catch (Exception e) { - log.error(sm.getString("http11processor.filter.error", className), e); - } - } - - /** * Parse host. */ protected void parseHost(MessageBytes valueMB) { @@ -1124,6 +1075,16 @@ public class Http11Processor extends Abs } + @Override + protected AbstractInputBuffer getInputBuffer() { + return inputBuffer; + } + + @Override + protected AbstractOutputBuffer getOutputBuffer() { + return outputBuffer; + } + /** * Set the socket buffer flag. * @Override --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org