This is an automated email from the ASF dual-hosted git repository.

gaul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git


The following commit(s) were added to refs/heads/master by this push:
     new d404391651 JCLOUDS-1602: Upgrade to Jetty 9.4.46
d404391651 is described below

commit d4043916518f73fab75756e46e41b53ecd37c644
Author: Andrew Gaul <g...@apache.org>
AuthorDate: Sun Jun 12 13:04:02 2022 +0900

    JCLOUDS-1602: Upgrade to Jetty 9.4.46
    
    Remove BaseJettyTest which BaseMockWebServerTest superseded.
---
 .../test/java/org/jclouds/http/BaseJettyTest.java  | 331 ---------------------
 project/pom.xml                                    |   2 +-
 2 files changed, 1 insertion(+), 332 deletions(-)

diff --git a/core/src/test/java/org/jclouds/http/BaseJettyTest.java 
b/core/src/test/java/org/jclouds/http/BaseJettyTest.java
deleted file mode 100644
index 2e28cd065c..0000000000
--- a/core/src/test/java/org/jclouds/http/BaseJettyTest.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.http;
-
-import static com.google.common.base.Throwables.getStackTraceAsString;
-import static com.google.common.hash.Hashing.md5;
-import static com.google.common.io.BaseEncoding.base64;
-import static com.google.common.net.HttpHeaders.CONTENT_DISPOSITION;
-import static com.google.common.net.HttpHeaders.CONTENT_ENCODING;
-import static com.google.common.net.HttpHeaders.CONTENT_LANGUAGE;
-import static com.google.common.net.HttpHeaders.CONTENT_LENGTH;
-import static 
com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
-import static javax.servlet.http.HttpServletResponse.SC_OK;
-import static org.jclouds.Constants.PROPERTY_RELAX_HOSTNAME;
-import static org.jclouds.Constants.PROPERTY_TRUST_ALL_CERTS;
-import static org.jclouds.providers.AnonymousProviderMetadata.forApiOnEndpoint;
-import static org.jclouds.util.Closeables2.closeQuietly;
-import static org.jclouds.util.Strings2.toStringAndClose;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.jclouds.ContextBuilder;
-import org.jclouds.io.ByteStreams2;
-import org.jclouds.utils.TestUtils;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Optional;
-import org.testng.annotations.Parameters;
-
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.LinkedHashMultimap;
-import com.google.common.collect.Multimap;
-import com.google.common.io.ByteSource;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-public abstract class BaseJettyTest {
-
-   protected static final String XML = "<foo><bar>whoppers</bar></foo>";
-   protected static final String XML2 = "<foo><bar>chubbs</bar></foo>";
-   private static final ByteSource oneHundredOneConstitutions = 
TestUtils.randomByteSource().slice(0, 101 * 45118);
-
-   protected Server server = null;
-   protected IntegrationTestClient client;
-   protected Injector injector;
-   private AtomicInteger cycle = new AtomicInteger(0);
-   private Server server2;
-   protected int testPort;
-   protected String md5;
-   static final Pattern actionPattern = 
Pattern.compile("/objects/(.*)/action/([a-z]*);?(.*)");
-
-   @BeforeClass
-   @Parameters({ "test-jetty-port" })
-   public void setUpJetty(@Optional("8123") final int testPort) throws 
Exception {
-      this.testPort = testPort;
-
-      md5 = base64().encode(oneHundredOneConstitutions.hash(md5()).asBytes());
-
-      Handler server1Handler = new AbstractHandler() {
-         public void handle(String target, Request baseRequest, 
HttpServletRequest request, HttpServletResponse response)
-               throws IOException, ServletException {
-            if (failIfNoContentLength(request, response)) {
-               return;
-            } else if (target.indexOf("sleep") > 0) {
-               sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
-               response.setContentType("text/xml");
-               response.setStatus(SC_OK);
-            } else if (target.indexOf("redirect") > 0) {
-               // in OpenJDK 7.0, expect continue handling is enforced, so we
-               // have to consume the stream.
-               // http://hg.openjdk.java.net/jdk7/tl/jdk/rev/045aeb76b0ff
-               // getInputStream address the expect-continue, per jetty docs
-               // 
http://wiki.eclipse.org/Jetty/Feature/1xx_Responses#100_Continue
-               toStringAndClose(request.getInputStream());
-               response.sendRedirect("https://localhost:"; + (testPort + 1) + 
"/");
-            } else if (target.indexOf("101constitutions") > 0) {
-               response.setContentType("text/plain");
-               response.setHeader("Content-MD5", md5);
-               response.setStatus(SC_OK);
-               oneHundredOneConstitutions.copyTo(response.getOutputStream());
-            } else if (request.getMethod().equals("PUT")) {
-               if (request.getContentLength() > 0) {
-                  response.setStatus(SC_OK);
-                  
response.getWriter().println(toStringAndClose(request.getInputStream()) + 
"PUT");
-               } else {
-                  response.setStatus(SC_OK);
-               }
-            } else if (request.getMethod().equals("POST")) {
-               // don't redirect large objects
-               if (request.getContentLength() < 10240 && 
redirectEveryTwentyRequests(request, response))
-                  return;
-               if (failEveryTenRequests(request, response))
-                  return;
-               if (request.getContentLength() > 0) {
-                  handlePost(request, response);
-               } else {
-                  handleAction(request, response);
-               }
-            } else if (request.getHeader("range") != null) {
-               response.sendError(404, "no content");
-            } else if (request.getHeader("test") != null) {
-               response.setContentType("text/plain");
-               response.setStatus(SC_OK);
-               response.getWriter().println("test");
-            } else if (request.getMethod().equals("HEAD")) {
-               // by HTML specification, HEAD response MUST NOT include a body
-               response.setContentType("text/xml");
-               response.setStatus(SC_OK);
-            } else {
-               if (failEveryTenRequests(request, response))
-                  return;
-               response.setContentType("text/xml");
-               response.setStatus(SC_OK);
-               response.getWriter().println(XML);
-            }
-            Request.class.cast(request).setHandled(true);
-         }
-
-      };
-
-      server = new Server(testPort);
-      server.setHandler(server1Handler);
-      server.start();
-
-      setupAndStartSSLServer(testPort);
-
-      Properties properties = new Properties();
-      addConnectionProperties(properties);
-      client = newBuilder(testPort, properties, 
createConnectionModule()).buildApi(IntegrationTestClient.class);
-      assert client != null;
-
-      assert client.newStringBuilder() != null;
-   }
-
-   private static void handlePost(HttpServletRequest request, 
HttpServletResponse response) throws IOException {
-      InputStream body = request.getInputStream();
-      try {
-         if (request.getHeader("Content-MD5") != null) {
-            String expectedMd5 = request.getHeader("Content-MD5");
-            String realMd5FromRequest;
-            realMd5FromRequest = 
base64().encode(ByteStreams2.hashAndClose(body, md5()).asBytes());
-            boolean matched = expectedMd5.equals(realMd5FromRequest);
-            if (matched) {
-               response.setStatus(SC_OK);
-               response.addHeader("x-Content-MD5", realMd5FromRequest);
-            } else {
-               response.sendError(500, "didn't match");
-            }
-         } else {
-            String responseString = (request.getContentLength() < 10240) ? 
toStringAndClose(body) + "POST" : "POST";
-            body = null;
-            for (String header : new String[] { CONTENT_DISPOSITION, 
CONTENT_LANGUAGE, CONTENT_ENCODING })
-               if (request.getHeader(header) != null) {
-                  response.addHeader("x-" + header, request.getHeader(header));
-               }
-            response.setStatus(SC_OK);
-            response.getWriter().println(responseString);
-         }
-         Request.class.cast(request).setHandled(true);
-      } catch (IOException e) {
-         closeQuietly(body);
-         response.sendError(500, getStackTraceAsString(e));
-      }
-   }
-
-   protected void setupAndStartSSLServer(final int testPort) throws Exception {
-      Handler server2Handler = new AbstractHandler() {
-         public void handle(String target, Request baseRequest, 
HttpServletRequest request, HttpServletResponse response)
-               throws IOException, ServletException {
-            if (request.getMethod().equals("PUT")) {
-               if (request.getContentLength() > 0) {
-                  response.setStatus(SC_OK);
-                  String text = toStringAndClose(request.getInputStream());
-                  response.getWriter().println(text + "PUTREDIRECT");
-               }
-            } else if (request.getMethod().equals("POST")) {
-               if (request.getContentLength() > 0) {
-                  handlePost(request, response);
-               } else {
-                  handleAction(request, response);
-               }
-            } else if (request.getMethod().equals("HEAD")) {
-               // by HTML specification, HEAD response MUST NOT include a body
-               response.setContentType("text/xml");
-               response.setStatus(SC_OK);
-            } else {
-               response.setContentType("text/xml");
-               response.setStatus(SC_OK);
-               response.getWriter().println(XML2);
-            }
-            Request.class.cast(request).setHandled(true);
-         }
-      };
-
-      server2 = new Server();
-      server2.setHandler(server2Handler);
-
-      SslSelectChannelConnector ssl_connector = new 
SslSelectChannelConnector();
-      ssl_connector.setPort(testPort + 1);
-      ssl_connector.setMaxIdleTime(30000);
-      SslContextFactory ssl = ssl_connector.getSslContextFactory();
-      ssl.setKeyStorePath("src/test/resources/test.jks");
-      ssl.setKeyStorePassword("jclouds");
-      ssl.setTrustStore("src/test/resources/test.jks");
-      ssl.setTrustStorePassword("jclouds");
-
-      server2.setConnectors(new Connector[] { ssl_connector });
-
-      server2.start();
-   }
-
-   public static ContextBuilder newBuilder(int testPort, Properties 
properties, Module... connectionModules) {
-      properties.setProperty(PROPERTY_TRUST_ALL_CERTS, "true");
-      properties.setProperty(PROPERTY_RELAX_HOSTNAME, "true");
-      return ContextBuilder
-            .newBuilder(forApiOnEndpoint(IntegrationTestClient.class, 
"http://localhost:"; + testPort))
-            .modules(ImmutableSet.<Module> 
copyOf(connectionModules)).overrides(properties);
-   }
-
-   @AfterClass
-   public void tearDownJetty() throws Exception {
-      closeQuietly(client);
-      if (server2 != null)
-         server2.stop();
-      server.stop();
-   }
-
-   protected abstract void addConnectionProperties(Properties props);
-
-   protected abstract Module createConnectionModule();
-
-   /**
-    * Fails every 10 requests.
-    * 
-    * @param request
-    * @param response
-    * @return
-    * @throws IOException
-    */
-   protected boolean failEveryTenRequests(HttpServletRequest request, 
HttpServletResponse response) throws IOException {
-      if (cycle.incrementAndGet() % 10 == 0) {
-         response.sendError(500, "unlucky 10");
-         Request.class.cast(request).setHandled(true);
-         return true;
-      }
-      return false;
-   }
-
-   protected boolean redirectEveryTwentyRequests(HttpServletRequest request, 
HttpServletResponse response)
-         throws IOException {
-      if (cycle.incrementAndGet() % 20 == 0) {
-         response.sendRedirect("http://localhost:"; + (testPort + 1) + "/");
-         Request.class.cast(request).setHandled(true);
-         return true;
-      }
-      return false;
-   }
-
-   protected boolean failIfNoContentLength(HttpServletRequest request, 
HttpServletResponse response) throws IOException {
-      Multimap<String, String> realHeaders = LinkedHashMultimap.create();
-      Enumeration<String> headers = request.getHeaderNames();
-      while (headers.hasMoreElements()) {
-         String header = headers.nextElement().toString();
-         Enumeration<String> values = request.getHeaders(header);
-         while (values.hasMoreElements()) {
-            realHeaders.put(header, values.nextElement().toString());
-         }
-      }
-      if (realHeaders.get(CONTENT_LENGTH) == null) {
-         response.getWriter().println("no content length!");
-         response.getWriter().println(realHeaders.toString());
-         response.sendError(500, "no content length!");
-         Request.class.cast(request).setHandled(true);
-         return true;
-      }
-      return false;
-   }
-
-   private void handleAction(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-      final Matcher matcher = actionPattern.matcher(request.getRequestURI());
-      boolean matchFound = matcher.find();
-      if (matchFound) {
-         String objectId = matcher.group(1);
-         String action = matcher.group(2);
-         Builder<String, String> options = ImmutableMap.<String, String> 
builder();
-         if (matcher.groupCount() == 3) {
-            
options.putAll(Splitter.on(';').withKeyValueSeparator("=").split(matcher.group(3)));
-         }
-         response.setStatus(SC_OK);
-         response.getWriter().println(objectId + "->" + action + ":" + 
options.build());
-      } else {
-         response.sendError(500, "no content");
-      }
-   }
-
-}
diff --git a/project/pom.xml b/project/pom.xml
index bb4400084c..33982eba48 100644
--- a/project/pom.xml
+++ b/project/pom.xml
@@ -230,7 +230,7 @@
     <auto-service.version>1.0-rc3</auto-service.version>
     <auto-value.version>1.4.1</auto-value.version>
 
-    <jetty.version>8.1.8.v20121106</jetty.version>
+    <jetty.version>9.4.46.v20220331</jetty.version>
     <javax.ws.rs-api.version>2.0.1</javax.ws.rs-api.version>
 
     
<modernizer-maven-annotations.version>1.8.0</modernizer-maven-annotations.version>

Reply via email to