You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2016/03/13 11:59:08 UTC

svn commit: r1734783 - in /tomcat/tc8.5.x/trunk/java: javax/el/ org/apache/catalina/connector/ org/apache/catalina/filters/ org/apache/catalina/tribes/group/interceptors/ org/apache/catalina/util/ org/apache/catalina/valves/ org/apache/coyote/http2/ or...

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org