Author: markt Date: Mon Oct 10 14:24:54 2016 New Revision: 1764106 URL: http://svn.apache.org/viewvc?rev=1764106&view=rev Log: Reduce visibility as recommended by UCdetector Remove unused code
Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java tomcat/trunk/java/org/apache/coyote/http2/Flags.java tomcat/trunk/java/org/apache/coyote/http2/FrameType.java tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java tomcat/trunk/java/org/apache/coyote/http2/Hpack.java tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java tomcat/trunk/java/org/apache/coyote/http2/Setting.java tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java Mon Oct 10 14:24:54 2016 @@ -23,7 +23,7 @@ import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.res.StringManager; -public abstract class ConnectionSettingsBase<T extends Throwable> { +abstract class ConnectionSettingsBase<T extends Throwable> { private final Log log = LogFactory.getLog(ConnectionSettingsBase.class); private final StringManager sm = StringManager.getManager(ConnectionSettingsBase.class); @@ -31,25 +31,25 @@ public abstract class ConnectionSettings private final String connectionId; // Limits - protected static final int MAX_WINDOW_SIZE = (1 << 31) - 1; - protected static final int MIN_MAX_FRAME_SIZE = 1 << 14; - protected static final int MAX_MAX_FRAME_SIZE = (1 << 24) - 1; - protected static final long UNLIMITED = ((long)1 << 32); // Use the maximum possible - protected static final int MAX_HEADER_TABLE_SIZE = 1 << 16; + static final int MAX_WINDOW_SIZE = (1 << 31) - 1; + static final int MIN_MAX_FRAME_SIZE = 1 << 14; + static final int MAX_MAX_FRAME_SIZE = (1 << 24) - 1; + static final long UNLIMITED = ((long)1 << 32); // Use the maximum possible + static final int MAX_HEADER_TABLE_SIZE = 1 << 16; // Defaults - protected static final int DEFAULT_HEADER_TABLE_SIZE = 4096; - protected static final boolean DEFAULT_ENABLE_PUSH = true; - protected static final long DEFAULT_MAX_CONCURRENT_STREAMS = UNLIMITED; - protected static final int DEFAULT_INITIAL_WINDOW_SIZE = (1 << 16) - 1; - protected static final int DEFAULT_MAX_FRAME_SIZE = MIN_MAX_FRAME_SIZE; - protected static final long DEFAULT_MAX_HEADER_LIST_SIZE = UNLIMITED; + static final int DEFAULT_HEADER_TABLE_SIZE = 4096; + static final boolean DEFAULT_ENABLE_PUSH = true; + static final long DEFAULT_MAX_CONCURRENT_STREAMS = UNLIMITED; + static final int DEFAULT_INITIAL_WINDOW_SIZE = (1 << 16) - 1; + static final int DEFAULT_MAX_FRAME_SIZE = MIN_MAX_FRAME_SIZE; + static final long DEFAULT_MAX_HEADER_LIST_SIZE = UNLIMITED; - protected Map<Setting,Long> current = new HashMap<>(); - protected Map<Setting,Long> pending = new HashMap<>(); + Map<Setting,Long> current = new HashMap<>(); + Map<Setting,Long> pending = new HashMap<>(); - public ConnectionSettingsBase(String connectionId) { + ConnectionSettingsBase(String connectionId) { this.connectionId = connectionId; // Set up the defaults current.put(Setting.HEADER_TABLE_SIZE, Long.valueOf(DEFAULT_HEADER_TABLE_SIZE)); @@ -61,7 +61,7 @@ public abstract class ConnectionSettings } - public void set(Setting setting, long value) throws T { + final void set(Setting setting, long value) throws T { if (log.isDebugEnabled()) { log.debug(sm.getString("connectionSettings.debug", connectionId, setting, Long.toString(value))); @@ -102,33 +102,33 @@ public abstract class ConnectionSettings } - public int getHeaderTableSize() { + final int getHeaderTableSize() { return getMinInt(Setting.HEADER_TABLE_SIZE); } - public boolean getEnablePush() { + final boolean getEnablePush() { long result = getMin(Setting.ENABLE_PUSH); return result != 0; } - public long getMaxConcurrentStreams() { + final long getMaxConcurrentStreams() { return getMax(Setting.MAX_CONCURRENT_STREAMS); } - public int getInitialWindowSize() { + final int getInitialWindowSize() { return getMaxInt(Setting.INITIAL_WINDOW_SIZE); } - public int getMaxFrameSize() { + final int getMaxFrameSize() { return getMaxInt(Setting.MAX_FRAME_SIZE); } - public long getMaxHeaderListSize() { + final long getMaxHeaderListSize() { return getMax(Setting.MAX_HEADER_LIST_SIZE); } Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java Mon Oct 10 14:24:54 2016 @@ -30,18 +30,18 @@ import java.util.Map; * client will respond (almost certainly by closing the connection) as defined * in the HTTP/2 specification. */ -public class ConnectionSettingsLocal extends ConnectionSettingsBase<IllegalArgumentException> { +class ConnectionSettingsLocal extends ConnectionSettingsBase<IllegalArgumentException> { private boolean sendInProgress = false; - public ConnectionSettingsLocal(String connectionId) { + ConnectionSettingsLocal(String connectionId) { super(connectionId); } @Override - protected synchronized void set(Setting setting, Long value) { + final synchronized void set(Setting setting, Long value) { checkSend(); if (current.get(setting).longValue() == value.longValue()) { pending.remove(setting); @@ -51,7 +51,7 @@ public class ConnectionSettingsLocal ext } - synchronized byte[] getSettingsFrameForPending() { + final synchronized byte[] getSettingsFrameForPending() { checkSend(); int payloadSize = pending.size() * 6; byte[] result = new byte[9 + payloadSize]; @@ -73,7 +73,7 @@ public class ConnectionSettingsLocal ext } - synchronized boolean ack() { + final synchronized boolean ack() { if (sendInProgress) { sendInProgress = false; current.putAll(pending); @@ -94,7 +94,7 @@ public class ConnectionSettingsLocal ext @Override - void throwException(String msg, Http2Error error) throws IllegalArgumentException { + final void throwException(String msg, Http2Error error) throws IllegalArgumentException { throw new IllegalArgumentException(msg); } } Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java Mon Oct 10 14:24:54 2016 @@ -20,15 +20,15 @@ package org.apache.coyote.http2; * Represents the remote connection settings: i.e. the settings the server must * use when communicating with the client. */ -public class ConnectionSettingsRemote extends ConnectionSettingsBase<ConnectionException> { +class ConnectionSettingsRemote extends ConnectionSettingsBase<ConnectionException> { - public ConnectionSettingsRemote(String connectionId) { + ConnectionSettingsRemote(String connectionId) { super(connectionId); } @Override - void throwException(String msg, Http2Error error) throws ConnectionException { + final void throwException(String msg, Http2Error error) throws ConnectionException { throw new ConnectionException(msg, error); } } Modified: tomcat/trunk/java/org/apache/coyote/http2/Flags.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Flags.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Flags.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Flags.java Mon Oct 10 14:24:54 2016 @@ -16,34 +16,34 @@ */ package org.apache.coyote.http2; -public class Flags { +class Flags { private Flags() { // Utility class. Hide default constructor } - public static boolean isEndOfStream(int flags) { + static boolean isEndOfStream(int flags) { return (flags & 0x01) > 0; } - public static boolean isAck(int flags) { + static boolean isAck(int flags) { return (flags & 0x01) > 0; } - public static boolean isEndOfHeaders(int flags) { + static boolean isEndOfHeaders(int flags) { return (flags & 0x04) > 0; } - public static boolean hasPadding(int flags) { + static boolean hasPadding(int flags) { return (flags & 0x08) > 0; } - public static boolean hasPriority(int flags) { + static boolean hasPriority(int flags) { return (flags & 0x20) > 0; } } Modified: tomcat/trunk/java/org/apache/coyote/http2/FrameType.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/FrameType.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/FrameType.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/FrameType.java Mon Oct 10 14:24:54 2016 @@ -20,7 +20,7 @@ import java.util.function.IntPredicate; import org.apache.tomcat.util.res.StringManager; -public enum FrameType { +enum FrameType { DATA (0, false, true, null, false), HEADERS (1, false, true, null, true), @@ -53,12 +53,12 @@ public enum FrameType { } - public byte getIdByte() { + byte getIdByte() { return (byte) id; } - public void check(int streamId, int payloadSize) throws Http2Exception { + void check(int streamId, int payloadSize) throws Http2Exception { // Is FrameType valid for the given stream? if (streamId == 0 && !streamZero || streamId != 0 && !streamNonZero) { throw new ConnectionException(sm.getString("frameType.checkStream", this), @@ -80,7 +80,7 @@ public enum FrameType { } - public static FrameType valueOf(int i) { + static FrameType valueOf(int i) { switch(i) { case 0: return DATA; Modified: tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java Mon Oct 10 14:24:54 2016 @@ -23,7 +23,7 @@ import org.apache.coyote.http2.HpackDeco * the connection close process has started if headers for new streams are * received. */ -public class HeaderSink implements HeaderEmitter { +class HeaderSink implements HeaderEmitter { @Override public void emitHeader(String name, String value, boolean neverIndex) { Modified: tomcat/trunk/java/org/apache/coyote/http2/Hpack.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Hpack.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Hpack.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Hpack.java Mon Oct 10 14:24:54 2016 @@ -22,7 +22,7 @@ import org.apache.tomcat.util.res.String final class Hpack { - static final StringManager sm = StringManager.getManager(Hpack.class); + private static final StringManager sm = StringManager.getManager(Hpack.class); private static final byte LOWER_DIFF = 'a' - 'A'; static final int DEFAULT_TABLE_SIZE = 4096; Modified: tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java Mon Oct 10 14:24:54 2016 @@ -63,12 +63,12 @@ public class HpackDecoder { private final StringBuilder stringBuilder = new StringBuilder(); - public HpackDecoder(int maxMemorySize) { + HpackDecoder(int maxMemorySize) { this.maxMemorySize = maxMemorySize; headerTable = new Hpack.HeaderField[DEFAULT_RING_BUFFER_SIZE]; } - public HpackDecoder() { + HpackDecoder() { this(Hpack.DEFAULT_TABLE_SIZE); } @@ -81,7 +81,7 @@ public class HpackDecoder { * * @throws HpackException If the packed data is not valid */ - public void decode(ByteBuffer buffer) throws HpackException { + void decode(ByteBuffer buffer) throws HpackException { while (buffer.hasRemaining()) { int originalPos = buffer.position(); byte b = buffer.get(); @@ -326,16 +326,16 @@ public class HpackDecoder { /** * Interface that can be used to immediately validate headers (ex: uppercase detection). */ - public interface HeaderEmitter { + interface HeaderEmitter { void emitHeader(String name, String value, boolean neverIndex); } - public HeaderEmitter getHeaderEmitter() { + HeaderEmitter getHeaderEmitter() { return headerEmitter; } - public void setHeaderEmitter(HeaderEmitter headerEmitter) { + void setHeaderEmitter(HeaderEmitter headerEmitter) { this.headerEmitter = headerEmitter; } Modified: tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java Mon Oct 10 14:24:54 2016 @@ -34,12 +34,12 @@ import org.apache.tomcat.util.res.String /** * Encoder for HPACK frames. */ -public class HpackEncoder { +class HpackEncoder { private static final Log log = LogFactory.getLog(HpackEncoder.class); private static final StringManager sm = StringManager.getManager(HpackEncoder.class); - public static final HpackHeaderFunction DEFAULT_HEADER_FUNCTION = new HpackHeaderFunction() { + private static final HpackHeaderFunction DEFAULT_HEADER_FUNCTION = new HpackHeaderFunction() { @Override public boolean shouldUseIndexing(String headerName, String value) { //content length and date change all the time @@ -104,13 +104,9 @@ public class HpackEncoder { private final HpackHeaderFunction hpackHeaderFunction; - public HpackEncoder(int maxTableSize, HpackHeaderFunction headerFunction) { + HpackEncoder(int maxTableSize) { this.maxTableSize = maxTableSize; - this.hpackHeaderFunction = headerFunction; - } - - public HpackEncoder(int maxTableSize) { - this(maxTableSize, DEFAULT_HEADER_FUNCTION); + this.hpackHeaderFunction = DEFAULT_HEADER_FUNCTION; } /** @@ -121,7 +117,7 @@ public class HpackEncoder { * * @return The state of the encoding process */ - public State encode(MimeHeaders headers, ByteBuffer target) { + State encode(MimeHeaders headers, ByteBuffer target) { int it = headersIterator; if (headersIterator == -1) { handleTableSizeChange(target); @@ -250,7 +246,7 @@ public class HpackEncoder { } existing.add(d); evictionQueue.add(d); - currentTableSize += d.size; + currentTableSize += d.getSize(); runEvictionIfRequired(); if (entryPositionCounter == Integer.MAX_VALUE) { //prevent rollover @@ -335,19 +331,19 @@ public class HpackEncoder { minNewMaxHeaderSize = -1; } - public enum State { + enum State { COMPLETE, UNDERFLOW, } - static class TableEntry { - final String name; - final String value; - final int size; - int position; + private static class TableEntry { + private final String name; + private final String value; + private final int size; + private int position; - TableEntry(String name, String value, int position) { + private TableEntry(String name, String value, int position) { this.name = name; this.value = value; this.position = position; @@ -358,24 +354,28 @@ public class HpackEncoder { } } - public int getPosition() { + int getPosition() { return position; } + + int getSize() { + return size; + } } - class DynamicTableEntry extends TableEntry { + private class DynamicTableEntry extends TableEntry { - DynamicTableEntry(String name, String value, int position) { + private DynamicTableEntry(String name, String value, int position) { super(name, value, position); } @Override - public int getPosition() { + int getPosition() { return super.getPosition() + entryPositionCounter + Hpack.STATIC_TABLE_LENGTH; } } - public interface HpackHeaderFunction { + private interface HpackHeaderFunction { boolean shouldUseIndexing(String header, String value); /** Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java Mon Oct 10 14:24:54 2016 @@ -16,7 +16,7 @@ */ package org.apache.coyote.http2; -public enum Http2Error { +enum Http2Error { NO_ERROR (0x00), PROTOCOL_ERROR (0x01), @@ -40,12 +40,12 @@ public enum Http2Error { } - public long getCode() { + long getCode() { return code; } - public byte[] getCodeBytes() { + byte[] getCodeBytes() { byte[] codeByte = new byte[4]; ByteUtil.setFourBytes(codeByte, 0, code); return codeByte; Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Mon Oct 10 14:24:54 2016 @@ -71,7 +71,7 @@ import org.apache.tomcat.util.res.String * </li> * </ul> */ -public class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeHandler, +class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeHandler, Input, Output { private static final Log log = LogFactory.getLog(Http2UpgradeHandler.class); @@ -144,7 +144,7 @@ public class Http2UpgradeHandler extends private AtomicInteger streamConcurrency = null; private Queue<StreamProcessor> queuedProcessors = null; - public Http2UpgradeHandler(Adapter adapter, Request coyoteRequest) { + Http2UpgradeHandler(Adapter adapter, Request coyoteRequest) { super (STREAM_ID_ZERO); this.adapter = adapter; this.connectionId = Integer.toString(connectionIdGenerator.getAndIncrement()); @@ -573,7 +573,7 @@ public class Http2UpgradeHandler extends } - void writePushHeaders(Stream stream, int pushedStreamId, Request coyoteRequest, int payloadSize) + private void writePushHeaders(Stream stream, int pushedStreamId, Request coyoteRequest, int payloadSize) throws IOException { if (log.isDebugEnabled()) { log.debug(sm.getString("upgradeHandler.writePushHeaders", connectionId, Modified: tomcat/trunk/java/org/apache/coyote/http2/Setting.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Setting.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/Setting.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/Setting.java Mon Oct 10 14:24:54 2016 @@ -16,7 +16,7 @@ */ package org.apache.coyote.http2; -public enum Setting { +enum Setting { HEADER_TABLE_SIZE(1), ENABLE_PUSH(2), MAX_CONCURRENT_STREAMS(3), @@ -31,16 +31,16 @@ public enum Setting { this.id = id; } - public int getId() { + final int getId() { return id; } @Override - public String toString() { + public final String toString() { return Integer.toString(id); } - public static Setting valueOf(int i) { + static final Setting valueOf(int i) { switch(i) { case 1: { return HEADER_TABLE_SIZE; Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Mon Oct 10 14:24:54 2016 @@ -32,7 +32,7 @@ import org.apache.tomcat.util.net.Socket import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.res.StringManager; -public class StreamProcessor extends AbstractProcessor implements Runnable { +class StreamProcessor extends AbstractProcessor implements Runnable { private static final Log log = LogFactory.getLog(StreamProcessor.class); private static final StringManager sm = StringManager.getManager(StreamProcessor.class); @@ -41,7 +41,7 @@ public class StreamProcessor extends Abs private final Stream stream; - public StreamProcessor(Http2UpgradeHandler handler, Stream stream, Adapter adapter, SocketWrapperBase<?> socketWrapper) { + StreamProcessor(Http2UpgradeHandler handler, Stream stream, Adapter adapter, SocketWrapperBase<?> socketWrapper) { super(stream.getCoyoteRequest(), stream.getCoyoteResponse()); this.handler = handler; this.stream = stream; @@ -51,7 +51,7 @@ public class StreamProcessor extends Abs @Override - public void run() { + public final void run() { try { // FIXME: the regular processor syncs on socketWrapper, but here this deadlocks synchronized (this) { @@ -192,7 +192,7 @@ public class StreamProcessor extends Abs @Override - public void recycle() { + public final void recycle() { // StreamProcessor instances are not re-used. // Clear fields that can be cleared to aid GC and trigger NPEs if this // is reused @@ -202,19 +202,19 @@ public class StreamProcessor extends Abs @Override - protected Log getLog() { + protected final Log getLog() { return log; } @Override - public void pause() { + public final void pause() { // NO-OP. Handled by the Http2UpgradeHandler } @Override - public SocketState service(SocketWrapperBase<?> socket) throws IOException { + public final SocketState service(SocketWrapperBase<?> socket) throws IOException { try { adapter.service(request, response); } catch (Exception e) { @@ -239,7 +239,7 @@ public class StreamProcessor extends Abs @Override - protected boolean flushBufferedWrite() throws IOException { + protected final boolean flushBufferedWrite() throws IOException { if (stream.getOutputBuffer().flush(false)) { // The buffer wasn't fully flushed so re-register the // stream for write. Note this does not go via the @@ -259,7 +259,7 @@ public class StreamProcessor extends Abs @Override - protected SocketState dispatchEndRequest() { + protected final SocketState dispatchEndRequest() { return SocketState.CLOSED; } } Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java?rev=1764106&r1=1764105&r2=1764106&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java (original) +++ tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java Mon Oct 10 14:24:54 2016 @@ -33,7 +33,7 @@ import org.apache.tomcat.util.res.String * </ul> * */ -public class StreamStateMachine { +class StreamStateMachine { private static final Log log = LogFactory.getLog(StreamStateMachine.class); private static final StringManager sm = StringManager.getManager(StreamStateMachine.class); @@ -42,69 +42,36 @@ public class StreamStateMachine { private State state; - public StreamStateMachine(Stream stream) { + StreamStateMachine(Stream stream) { this.stream = stream; stateChange(null, State.IDLE); } - public synchronized void sentPushPromise() { + final synchronized void sentPushPromise() { stateChange(State.IDLE, State.RESERVED_LOCAL); } - public synchronized void receivedPushPromise() { - stateChange(State.IDLE, State.RESERVED_REMOTE); - } - - - public synchronized void sentStartOfHeaders() { - stateChange(State.IDLE, State.OPEN); - stateChange(State.RESERVED_LOCAL, State.HALF_CLOSED_REMOTE); - } - - - public synchronized void receivedStartOfHeaders() { + final synchronized void receivedStartOfHeaders() { stateChange(State.IDLE, State.OPEN); stateChange(State.RESERVED_REMOTE, State.HALF_CLOSED_LOCAL); } - public synchronized void sentEndOfStream() { + final synchronized void sentEndOfStream() { stateChange(State.OPEN, State.HALF_CLOSED_LOCAL); stateChange(State.HALF_CLOSED_REMOTE, State.CLOSED_TX); } - public synchronized void recievedEndOfStream() { + final synchronized void recievedEndOfStream() { stateChange(State.OPEN, State.HALF_CLOSED_REMOTE); stateChange(State.HALF_CLOSED_LOCAL, State.CLOSED_RX); } - /** - * Marks the stream as reset. This method will not change the stream state - * if: - * <ul> - * <li>The stream is already reset</li> - * <li>The stream is already closed</li> - * </ul> - * - * @throws IllegalStateException If the stream is in a state that does not - * permit resets - */ - public synchronized void sendReset() { - if (state == State.IDLE) { - throw new IllegalStateException(sm.getString("streamStateMachine.debug.change", - stream.getConnectionId(), stream.getIdentifier(), state)); - } - if (state.canReset()) { - stateChange(state, State.CLOSED_RST_TX); - } - } - - - public synchronized void receiveReset() { + final synchronized void receiveReset() { stateChange(state, State.CLOSED_RST_RX); } @@ -120,7 +87,7 @@ public class StreamStateMachine { } - public synchronized void checkFrameType(FrameType frameType) throws Http2Exception { + final synchronized void checkFrameType(FrameType frameType) throws Http2Exception { // No state change. Checks that receiving the frame type is valid for // the current state of this stream. if (!isFrameTypePermitted(frameType)) { @@ -137,96 +104,82 @@ public class StreamStateMachine { } - public synchronized boolean isFrameTypePermitted(FrameType frameType) { + final synchronized boolean isFrameTypePermitted(FrameType frameType) { return state.isFrameTypePermitted(frameType); } - public synchronized boolean isActive() { + final synchronized boolean isActive() { return state.isActive(); } - public synchronized boolean canRead() { + final synchronized boolean canRead() { return state.canRead(); } - public synchronized boolean canWrite() { + final synchronized boolean canWrite() { return state.canWrite(); } - public synchronized boolean isClosedFinal() { + final synchronized boolean isClosedFinal() { return state == State.CLOSED_FINAL; } - public synchronized void closeIfIdle() { + final synchronized void closeIfIdle() { stateChange(State.IDLE, State.CLOSED_FINAL); } private enum State { - IDLE (false, false, false, true, - Http2Error.PROTOCOL_ERROR, FrameType.HEADERS, - FrameType.PRIORITY), - OPEN (true, true, true, true, - Http2Error.PROTOCOL_ERROR, FrameType.DATA, - FrameType.HEADERS, - FrameType.PRIORITY, - FrameType.RST, - FrameType.PUSH_PROMISE, - FrameType.WINDOW_UPDATE), - RESERVED_LOCAL (false, false, true, true, - Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY, - FrameType.RST, - FrameType.WINDOW_UPDATE), - RESERVED_REMOTE (false, false, true, true, - Http2Error.PROTOCOL_ERROR, FrameType.HEADERS, - FrameType.PRIORITY, - FrameType.RST), - HALF_CLOSED_LOCAL (true, false, true, true, - Http2Error.PROTOCOL_ERROR, FrameType.DATA, - FrameType.HEADERS, - FrameType.PRIORITY, - FrameType.RST, - FrameType.PUSH_PROMISE, - FrameType.WINDOW_UPDATE), - HALF_CLOSED_REMOTE (false, true, true, true, - Http2Error.STREAM_CLOSED, FrameType.PRIORITY, - FrameType.RST, - FrameType.WINDOW_UPDATE), - CLOSED_RX (false, false, false, true, - Http2Error.STREAM_CLOSED, FrameType.PRIORITY), - CLOSED_TX (false, false, false, true, - Http2Error.STREAM_CLOSED, FrameType.PRIORITY, - FrameType.RST, - FrameType.WINDOW_UPDATE), - CLOSED_RST_RX (false, false, false, false, - Http2Error.STREAM_CLOSED, FrameType.PRIORITY), - CLOSED_RST_TX (false, false, false, false, - Http2Error.STREAM_CLOSED, FrameType.DATA, - FrameType.HEADERS, - FrameType.PRIORITY, - FrameType.RST, - FrameType.PUSH_PROMISE, - FrameType.WINDOW_UPDATE), - CLOSED_FINAL (false, false, false, true, - Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY); + IDLE (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.HEADERS, + FrameType.PRIORITY), + OPEN (true, true, true, Http2Error.PROTOCOL_ERROR, FrameType.DATA, + FrameType.HEADERS, + FrameType.PRIORITY, + FrameType.RST, + FrameType.PUSH_PROMISE, + FrameType.WINDOW_UPDATE), + RESERVED_LOCAL (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY, + FrameType.RST, + FrameType.WINDOW_UPDATE), + RESERVED_REMOTE (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.HEADERS, + FrameType.PRIORITY, + FrameType.RST), + HALF_CLOSED_LOCAL (true, false, true, Http2Error.PROTOCOL_ERROR, FrameType.DATA, + FrameType.HEADERS, + FrameType.PRIORITY, + FrameType.RST, + FrameType.PUSH_PROMISE, + FrameType.WINDOW_UPDATE), + HALF_CLOSED_REMOTE (false, true, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY, + FrameType.RST, + FrameType.WINDOW_UPDATE), + CLOSED_RX (false, false, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY), + CLOSED_TX (false, false, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY, + FrameType.RST, + FrameType.WINDOW_UPDATE), + CLOSED_RST_RX (false, false, false, Http2Error.STREAM_CLOSED, FrameType.PRIORITY), + CLOSED_RST_TX (false, false, false, Http2Error.STREAM_CLOSED, FrameType.DATA, + FrameType.HEADERS, + FrameType.PRIORITY, + FrameType.RST, + FrameType.PUSH_PROMISE, + FrameType.WINDOW_UPDATE), + CLOSED_FINAL (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY); private final boolean canRead; private final boolean canWrite; - private final boolean canReset; private final boolean connectionErrorForInvalidFrame; private final Http2Error errorCodeForInvalidFrame; private final Set<FrameType> frameTypesPermitted = new HashSet<>(); - private State(boolean canRead, boolean canWrite, boolean canReset, - boolean connectionErrorForInvalidFrame, Http2Error errorCode, - FrameType... frameTypes) { + private State(boolean canRead, boolean canWrite, boolean connectionErrorForInvalidFrame, + Http2Error errorCode, FrameType... frameTypes) { this.canRead = canRead; this.canWrite = canWrite; - this.canReset = canReset; this.connectionErrorForInvalidFrame = connectionErrorForInvalidFrame; this.errorCodeForInvalidFrame = errorCode; for (FrameType frameType : frameTypes) { @@ -246,10 +199,6 @@ public class StreamStateMachine { return canWrite; } - public boolean canReset() { - return canReset; - } - public boolean isFrameTypePermitted(FrameType frameType) { return frameTypesPermitted.contains(frameType); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org