Author: remm Date: Sun Mar 13 10:59:08 2016 New Revision: 1734783 URL: http://svn.apache.org/viewvc?rev=1734783&view=rev Log: First pass form some Java 7 issues.
Modified: tomcat/tc8.5.x/trunk/java/javax/el/ExpressionFactory.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/InputBuffer.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/OutputBuffer.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/CorsFilter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/WebdavFixFilter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/CustomObjectInputStream.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2Parser.java tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Stream.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/dbcp/dbcp2/PoolingConnection.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsSessionListener.java Modified: tomcat/tc8.5.x/trunk/java/javax/el/ExpressionFactory.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/javax/el/ExpressionFactory.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/javax/el/ExpressionFactory.java (original) +++ tomcat/tc8.5.x/trunk/java/javax/el/ExpressionFactory.java Sun Mar 13 10:59:08 2016 @@ -325,7 +325,7 @@ public abstract class ExpressionFactory } public void setFactoryClass(Class<?> clazz) { - ref = new WeakReference<>(clazz); + ref = new WeakReference<Class<?>>(clazz); } } Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/InputBuffer.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/InputBuffer.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/InputBuffer.java Sun Mar 13 10:59:08 2016 @@ -558,7 +558,7 @@ public class InputBuffer extends Reader } - private static B2CConverter createConverter(Charset charset) throws IOException { + private static B2CConverter createConverter(final Charset charset) throws IOException { if (SecurityUtil.isPackageProtectionEnabled()){ try { return AccessController.doPrivileged( Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/OutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/OutputBuffer.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/OutputBuffer.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/OutputBuffer.java Sun Mar 13 10:59:08 2016 @@ -567,7 +567,7 @@ public class OutputBuffer extends Writer } - private static Charset getCharset(String encoding) throws IOException { + private static Charset getCharset(final String encoding) throws IOException { if (Globals.IS_SECURITY_ENABLED) { try { return AccessController.doPrivileged( @@ -591,7 +591,7 @@ public class OutputBuffer extends Writer } - private static C2BConverter createConverter(Charset charset) throws IOException { + private static C2BConverter createConverter(final Charset charset) throws IOException { if (Globals.IS_SECURITY_ENABLED){ try { return AccessController.doPrivileged( Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/CorsFilter.java Sun Mar 13 10:59:08 2016 @@ -132,6 +132,11 @@ public final class CorsFilter extends Ge @Override + public void destroy() { + // NOOP + } + + @Override public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java Sun Mar 13 10:59:08 2016 @@ -764,6 +764,11 @@ public class RemoteIpFilter extends Gene */ private Pattern trustedProxies = null; + @Override + public void destroy() { + // NOOP + } + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (internalProxies != null && Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java Sun Mar 13 10:59:08 2016 @@ -70,6 +70,11 @@ public class RequestDumperFilter extends private static final Log log = LogFactory.getLog(RequestDumperFilter.class); + @Override + public void destroy() { + // NOOP + } + /** * Log the interesting request parameters, invoke the next Filter in the * sequence, and log the interesting response parameters. Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java Sun Mar 13 10:59:08 2016 @@ -17,11 +17,9 @@ package org.apache.catalina.filters; import java.io.IOException; -import java.util.Arrays; import java.util.HashSet; import java.util.Objects; import java.util.Set; -import java.util.function.Predicate; import java.util.regex.Pattern; import javax.servlet.FilterChain; @@ -80,9 +78,8 @@ public class RestCsrfPreventionFilter ex NON_MODIFYING_METHOD, MODIFYING_METHOD } - private static final Pattern NON_MODIFYING_METHODS_PATTERN = Pattern.compile("GET|HEAD|OPTIONS"); - private static final Predicate<String> nonModifyingMethods = m -> Objects.nonNull(m) && - NON_MODIFYING_METHODS_PATTERN.matcher(m).matches(); + private static final Pattern NON_MODIFYING_METHODS_PATTERN = Pattern + .compile("GET|HEAD|OPTIONS"); private Set<String> pathsAcceptingParams = new HashSet<>(); @@ -92,10 +89,10 @@ public class RestCsrfPreventionFilter ex public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - if (request instanceof HttpServletRequest && - response instanceof HttpServletResponse) { + if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) { MethodType mType = MethodType.MODIFYING_METHOD; - if (nonModifyingMethods.test(((HttpServletRequest) request).getMethod())) { + String method = ((HttpServletRequest) request).getMethod(); + if (method != null && NON_MODIFYING_METHODS_PATTERN.matcher(method).matches()) { mType = MethodType.NON_MODIFYING_METHOD; } @@ -116,33 +113,45 @@ public class RestCsrfPreventionFilter ex chain.doFilter(request, response); } - private static interface RestCsrfPreventionStrategy { - static final NonceSupplier<HttpServletRequest, String> nonceFromRequestHeader = (r, k) -> r - .getHeader(k); - static final NonceSupplier<HttpServletRequest, String[]> nonceFromRequestParams = (r, k) -> r - .getParameterValues(k); - static final NonceSupplier<HttpSession, String> nonceFromSession = (s, k) -> Objects - .isNull(s) ? null : (String) s.getAttribute(k); - - static final NonceConsumer<HttpServletResponse> nonceToResponse = (r, k, v) -> r.setHeader( - k, v); - static final NonceConsumer<HttpSession> nonceToSession = (s, k, v) -> s.setAttribute(k, v); + private abstract static class RestCsrfPreventionStrategy { - boolean apply(HttpServletRequest request, HttpServletResponse response) throws IOException; + abstract boolean apply(HttpServletRequest request, HttpServletResponse response) + throws IOException; + + protected String extractNonceFromRequestHeader(HttpServletRequest request, String key) { + return request.getHeader(key); + } + + protected String[] extractNonceFromRequestParams(HttpServletRequest request, String key) { + return request.getParameterValues(key); + } + + protected void storeNonceToResponse(HttpServletResponse response, String key, String value) { + response.setHeader(key, value); + } + + protected String extractNonceFromSession(HttpSession session, String key) { + return session == null ? null : (String) session.getAttribute(key); + } + + protected void storeNonceToSession(HttpSession session, String key, Object value) { + session.setAttribute(key, value); + } } - private class StateChangingRequest implements RestCsrfPreventionStrategy { + private class StateChangingRequest extends RestCsrfPreventionStrategy { @Override public boolean apply(HttpServletRequest request, HttpServletResponse response) throws IOException { if (isValidStateChangingRequest( extractNonceFromRequest(request), - nonceFromSession.getNonce(request.getSession(false), Constants.CSRF_REST_NONCE_SESSION_ATTR_NAME))) { + extractNonceFromSession(request.getSession(false), + Constants.CSRF_REST_NONCE_SESSION_ATTR_NAME))) { return true; } - nonceToResponse.setNonce(response, Constants.CSRF_REST_NONCE_HEADER_NAME, + storeNonceToResponse(response, Constants.CSRF_REST_NONCE_HEADER_NAME, Constants.CSRF_REST_NONCE_HEADER_REQUIRED_VALUE); response.sendError(getDenyStatus(), sm.getString("restCsrfPreventionFilter.invalidNonce")); @@ -150,14 +159,14 @@ public class RestCsrfPreventionFilter ex } private boolean isValidStateChangingRequest(String reqNonce, String sessionNonce) { - return Objects.nonNull(reqNonce) && Objects.nonNull(sessionNonce) + return reqNonce != null && sessionNonce != null && Objects.equals(reqNonce, sessionNonce); } private String extractNonceFromRequest(HttpServletRequest request) { - String nonceFromRequest = nonceFromRequestHeader.getNonce(request, + String nonceFromRequest = extractNonceFromRequestHeader(request, Constants.CSRF_REST_NONCE_HEADER_NAME); - if ((Objects.isNull(nonceFromRequest) || Objects.equals("", nonceFromRequest)) + if ((nonceFromRequest == null || Objects.equals("", nonceFromRequest)) && !getPathsAcceptingParams().isEmpty() && getPathsAcceptingParams().contains(getRequestedPath(request))) { nonceFromRequest = extractNonceFromRequestParams(request); @@ -166,9 +175,9 @@ public class RestCsrfPreventionFilter ex } private String extractNonceFromRequestParams(HttpServletRequest request) { - String[] params = nonceFromRequestParams.getNonce(request, + String[] params = extractNonceFromRequestParams(request, Constants.CSRF_REST_NONCE_HEADER_NAME); - if (Objects.nonNull(params) && params.length > 0) { + if (params != null && params.length > 0) { String nonce = params[0]; for (String param : params) { if (!Objects.equals(param, nonce)) { @@ -181,22 +190,21 @@ public class RestCsrfPreventionFilter ex } } - private class FetchRequest implements RestCsrfPreventionStrategy { - private final Predicate<String> fetchRequest = s -> Constants.CSRF_REST_NONCE_HEADER_FETCH_VALUE - .equalsIgnoreCase(s); + private class FetchRequest extends RestCsrfPreventionStrategy { @Override public boolean apply(HttpServletRequest request, HttpServletResponse response) { - if (fetchRequest.test( - nonceFromRequestHeader.getNonce(request, Constants.CSRF_REST_NONCE_HEADER_NAME))) { - String nonceFromSessionStr = nonceFromSession.getNonce(request.getSession(false), + if (Constants.CSRF_REST_NONCE_HEADER_FETCH_VALUE + .equalsIgnoreCase(extractNonceFromRequestHeader(request, + Constants.CSRF_REST_NONCE_HEADER_NAME))) { + String nonceFromSessionStr = extractNonceFromSession(request.getSession(false), Constants.CSRF_REST_NONCE_SESSION_ATTR_NAME); if (nonceFromSessionStr == null) { nonceFromSessionStr = generateNonce(); - nonceToSession.setNonce(Objects.requireNonNull(request.getSession(true)), + storeNonceToSession(Objects.requireNonNull(request.getSession(true)), Constants.CSRF_REST_NONCE_SESSION_ATTR_NAME, nonceFromSessionStr); } - nonceToResponse.setNonce(response, Constants.CSRF_REST_NONCE_HEADER_NAME, + storeNonceToResponse(response, Constants.CSRF_REST_NONCE_HEADER_NAME, nonceFromSessionStr); } return true; @@ -204,16 +212,6 @@ public class RestCsrfPreventionFilter ex } - @FunctionalInterface - private static interface NonceSupplier<T, R> { - R getNonce(T supplier, String key); - } - - @FunctionalInterface - private static interface NonceConsumer<T> { - void setNonce(T consumer, String key, String value); - } - /** * A comma separated list of URLs that can accept nonces via request * parameter 'X-CSRF-Token'. For use cases when a nonce information cannot @@ -227,9 +225,10 @@ public class RestCsrfPreventionFilter ex * accepting request parameters with nonce information. */ public void setPathsAcceptingParams(String pathsList) { - if (Objects.nonNull(pathsList)) { - Arrays.asList(pathsList.split(pathsDelimiter)).forEach( - e -> pathsAcceptingParams.add(e.trim())); + if (pathsList != null) { + for (String element : pathsList.split(pathsDelimiter)) { + pathsAcceptingParams.add(element.trim()); + } } } Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/WebdavFixFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/WebdavFixFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/WebdavFixFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/filters/WebdavFixFilter.java Sun Mar 13 10:59:08 2016 @@ -19,6 +19,7 @@ package org.apache.catalina.filters; import java.io.IOException; import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; import javax.servlet.GenericFilter; import javax.servlet.ServletException; import javax.servlet.ServletRequest; @@ -74,6 +75,16 @@ public class WebdavFixFilter extends Gen private static final String UA_MINIDIR_5_2_3790 = "Microsoft-WebDAV-MiniRedir/5.2.3790"; + @Override + public void init(FilterConfig filterConfig) throws ServletException { + // NOOP + } + + @Override + public void destroy() { + // NOOP + } + /** * Check for the broken MS WebDAV client and if detected issue a re-direct * that hopefully will cause the non-broken client to be used. Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java Sun Mar 13 10:59:08 2016 @@ -93,8 +93,8 @@ public class MessageDispatchInterceptor } - public boolean addToQueue(ChannelMessage msg, Member[] destination, - InterceptorPayload payload) { + public boolean addToQueue(final ChannelMessage msg, final Member[] destination, + final InterceptorPayload payload) { Runnable r = new Runnable() { @Override public void run() { Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java Sun Mar 13 10:59:08 2016 @@ -154,7 +154,7 @@ public class StaticMembershipInterceptor if ( (Channel.SND_RX_SEQ&svc)==Channel.SND_RX_SEQ ) super.start(Channel.SND_RX_SEQ); if ( (Channel.SND_TX_SEQ&svc)==Channel.SND_TX_SEQ ) super.start(Channel.SND_TX_SEQ); final ChannelInterceptorBase base = this; - for (Member member : members) { + for (final Member member : members) { Thread t = new Thread() { @Override public void run() { Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/CustomObjectInputStream.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/CustomObjectInputStream.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/CustomObjectInputStream.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/CustomObjectInputStream.java Sun Mar 13 10:59:08 2016 @@ -112,7 +112,7 @@ public final class CustomObjectInputStre reportedClasses = reportedClassCache.get(classLoader); } if (reportedClasses == null) { - reportedClasses = Collections.newSetFromMap(new ConcurrentHashMap<>()); + reportedClasses = Collections.newSetFromMap(new ConcurrentHashMap<String,Boolean>()); Set<String> original; synchronized (reportedClassCache) { original = reportedClassCache.putIfAbsent(classLoader, reportedClasses); Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java Sun Mar 13 10:59:08 2016 @@ -206,6 +206,12 @@ public class CrawlerSessionManagerValve @Override + public void valueBound(HttpSessionBindingEvent event) { + // NOOP + } + + + @Override public void valueUnbound(HttpSessionBindingEvent event) { String clientIp = sessionIdClientIp.remove(event.getSession().getId()); if (clientIp != null) { Modified: tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2Parser.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2Parser.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2Parser.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2Parser.java Sun Mar 13 10:59:08 2016 @@ -556,17 +556,9 @@ class Http2Parser { */ boolean fill(boolean block, byte[] data, int offset, int length) throws IOException; - default boolean fill(boolean block, byte[] data) throws IOException { - return fill(block, data, 0, data.length); - } + boolean fill(boolean block, byte[] data) throws IOException; - default boolean fill(boolean block, ByteBuffer data, int len) throws IOException { - boolean result = fill(block, data.array(), data.arrayOffset(), len); - if (result) { - data.position(data.position() + len); - } - return result; - } + boolean fill(boolean block, ByteBuffer data, int len) throws IOException; int getMaxFrameSize(); } Modified: tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Sun Mar 13 10:59:08 2016 @@ -1055,6 +1055,20 @@ public class Http2UpgradeHandler extends // ----------------------------------------------- Http2Parser.Input methods @Override + public boolean fill(boolean block, byte[] data) throws IOException { + return fill(block, data, 0, data.length); + } + + @Override + public boolean fill(boolean block, ByteBuffer data, int len) throws IOException { + boolean result = fill(block, data.array(), data.arrayOffset(), len); + if (result) { + data.position(data.position() + len); + } + return result; + } + + @Override public boolean fill(boolean block, byte[] data, int offset, int length) throws IOException { int len = length; int pos = offset; Modified: tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Stream.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Stream.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Stream.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/coyote/http2/Stream.java Sun Mar 13 10:59:08 2016 @@ -417,7 +417,7 @@ public class Stream extends AbstractStre } - private static void push(Http2UpgradeHandler handler, Request request, Stream stream) + private static void push(final Http2UpgradeHandler handler, final Request request, final Stream stream) throws IOException { if (org.apache.coyote.Constants.IS_SECURITY_ENABLED) { try { Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/dbcp/dbcp2/PoolingConnection.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/dbcp/dbcp2/PoolingConnection.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/dbcp/dbcp2/PoolingConnection.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/dbcp/dbcp2/PoolingConnection.java Sun Mar 13 10:59:08 2016 @@ -332,23 +332,23 @@ public class PoolingConnection extends D @SuppressWarnings({"rawtypes", "unchecked"}) // Unable to find way to avoid this PoolablePreparedStatement pps = new PoolablePreparedStatement( getDelegate().prepareStatement(key.getSql()), key, _pstmtPool, this); - return new DefaultPooledObject<>(pps); + return new DefaultPooledObject<DelegatingPreparedStatement>(pps); } - return new DefaultPooledObject<>( + return new DefaultPooledObject<DelegatingPreparedStatement>( new PoolableCallableStatement(getDelegate().prepareCall( key.getSql()), key, _pstmtPool, this)); } else if (null == key.getResultSetType() && null == key.getResultSetConcurrency()){ @SuppressWarnings({"rawtypes", "unchecked"}) // Unable to find way to avoid this PoolablePreparedStatement pps = new PoolablePreparedStatement( getDelegate().prepareStatement(key.getSql(), key.getAutoGeneratedKeys().intValue()), key, _pstmtPool, this); - return new DefaultPooledObject<>(pps); + return new DefaultPooledObject<DelegatingPreparedStatement>(pps); } else { // Both _resultSetType and _resultSetConcurrency are non-null here (both or neither are set by constructors) if(key.getStmtType() == StatementType.PREPARED_STATEMENT) { @SuppressWarnings({"rawtypes", "unchecked"}) // Unable to find way to avoid this PoolablePreparedStatement pps = new PoolablePreparedStatement(getDelegate().prepareStatement( key.getSql(), key.getResultSetType().intValue(),key.getResultSetConcurrency().intValue()), key, _pstmtPool, this); - return new DefaultPooledObject<>(pps); + return new DefaultPooledObject<DelegatingPreparedStatement>(pps); } - return new DefaultPooledObject<>( + return new DefaultPooledObject<DelegatingPreparedStatement>( new PoolableCallableStatement( getDelegate().prepareCall( key.getSql(),key.getResultSetType().intValue(), key.getResultSetConcurrency().intValue()), key, _pstmtPool, this)); } Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Sun Mar 13 10:59:08 2016 @@ -1892,12 +1892,14 @@ public class AprEndpoint extends Abstrac */ HashMap<Long,Long> merged = new HashMap<>(startCount); for (int n = 0; n < startCount; n++) { - Long newValue = merged.merge(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]), - (v1, v2) -> Long.valueOf(v1.longValue() | v2.longValue())); - if (log.isDebugEnabled()) { - if (newValue.longValue() != desc[2*n]) { + Long old = merged.put(Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n])); + if (old != null) { + // This was a replacement. Merge the old and new value + merged.put(Long.valueOf(desc[2*n+1]), + Long.valueOf(desc[2*n] | old.longValue())); + if (log.isDebugEnabled()) { log.debug(sm.getString("endpoint.apr.pollMergeEvents", - Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]), newValue)); + Long.valueOf(desc[2*n+1]), Long.valueOf(desc[2*n]), old)); } } } Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Sun Mar 13 10:59:08 2016 @@ -661,7 +661,7 @@ public class Nio2Endpoint extends Abstra } }; - public Nio2SocketWrapper(Nio2Channel channel, Nio2Endpoint endpoint) { + public Nio2SocketWrapper(Nio2Channel channel, final Nio2Endpoint endpoint) { super(channel, endpoint); socketBufferHandler = channel.getBufHandler(); @@ -1102,7 +1102,7 @@ public class Nio2Endpoint extends Abstra try { if ((!block && readPending.tryAcquire()) || (block && readPending.tryAcquire(timeout, unit))) { Nio2Endpoint.startInline(); - getSocket().read(dsts, offset, length, timeout, unit, state, new ScatterReadCompletionHandler<>()); + getSocket().read(dsts, offset, length, timeout, unit, state, new ScatterReadCompletionHandler<A>()); Nio2Endpoint.endInline(); } else { throw new ReadPendingException(); @@ -1131,7 +1131,7 @@ public class Nio2Endpoint extends Abstra try { if ((!block && writePending.tryAcquire()) || (block && writePending.tryAcquire(timeout, unit))) { Nio2Endpoint.startInline(); - getSocket().write(srcs, offset, length, timeout, unit, state, new GatherWriteCompletionHandler<>()); + getSocket().write(srcs, offset, length, timeout, unit, state, new GatherWriteCompletionHandler<A>()); Nio2Endpoint.endInline(); } else { throw new WritePendingException(); Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java Sun Mar 13 10:59:08 2016 @@ -793,8 +793,8 @@ public class SecureNio2Channel extends N @Override public <A> void read(final ByteBuffer dst, - long timeout, TimeUnit unit, final A attachment, - CompletionHandler<Integer, ? super A> handler) { + final long timeout, final TimeUnit unit, final A attachment, + final CompletionHandler<Integer, ? super A> handler) { // Check state if (closing || closed) { handler.completed(Integer.valueOf(-1), attachment); @@ -889,9 +889,9 @@ public class SecureNio2Channel extends N } @Override - public <A> void read(ByteBuffer[] dsts, int offset, int length, - long timeout, TimeUnit unit, A attachment, - CompletionHandler<Long, ? super A> handler) { + public <A> void read(final ByteBuffer[] dsts, final int offset, final int length, + final long timeout, final TimeUnit unit, final A attachment, + final CompletionHandler<Long, ? super A> handler) { if (offset < 0 || dsts == null || (offset + length) > dsts.length) { throw new IllegalArgumentException(); } @@ -976,8 +976,8 @@ public class SecureNio2Channel extends N } @Override - public <A> void write(ByteBuffer src, long timeout, TimeUnit unit, - A attachment, CompletionHandler<Integer, ? super A> handler) { + public <A> void write(final ByteBuffer src, final long timeout, final TimeUnit unit, + final A attachment, final CompletionHandler<Integer, ? super A> handler) { // Check state if (closing || closed) { handler.failed(new IOException(sm.getString("channel.nio.ssl.closing")), attachment); @@ -1026,9 +1026,9 @@ public class SecureNio2Channel extends N } @Override - public <A> void write(ByteBuffer[] srcs, int offset, int length, - long timeout, TimeUnit unit, A attachment, - CompletionHandler<Long, ? super A> handler) { + public <A> void write(final ByteBuffer[] srcs, final int offset, final int length, + final long timeout, final TimeUnit unit, final A attachment, + final CompletionHandler<Long, ? super A> handler) { if ((offset < 0) || (length < 0) || (offset > srcs.length - length)) { throw new IndexOutOfBoundsException(); } Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsFilter.java Sun Mar 13 10:59:08 2016 @@ -78,4 +78,11 @@ public class WsFilter extends GenericFil UpgradeUtil.doUpgrade(sc, req, resp, mappingResult.getConfig(), mappingResult.getPathParams()); } + + @Override + public void destroy() { + // NO-OP + } + + } Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsSessionListener.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsSessionListener.java?rev=1734783&r1=1734782&r2=1734783&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsSessionListener.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/server/WsSessionListener.java Sun Mar 13 10:59:08 2016 @@ -30,6 +30,12 @@ public class WsSessionListener implement @Override + public void sessionCreated(HttpSessionEvent se) { + // NO-OP + } + + + @Override public void sessionDestroyed(HttpSessionEvent se) { wsServerContainer.closeAuthenticatedSession(se.getSession().getId()); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org