Author: markt
Date: Fri Feb  1 13:25:42 2019
New Revision: 1852739

URL: http://svn.apache.org/viewvc?rev=1852739&view=rev
Log:
Fix compilation and test issues when using Java 11:
- References to deprecated o.a.c.util.Base64 class updated to use replacement
- Same class excluded from build when using Java 11+
- Remove use of bootclasspath as it breaks with Java 11 due to Java 11 using a 
different file structure and it was only present to prevent a warning

Modified:
    tomcat/tc7.0.x/trunk/build.xml
    
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java
    tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc7.0.x/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/build.xml?rev=1852739&r1=1852738&r2=1852739&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/build.xml (original)
+++ tomcat/tc7.0.x/trunk/build.xml Fri Feb  1 13:25:42 2019
@@ -184,6 +184,9 @@
   <available file="/dev/urandom" property="test.jvmarg.egd" 
value="-Djava.security.egd=file:/dev/./urandom"/>
   <property name="test.jvmarg.egd" value="" />
 
+  <!-- Check for Java 11 -->
+  <available classname="java.net.http.HttpClient" property="java11.present"/>
+
   <!-- Include .gitignore in src distributions. -->
   <!-- .git, .gitattributes and .gitignore are in defaultexcludes since Ant 
1.8.2 -->
   <defaultexcludes add="**/.git" />
@@ -661,6 +664,7 @@
       <exclude name="org/apache/naming/factory/webservices/**" />
       <!-- Exclude classes that require Java 7 to compile -->
       <exclude 
name="org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java" />
+      <exclude name="org/apache/catalina/util/Base64.java" if="java11.present" 
/>
       <exclude name="org/apache/tomcat/websocket/**" />
     </javac>
     <!-- Copy static resource files -->
@@ -700,12 +704,6 @@
       <!-- Only include classes that require Java 7 to compile -->
       <include 
name="org/apache/catalina/startup/SafeForkJoinWorkerThreadFactory.java" />
       <include name="org/apache/tomcat/websocket/**" />
-      <!-- Not required but prevents a warning being displayed -->
-      <bootclasspath>
-        <fileset dir="${java.7.home}/jre/lib">
-          <include name="*.jar"/>
-        </fileset>
-      </bootclasspath>
     </javac>
   </target>
 
@@ -1341,6 +1339,7 @@
       <include name="org/apache/**" />
       <include name="javax/**" />
       <include name="util/**" />
+      <exclude name="org/apache/catalina/util/TesterBase64Performance.java" 
if="java11.present" />
       <exclude unless="java.7.home" name="org/apache/catalina/websocket/**" />
       <exclude unless="java.7.home" name="org/apache/tomcat/websocket/**" />
     </javac>

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java?rev=1852739&r1=1852738&r2=1852739&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java 
Fri Feb  1 13:25:42 2019
@@ -34,17 +34,17 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.catalina.connector.RequestFacade;
-import org.apache.catalina.util.Base64;
 import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.codec.binary.Base64;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
  * Provides the base implementation of a Servlet for processing WebSocket
  * connections as per RFC6455. It is expected that applications will extend 
this
  * implementation and provide application specific functionality.
- * 
+ *
  * @deprecated  Replaced by the JSR356 WebSocket 1.1 implementation and will be
- *              removed in Tomcat 8.0.x.  
+ *              removed in Tomcat 8.0.x.
  */
 @Deprecated
 public abstract class WebSocketServlet extends HttpServlet {
@@ -193,7 +193,7 @@ public abstract class WebSocketServlet e
 
         sha1Helper.reset();
         sha1Helper.update(key.getBytes(B2CConverter.ISO_8859_1));
-        String result = Base64.encode(sha1Helper.digest(WS_ACCEPT));
+        String result = 
Base64.encodeBase64String(sha1Helper.digest(WS_ACCEPT));
 
         sha1Helpers.add(sha1Helper);
 

Modified: 
tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java?rev=1852739&r1=1852738&r2=1852739&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java 
(original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/catalina/websocket/TestWebSocket.java 
Fri Feb  1 13:25:42 2019
@@ -44,11 +44,11 @@ import org.apache.catalina.deploy.Contex
 import org.apache.catalina.servlets.DefaultServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
-import org.apache.catalina.util.Base64;
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.C2BConverter;
 import org.apache.tomcat.util.buf.CharChunk;
+import org.apache.tomcat.util.codec.binary.Base64;
 import org.apache.tomcat.websocket.TesterEchoServer;
 
 /**
@@ -258,12 +258,12 @@ public class TestWebSocket extends Tomca
         MessageDigest sha1Helper = MessageDigest.getInstance("SHA1");
         sha1Helper.reset();
         sha1Helper.update("TODO".getBytes(B2CConverter.ISO_8859_1));
-        String source = Base64.encode(sha1Helper.digest(WS_ACCEPT));
+        String source = 
Base64.encodeBase64String(sha1Helper.digest(WS_ACCEPT));
         Assert.assertEquals(source,accept);
 
         sha1Helper.reset();
         sha1Helper.update("TOD".getBytes(B2CConverter.ISO_8859_1));
-        source = Base64.encode(sha1Helper.digest(WS_ACCEPT));
+        source = Base64.encodeBase64String(sha1Helper.digest(WS_ACCEPT));
         Assert.assertFalse(source.equals(accept));
         // Finished with the socket
         client.close();

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1852739&r1=1852738&r2=1852739&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Fri Feb  1 13:25:42 2019
@@ -210,6 +210,12 @@
         Update the packaged version of the Tomcat Native Library to 1.2.21 to
         pick up the memory leak fixes when using NIO/NIO2 with OpenSSL. (markt)
       </update>
+      <fix>
+        Enable compilation and test execution with Java 11. Note that the
+        deprecated class <code>org.apache.catalina.util.Base64</code> will be
+        excluded from the build in this case as it depends on JRE classes that
+        have been removed in Java 11 onwards. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to