You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2023/12/05 17:13:26 UTC

(activemq-artemis) branch main updated: ARTEMIS-4525 determinstic webapp directory names

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

jbertram pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 15dd24754a ARTEMIS-4525 determinstic webapp directory names
     new 6ebd611ed0 This closes #4701
15dd24754a is described below

commit 15dd24754ae8c6c2dd646fbd214f7a76b33b1197
Author: Stephen Higgs <s....@gmail.com>
AuthorDate: Mon Dec 4 11:58:13 2023 -0500

    ARTEMIS-4525 determinstic webapp directory names
    
    This commit uses the war file name as the webapp directory name instead
    of the default directory name that includes random charcters.
---
 .../artemis/component/WebServerComponent.java      |  4 +-
 .../activemq/cli/test/WebServerComponentTest.java  | 49 ++++++++++++++++++----
 2 files changed, 43 insertions(+), 10 deletions(-)

diff --git a/artemis-web/src/main/java/org/apache/activemq/artemis/component/WebServerComponent.java b/artemis-web/src/main/java/org/apache/activemq/artemis/component/WebServerComponent.java
index 62aaff910d..45e8271957 100644
--- a/artemis-web/src/main/java/org/apache/activemq/artemis/component/WebServerComponent.java
+++ b/artemis-web/src/main/java/org/apache/activemq/artemis/component/WebServerComponent.java
@@ -379,7 +379,9 @@ public class WebServerComponent implements ExternalComponent, WebServerComponent
 
       webapp.setWar(warDirectory.resolve(warFile).toString());
 
-      webapp.setAttribute("org.eclipse.jetty.webapp.basetempdir", temporaryWarDir.toFile().getAbsolutePath());
+      String baseTempDir = temporaryWarDir.toFile().getAbsolutePath();
+      webapp.setAttribute("org.eclipse.jetty.webapp.basetempdir", baseTempDir);
+      webapp.setTempDirectory(new File(baseTempDir + File.separator + warFile));
 
       // Set the default authenticator factory to avoid NPE due to the following commit:
       // https://github.com/eclipse/jetty.project/commit/7e91d34177a880ecbe70009e8f200d02e3a0c5dd
diff --git a/artemis-web/src/test/java/org/apache/activemq/cli/test/WebServerComponentTest.java b/artemis-web/src/test/java/org/apache/activemq/cli/test/WebServerComponentTest.java
index 89703333d7..ccce43fee6 100644
--- a/artemis-web/src/test/java/org/apache/activemq/cli/test/WebServerComponentTest.java
+++ b/artemis-web/src/test/java/org/apache/activemq/cli/test/WebServerComponentTest.java
@@ -560,15 +560,8 @@ public class WebServerComponentTest extends Assert {
       createTestWar(warName);
       final String url = "simple-app/";
 
-      AppDTO app = new AppDTO();
-      app.url = url;
-      app.war = warName;
-      BindingDTO bindingDTO = new BindingDTO();
-      bindingDTO.uri = "http://localhost:0";
-      bindingDTO.apps = new ArrayList<>();
-      WebServerDTO webServerDTO = new WebServerDTO();
-      webServerDTO.setBindings(Collections.singletonList(bindingDTO));
-      webServerDTO.path = "";
+      WebServerDTO webServerDTO = createDefaultWebServerDTO(warName, url);
+
       WebServerComponent webServerComponent = new WebServerComponent();
       Assert.assertFalse(webServerComponent.isStarted());
       testedComponents.add(webServerComponent);
@@ -603,6 +596,30 @@ public class WebServerComponentTest extends Assert {
       Assert.assertFalse(webServerComponent.isStarted());
    }
 
+   @Test
+   public void testServerDeterministicWebappName() throws Exception {
+      final String warName = "simple-app.war";
+      createTestWar(warName);
+      final String url = "simple-app/";
+
+      WebServerDTO webServerDTO = createDefaultWebServerDTO(warName, url);
+      WebServerComponent webServerComponent = new WebServerComponent();
+      webServerComponent.configure(webServerDTO, "./target", "./target");
+      WebAppContext ctxt = WebServerComponentTestAccessor.createWebAppContext(webServerComponent, url, warName, Paths.get(".").resolve("target").toAbsolutePath(), null);
+      testedComponents.add(webServerComponent);
+
+      Assert.assertFalse(webServerComponent.isStarted());
+      webServerComponent.start();
+
+      File tmpDir = ctxt.getTempDirectory();
+      Assert.assertTrue(tmpDir.getParentFile().listFiles().length == 1);
+      Assert.assertEquals(tmpDir.getName(), warName);
+      Assert.assertTrue(webServerComponent.isStarted());
+
+      webServerComponent.stop(true);
+      Assert.assertFalse(webServerComponent.isStarted());
+   }
+
    @Test
    public void testDefaultRootRedirect() throws Exception {
       testRootRedirect(null, 404, null);
@@ -642,6 +659,20 @@ public class WebServerComponentTest extends Assert {
       }
    }
 
+   private static WebServerDTO createDefaultWebServerDTO(String warName, String url) {
+      AppDTO app = new AppDTO();
+      app.url = url;
+      app.war = warName;
+      BindingDTO bindingDTO = new BindingDTO();
+      bindingDTO.uri = "http://localhost:0";
+      bindingDTO.apps = new ArrayList<>();
+      bindingDTO.apps.add(app);
+      WebServerDTO webServerDTO = new WebServerDTO();
+      webServerDTO.setBindings(Collections.singletonList(bindingDTO));
+      webServerDTO.path = "";
+      return webServerDTO;
+   }
+
    private void createTestWar(String warName) throws Exception {
       File warFile = new File("target", warName);
       File srcFile = new File("src/test/webapp");