This is an automated email from the ASF dual-hosted git repository. olamy pushed a commit to branch jetty-upgrade in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git
commit 8ed322eb11e7abf81fd39375b7a9699f34b5addb Author: Olivier Lamy <[email protected]> AuthorDate: Thu Aug 5 19:14:52 2021 +1000 [MJAVADOC-687] Upgrade Jetty Version to last 9.4.x Signed-off-by: Olivier Lamy <[email protected]> --- pom.xml | 23 +++++++++--- .../maven/plugins/javadoc/JavadocUtilTest.java | 43 +++++++++++----------- .../apache/maven/plugins/javadoc/ProxyServer.java | 41 +++++++++++++-------- 3 files changed, 65 insertions(+), 42 deletions(-) diff --git a/pom.xml b/pom.xml index 14eacd7..c027184 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,7 @@ under the License. <wagonVersion>2.4</wagonVersion> <sonatypeAetherVersion>1.13.1</sonatypeAetherVersion> <plexus-java.version>1.0.7</plexus-java.version> + <jetty.version>9.4.43.v20210629</jetty.version> <!-- for ITs --> <sitePluginVersion>3.3</sitePluginVersion> <projectInfoReportsPluginVersion>2.7</projectInfoReportsPluginVersion> @@ -333,15 +334,27 @@ under the License. <scope>test</scope> </dependency> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jetty</artifactId> - <version>6.1.26</version> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + <version>${jetty.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.mortbay.jetty</groupId> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-proxy</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-client</artifactId> - <version>6.1.26</version> + <version>${jetty.version}</version> <scope>test</scope> </dependency> <dependency> diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java index 8260d66..3a7c93f 100644 --- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java +++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java @@ -37,6 +37,7 @@ import java.util.Map; import java.util.Set; import java.util.regex.PatternSyntaxException; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -46,10 +47,12 @@ import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Settings; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.FileUtils; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.handler.AbstractHandler; -import org.mortbay.jetty.handler.MovedContextHandler; -import org.mortbay.util.ByteArrayISO8859Writer; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.AbstractHandler; +import org.eclipse.jetty.server.handler.MovedContextHandler; +import org.eclipse.jetty.util.ByteArrayISO8859Writer; import static org.assertj.core.api.Assertions.assertThat; @@ -473,12 +476,11 @@ public class JavadocUtilTest try { redirectServer = new Server( 0 ); - redirectServer.addHandler( new AbstractHandler() + redirectServer.setHandler( new AbstractHandler() { @Override - public void handle( String target, HttpServletRequest request, HttpServletResponse response, - int dispatch ) - throws IOException + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { response.setStatus( HttpServletResponse.SC_OK ); ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer( 100 ); @@ -495,12 +497,12 @@ public class JavadocUtilTest server = new Server( 0 ); MovedContextHandler handler = new MovedContextHandler(); - int redirectPort = redirectServer.getConnectors()[0].getLocalPort(); + int redirectPort = ((ServerConnector)redirectServer.getConnectors()[0]).getLocalPort(); handler.setNewContextURL( "http://localhost:" + redirectPort ); - server.addHandler( handler ); + server.setHandler( handler ); server.start(); - URL url = new URI( "http://localhost:" + server.getConnectors()[0].getLocalPort() ).toURL(); + URL url = new URI( "http://localhost:" + ((ServerConnector)redirectServer.getConnectors()[0]).getLocalPort() ).toURL(); URL redirectUrl = JavadocUtil.getRedirectUrl( url, new Settings() ); assertTrue( redirectUrl.toString().startsWith( "http://localhost:" + redirectPort ) ); @@ -522,12 +524,11 @@ public class JavadocUtilTest try { server = new Server( 0 ); - server.addHandler( new AbstractHandler() + server.setHandler( new AbstractHandler() { @Override - public void handle( String target, HttpServletRequest request, HttpServletResponse response, - int dispatch ) - throws IOException + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { response.setStatus( HttpServletResponse.SC_OK ); ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer( 100 ); @@ -542,7 +543,7 @@ public class JavadocUtilTest } ); server.start(); - URL url = new URI( "http://localhost:" + server.getConnectors()[0].getLocalPort() ).toURL(); + URL url = new URI( "http://localhost:" + ((ServerConnector)server.getConnectors()[0]).getLocalPort() ).toURL(); URL redirectUrl = JavadocUtil.getRedirectUrl( url, new Settings() ); assertEquals( url.toURI(), redirectUrl.toURI() ); @@ -564,13 +565,13 @@ public class JavadocUtilTest try { server = new Server( 0 ); - server.addHandler( new AbstractHandler() + server.setHandler( new AbstractHandler() { @Override - public void handle( String target, HttpServletRequest request, HttpServletResponse response, - int dispatch ) - throws IOException + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException { + if ( request.getHeader( "Accept" ) == null ) { response.setStatus( HttpServletResponse.SC_FORBIDDEN ); @@ -584,7 +585,7 @@ public class JavadocUtilTest } ); server.start(); - URL url = new URI( "http://localhost:" + server.getConnectors()[0].getLocalPort() ).toURL(); + URL url = new URI( "http://localhost:" + ((ServerConnector)server.getConnectors()[0]).getLocalPort() ).toURL(); JavadocUtil.getRedirectUrl( url, new Settings() ); } finally diff --git a/src/test/java/org/apache/maven/plugins/javadoc/ProxyServer.java b/src/test/java/org/apache/maven/plugins/javadoc/ProxyServer.java index 7c1ad2d..deb6507 100644 --- a/src/test/java/org/apache/maven/plugins/javadoc/ProxyServer.java +++ b/src/test/java/org/apache/maven/plugins/javadoc/ProxyServer.java @@ -22,6 +22,8 @@ package org.apache.maven.plugins.javadoc; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.Map; import javax.servlet.ServletException; @@ -30,13 +32,12 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.mortbay.jetty.Connector; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.bio.SocketConnector; -import org.mortbay.jetty.security.B64Code; -import org.mortbay.jetty.servlet.Context; -import org.mortbay.jetty.servlet.ServletHolder; -import org.mortbay.proxy.AsyncProxyServlet; +import org.eclipse.jetty.proxy.AsyncProxyServlet; +import org.eclipse.jetty.proxy.ConnectHandler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; /** * A Proxy server. @@ -65,11 +66,17 @@ class ProxyServer { proxyServer = new Server(); - proxyServer.addConnector( getDefaultConnector( hostName, port ) ); + proxyServer.addConnector(getDefaultConnector( hostName, port, proxyServer )); - Context context = new Context( proxyServer, "/", 0 ); + // Setup proxy handler to handle CONNECT methods + ConnectHandler proxy = new ConnectHandler(); + proxyServer.setHandler(proxy); + + // Setup proxy servlet + ServletContextHandler context = new ServletContextHandler(proxy, "/", true, false); + ServletHolder appServletHolder = new ServletHolder(proxyServlet); + context.addServlet(appServletHolder, "/*"); - context.addServlet( new ServletHolder( proxyServlet ), "/" ); } /** @@ -77,7 +84,7 @@ class ProxyServer */ public String getHostName() { - Connector connector = proxyServer.getConnectors()[0]; + ServerConnector connector = (ServerConnector) proxyServer.getConnectors()[0]; return connector.getHost(); } @@ -86,7 +93,7 @@ class ProxyServer */ public int getPort() { - Connector connector = proxyServer.getConnectors()[0]; + ServerConnector connector = (ServerConnector) proxyServer.getConnectors()[0]; return ( connector.getLocalPort() <= 0 ? connector.getPort() : connector.getLocalPort() ); } @@ -115,9 +122,9 @@ class ProxyServer proxyServer = null; } - private Connector getDefaultConnector( String hostName, int port ) + private ServerConnector getDefaultConnector( String hostName, int port, Server server ) { - Connector connector = new SocketConnector(); + ServerConnector connector = new ServerConnector( server ); if ( hostName != null ) { connector.setHost( hostName ); @@ -198,8 +205,10 @@ class ProxyServer String proxyAuthorization = request.getHeader( "Proxy-Authorization" ); if ( proxyAuthorization != null && proxyAuthorization.startsWith( "Basic " ) ) { - String proxyAuth = proxyAuthorization.substring( 6 ); - String authorization = B64Code.decode( proxyAuth ); + String proxyAuth = proxyAuthorization.substring("Basic ".length()); + String authorization = new String(Base64.getDecoder().decode(proxyAuth), StandardCharsets.UTF_8); + + String[] authTokens = authorization.split( ":" ); String user = authTokens[0]; String password = authTokens[1];
