From a1a0afaf593e435775d1677dc1755e918f666eb1 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 7 Aug 2020 11:22:50 -0500 Subject: [PATCH 1/3] Remove long dead jetty-overlay-deployer module --- jetty-overlay-deployer/pom.xml | 64 - .../src/main/assembly/config.xml | 18 - .../src/main/config/etc/jetty-overlay.xml | 16 - .../src/main/config/modules/overlay.mod | 14 - .../main/config/overlays/instances/README.TXT | 27 - .../src/main/config/overlays/nodes/README.TXT | 20 - .../main/config/overlays/templates/README.TXT | 32 - .../main/config/overlays/webapps/README.TXT | 6 - .../jetty/overlays/OverlayedAppProvider.java | 1485 ----------------- .../jetty/overlays/TemplateContext.java | 263 --- .../eclipse/jetty/overlays/package-info.java | 23 - .../eclipse/jetty/overlays/OverlayServer.java | 94 -- .../overlays/OverlayedAppProviderTest.java | 587 ------- .../myfoo=blue/WEB-INF/classes/resourceA.txt | 1 - .../myfoo=blue/WEB-INF/classes/resourceB.txt | 1 - .../WEB-INF/lib-overlay/resources.jar | Bin 921 -> 0 bytes .../instances/myfoo=blue/WEB-INF/overlay.xml | 15 - .../myfoo=blue/WEB-INF/web-overlay.xml | 21 - .../myfoo=blue/lib/META-INF/MANIFEST.MF | 3 - .../instances/myfoo=blue/lib/resources.jar | Bin 921 -> 0 bytes .../overlays/instances/myfoo=blue/logo.png | Bin 2128 -> 0 bytes .../webapp/WEB-INF/classes/resourceA.txt | 1 - .../webapp/WEB-INF/classes/resourceB.txt | 1 - .../instances/myfoo=blue/webapp/logo.png | Bin 2128 -> 0 bytes .../myfoo=green/WEB-INF/classes/resourceA.txt | 1 - .../myfoo=green/WEB-INF/classes/resourceB.txt | 1 - .../WEB-INF/lib-overlay/resources.jar | Bin 925 -> 0 bytes .../instances/myfoo=green/WEB-INF/overlay.xml | 15 - .../myfoo=green/WEB-INF/web-overlay.xml | 21 - .../myfoo=green/lib/META-INF/MANIFEST.MF | 3 - .../instances/myfoo=green/lib/resources.jar | Bin 925 -> 0 bytes .../overlays/instances/myfoo=green/logo.png | Bin 11230 -> 0 bytes .../webapp/WEB-INF/classes/resourceA.txt | 1 - .../webapp/WEB-INF/classes/resourceB.txt | 1 - .../instances/myfoo=green/webapp/logo.png | Bin 11230 -> 0 bytes .../myfoo=red/WEB-INF/classes/resourceA.txt | 1 - .../myfoo=red/WEB-INF/classes/resourceB.txt | 1 - .../WEB-INF/lib-overlay/resources.jar | Bin 917 -> 0 bytes .../instances/myfoo=red/WEB-INF/overlay.xml | 15 - .../myfoo=red/WEB-INF/web-overlay.xml | 21 - .../myfoo=red/lib/META-INF/MANIFEST.MF | 3 - .../instances/myfoo=red/lib/resources.jar | Bin 917 -> 0 bytes .../overlays/instances/myfoo=red/logo.png | Bin 4499 -> 0 bytes .../webapp/WEB-INF/classes/resourceA.txt | 1 - .../webapp/WEB-INF/classes/resourceB.txt | 1 - .../instances/myfoo=red/webapp/logo.png | Bin 4499 -> 0 bytes .../instances/root=root/WEB-INF/overlay.xml | 11 - .../nodes/nodeA/WEB-INF/classes/resourceA.txt | 1 - .../nodes/nodeA/WEB-INF/classes/resourceB.txt | 1 - .../nodes/nodeA/WEB-INF/classes/resourceC.txt | 1 - .../nodes/nodeA/WEB-INF/classes/resourceD.txt | 1 - .../WEB-INF/lib-overlay/nodeResources.jar | Bin 1119 -> 0 bytes .../nodes/nodeA/WEB-INF/web-overlay.xml | 19 - .../nodes/nodeA/lib/META-INF/MANIFEST.MF | 3 - .../nodes/nodeA/lib/nodeResources.jar | Bin 1119 -> 0 bytes .../WEB-INF/classes/META-INF/MANIFEST.MF | 3 - .../webapp/WEB-INF/classes/resourceA.txt | 1 - .../webapp/WEB-INF/classes/resourceB.txt | 1 - .../webapp/WEB-INF/classes/resourceC.txt | 1 - .../webapp/WEB-INF/classes/resourceD.txt | 1 - .../home/overlays/nodes/nodeB/WEB-INF/web.xml | 19 - .../myfoo=foo/WEB-INF/classes/resourceA.txt | 1 - .../myfoo=foo/WEB-INF/classes/resourceB.txt | 1 - .../myfoo=foo/WEB-INF/classes/resourceC.txt | 1 - .../myfoo=foo/WEB-INF/classes/resourceD.txt | 1 - .../myfoo=foo/WEB-INF/classes/resourceE.txt | 1 - .../myfoo=foo/WEB-INF/classes/resourceF.txt | 1 - .../templates/myfoo=foo/WEB-INF/jetty-web.xml | 5 - .../WEB-INF/lib-overlay/templateResources.jar | Bin 1409 -> 0 bytes .../templates/myfoo=foo/WEB-INF/template.xml | 17 - .../myfoo=foo/WEB-INF/web-default.xml | 534 ------ .../myfoo=foo/WEB-INF/web-overlay.xml | 40 - .../overlays/templates/myfoo=foo/index.html | 10 - .../overlays/templates/myfoo=foo/index.jsp | 54 - .../myfoo=foo/lib/META-INF/MANIFEST.MF | 3 - .../myfoo=foo/lib/templateResources.jar | Bin 1409 -> 0 bytes .../overlays/templates/myfoo=foo/logo.png | Bin 2001 -> 0 bytes .../webapp/WEB-INF/classes/resourceA.txt | 1 - .../webapp/WEB-INF/classes/resourceB.txt | 1 - .../webapp/WEB-INF/classes/resourceC.txt | 1 - .../webapp/WEB-INF/classes/resourceD.txt | 1 - .../webapp/WEB-INF/classes/resourceE.txt | 1 - .../webapp/WEB-INF/classes/resourceF.txt | 1 - .../templates/myfoo=foo/webapp/index.html | 10 - .../templates/myfoo=foo/webapp/index.jsp | 54 - .../templates/myfoo=foo/webapp/logo.png | Bin 2001 -> 0 bytes .../templates/root/WEB-INF/overlay.xml | 17 - .../home/overlays/templates/root/index.html | 7 - .../overlays/templates/root/webapp/index.html | 7 - .../webapps/foo/WEB-INF/classes/resourceA.txt | 1 - .../webapps/foo/WEB-INF/classes/resourceB.txt | 1 - .../webapps/foo/WEB-INF/classes/resourceC.txt | 1 - .../webapps/foo/WEB-INF/classes/resourceD.txt | 1 - .../foo/WEB-INF/lib/webappResources.jar | Bin 901 -> 0 bytes .../home/overlays/webapps/foo/WEB-INF/web.xml | 21 - .../home/overlays/webapps/foo/index.html | 2 - 96 files changed, 3638 deletions(-) delete mode 100644 jetty-overlay-deployer/pom.xml delete mode 100644 jetty-overlay-deployer/src/main/assembly/config.xml delete mode 100644 jetty-overlay-deployer/src/main/config/etc/jetty-overlay.xml delete mode 100644 jetty-overlay-deployer/src/main/config/modules/overlay.mod delete mode 100644 jetty-overlay-deployer/src/main/config/overlays/instances/README.TXT delete mode 100644 jetty-overlay-deployer/src/main/config/overlays/nodes/README.TXT delete mode 100644 jetty-overlay-deployer/src/main/config/overlays/templates/README.TXT delete mode 100644 jetty-overlay-deployer/src/main/config/overlays/webapps/README.TXT delete mode 100644 jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java delete mode 100644 jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/TemplateContext.java delete mode 100644 jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/package-info.java delete mode 100644 jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayServer.java delete mode 100644 jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayedAppProviderTest.java delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/lib-overlay/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/web-overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/lib-overlay/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/web-overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/lib-overlay/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/web-overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/resources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/instances/root=root/WEB-INF/overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceC.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceD.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/lib-overlay/nodeResources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/web-overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/nodeResources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceC.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceD.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeB/WEB-INF/web.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceC.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceD.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceE.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceF.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/jetty-web.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/lib-overlay/templateResources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/template.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-default.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.html delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.jsp delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/META-INF/MANIFEST.MF delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/templateResources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceC.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceD.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceE.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/WEB-INF/classes/resourceF.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/index.html delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/index.jsp delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/logo.png delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/WEB-INF/overlay.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/index.html delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/webapp/index.html delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceA.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceB.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceC.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceD.txt delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/lib/webappResources.jar delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/web.xml delete mode 100644 jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/index.html diff --git a/jetty-overlay-deployer/pom.xml b/jetty-overlay-deployer/pom.xml deleted file mode 100644 index 3b411d2ac44..00000000000 --- a/jetty-overlay-deployer/pom.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - org.eclipse.jetty - jetty-project - 9.1.0-SNAPSHOT - - 4.0.0 - jetty-overlay-deployer - Jetty :: Overlay Deployer - Overlayed deployer - http://www.eclipse.org/jetty - - ${project.groupId}.overlays - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - package - - single - - - - ${basedir}/src/main/assembly/config.xml - - - - - - - - - - org.eclipse.jetty - jetty-deploy - ${project.version} - - - org.eclipse.jetty - jetty-server - ${project.version} - - - org.eclipse.jetty - jetty-plus - ${project.version} - - - javax.transaction - javax.transaction-api - test - - - org.eclipse.jetty.toolchain - jetty-test-helper - test - - - - diff --git a/jetty-overlay-deployer/src/main/assembly/config.xml b/jetty-overlay-deployer/src/main/assembly/config.xml deleted file mode 100644 index b9b398e630e..00000000000 --- a/jetty-overlay-deployer/src/main/assembly/config.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - config - false - - jar - - - - src/main/config - - - etc/** - overlays/** - - - - diff --git a/jetty-overlay-deployer/src/main/config/etc/jetty-overlay.xml b/jetty-overlay-deployer/src/main/config/etc/jetty-overlay.xml deleted file mode 100644 index f0cc154c170..00000000000 --- a/jetty-overlay-deployer/src/main/config/etc/jetty-overlay.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - /overlays - - 1 - - - - - diff --git a/jetty-overlay-deployer/src/main/config/modules/overlay.mod b/jetty-overlay-deployer/src/main/config/modules/overlay.mod deleted file mode 100644 index ccd047cbe40..00000000000 --- a/jetty-overlay-deployer/src/main/config/modules/overlay.mod +++ /dev/null @@ -1,14 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[description] -Enable the jetty overlay deployer that allows -webapplications to be dynamically composed of layers. - -[depend] -deploy - -[lib] -lib/jetty-overlay-deployer-${jetty.version}.jar - -[xml] -etc/jetty-overlay.xml diff --git a/jetty-overlay-deployer/src/main/config/overlays/instances/README.TXT b/jetty-overlay-deployer/src/main/config/overlays/instances/README.TXT deleted file mode 100644 index 5dda0e30496..00000000000 --- a/jetty-overlay-deployer/src/main/config/overlays/instances/README.TXT +++ /dev/null @@ -1,27 +0,0 @@ - - -Cloudtide instance -=================== - -This directory contains overlays (as directories or jars) that -are define instances of templates to be deployed. - -An instance filename consists of a template name, the '=' character (or '--' string) -and then an instance identifier. For example: - - mytemplate=redInstance - -This defines a instance called redInstance using the template called mytemplate. - -An overlay is structed as a WAR, but also may contain: - * WEB-INF/lib-overlay directory, which can contain jar files made available to - the overlay.xml configuration (unlike any overlayed WEB-INF/lib jars). - - * A WEB-INF/overlay.xml file, which is an XmlConfiguration format file used to - inject the ContextHandler instance. - - * A WEB-INF/web-overlay.xml fragment that is applied as an override descriptor - - * Static content that overlays the static content of the webapp, node and template. - - * WEB-INF/classes and WEB-INF/lib that overlays the code of the webapp, node and template. diff --git a/jetty-overlay-deployer/src/main/config/overlays/nodes/README.TXT b/jetty-overlay-deployer/src/main/config/overlays/nodes/README.TXT deleted file mode 100644 index d6e8595a06b..00000000000 --- a/jetty-overlay-deployer/src/main/config/overlays/nodes/README.TXT +++ /dev/null @@ -1,20 +0,0 @@ - - -Cloudtide nodes -=============== - -This directory contains overlays (as directories or jars) that -are applied to all instances for a given node. - -An overlay is structed as a WAR, but also may contain: - * WEB-INF/lib-overlay directory, which can contain jar files made available to - the overlay.xml configuration (unlike any overlayed WEB-INF/lib jars). - - * A WEB-INF/overlay.xml file, which is an XmlConfiguration format file used to - inject the ContextHandler instance. - - * A WEB-INF/web-overlay.xml fragment that is applied as an override descriptor - - * Static content that overlays the static content of the webapp, node and template. - - * WEB-INF/classes and WEB-INF/lib that overlays the code of the webapp, node and template. diff --git a/jetty-overlay-deployer/src/main/config/overlays/templates/README.TXT b/jetty-overlay-deployer/src/main/config/overlays/templates/README.TXT deleted file mode 100644 index 52ed0d236ed..00000000000 --- a/jetty-overlay-deployer/src/main/config/overlays/templates/README.TXT +++ /dev/null @@ -1,32 +0,0 @@ - -Cloudtide templates -=================== - -This directory contains overlays (as directories or jars) that -are applied to webapps to create templates. Templates are not directly -deployed, but are used by overlays in the instances directory. - -A Template filename consists of a template name, the '=' character and -then the webapp name. For example: - - mytemplate=mywebapp-1.2.3 - -This defines a template called mytemplate that overlays either the mywebapp-1.2.3.war -file or the mywebapp-1.2.3 directory in cloudtide/webapps. - -An overlay is structed as a WAR, and may contain: - * WEB-INF/template.xml a XmlConfiguration formatted file that is applied to a shared - instance of TemplateContext to provide the common classloader and resource cache to - all instances of the template. - - * WEB-INF/lib-overlay directory, which can contain jar files made available to - the overlay.xml configuration (unlike any overlayed WEB-INF/lib jars). - - * A WEB-INF/overlay.xml file, which is an XmlConfiguration format file used to - inject the ContextHandler instance. - - * A WEB-INF/web-overlay.xml fragment that is applied as an override descriptor - - * Static content that overlays the static content of the webapp, node and template. - - * WEB-INF/classes and WEB-INF/lib that overlays the code of the webapp, node and template. diff --git a/jetty-overlay-deployer/src/main/config/overlays/webapps/README.TXT b/jetty-overlay-deployer/src/main/config/overlays/webapps/README.TXT deleted file mode 100644 index f709dce94d7..00000000000 --- a/jetty-overlay-deployer/src/main/config/overlays/webapps/README.TXT +++ /dev/null @@ -1,6 +0,0 @@ - -Cloudtide webapplication ------------------------- - -This directory contains webapplication directories or war files that are used by the -cloudtide templates diff --git a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java b/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java deleted file mode 100644 index 5009db09746..00000000000 --- a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java +++ /dev/null @@ -1,1485 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.overlays; - -import java.io.File; -import java.io.IOException; -import java.net.InetAddress; -import java.net.URI; -import java.net.URL; -import java.net.URLClassLoader; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.Timer; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.regex.Pattern; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -import org.eclipse.jetty.deploy.App; -import org.eclipse.jetty.deploy.AppProvider; -import org.eclipse.jetty.deploy.ConfigurationManager; -import org.eclipse.jetty.deploy.DeploymentManager; -import org.eclipse.jetty.jndi.java.javaRootURLContext; -import org.eclipse.jetty.jndi.local.localContextRoot; -import org.eclipse.jetty.server.ResourceCache; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.servlet.Holder; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.util.IO; -import org.eclipse.jetty.util.Scanner; -import org.eclipse.jetty.util.component.AbstractLifeCycle; -import org.eclipse.jetty.util.log.Logger; -import org.eclipse.jetty.util.resource.JarResource; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.util.resource.ResourceCollection; -import org.eclipse.jetty.webapp.JettyWebXmlConfiguration; -import org.eclipse.jetty.webapp.WebAppClassLoader; -import org.eclipse.jetty.webapp.WebAppContext; -import org.eclipse.jetty.xml.XmlConfiguration; -import org.xml.sax.SAXException; - -/** - * Overlayed AppProvider - *

- * This {@link AppProvider} implementation can deploy either {@link WebAppContext}s or plain - * {@link ContextHandler}s that are assembled from a series of overlays: - *

- *
webapp
The webapp overlay is a WAR file or docroot directory. The intent is that - * the WAR should be deployed to this AppProvider unchanged from how it was delivered. All configuration - * and extension should be able to be done in an overlay.
- *
template
A template overlay is applied to a WAR file to configure it for all instances of - * the webapp to be deployed in the server(s)
- *
node
A node overlay is applied to a template to configure it all instances of the template - * with node specific information (eg IP address, DB servers etc.).
- *
instance
An instance overlay is applied to a node and/or template to configure it - * for a specific instance of the template (eg per tenant configuration).
- *
- *

- * Each overlays may provide the following files and subdirectories:

- *
WEB-INF/lib-overlay
- *
The lib-overlay directory can contain jars that are applied to a {@link URLClassLoader} that is - * available before any overlay.xml files are executed, so that classes from these jars may be used by the - * overlay.xml.
- * - *
WEB-INF/overlay.xml
- *
This {@link XmlConfiguration} formatted file must exist in the WEB-INF directory of an overlay and is - * used to configure a {@link ContextHandler} or {@link WebAppContext}. The overlay.xml from the template - * overlay can be used to instantiate the ContextHandler instance, so a derived class maybe used.
- * - *
WEB-INF/template.xml
- *
This {@link XmlConfiguration} formatted file if it exists in a template or node overlay, is applied to a shared instance of {@link TemplateContext}. - * Any ID's created in a template are available as ID's in overlay.xml for an instance.
- * - *
WEB-INF/webdefault.xml
- *
If present in an overlay, then the most specific version is passed to - * {@link WebAppContext#setDefaultsDescriptor(String)}. Typically this is set in the template overlay.
- * - *
WEB-INF/web-overlay.xml
- *
The web-overlay.xml file of an overlay is applied to a web application as - * with {@link WebAppContext#addOverrideDescriptor(String)}. This allows incremental changes to web.xml without - * totally replacing it (see webapp). Typically this is used to set init parameters.
- * - *
.
- *
This root directory contains static content that overlays the static content of the webapp - * or earlier overlays. Using this directory, files like index.html or logo.png can be added or replaced. It can - * also be used to replace files within WEB-INF including web.xml classes and libs.
- *
- *

- * Any init parameters set on the context, filters or servlets may have parameterized values, with the parameters - * including: - *

- *
${overlays.dir}
- *
the root overlay scan directory as a canonical file name.
- *
${overlay.webapp}
- *
the webapp name, same as {@link Webapp#getName()}.
- *
${overlay.template}
- *
the template name, as {@link Template#getName()}.
- *
${overlay.template.name}
- *
the template classifier, as {@link Template#getTemplateName()}.
- *
${overlay.template.classifier}
- *
the template classifier, as {@link Template#getClassifier()()}.
- *
${overlay.node}
- *
the node name, as {@link Node#getName()}.
- *
${overlay.instance}
- *
the instance name, {@link Instance#getName()}.
- *
${overlay.instance.classifier}
- *
the instance name, {@link Instance#getClassifier()()}.
- *
${*}
- *
Any properties obtained via {@link #getConfigurationManager()}.{@link ConfigurationManager#getProperties()}
- *
- *
- *

- * The OverlayedAppProvider will scan the "webapps", "templates", "nodes" and "instances" subdirectories of - * the directory configured with {@link #setScanDir(File)}. New webapps and overlays and modified files within - * the overlays will trigger hot deployment, redeployment or undeployment. The scan for modified files is - * restricted to only top level files (eg overlay.xml) and the files matching WEB-INF/*.xml WEB-INF/lib/* - * and WEB-INF/classes/*. The webapps/overlays may be directory structures or war/jar archives. - *

- * The filenames of the templates and instances are used to match them together and with a webapplication. - * A webapp may be named anyway, but it is good practise to include a version number (eg webapps/foo-1.2.3.war - * or webapps/foo-1.2.3/). A template for that webapplication must have a name that includes the template name - * and the war name separated by '=' (eg templates/myFoo=foo-1.2.3.jar or templates/myFoo=foo-1.2.3/). - * An instance overlay is named with the template name and an arbitrary instance name separated by '=' - * (eg instances/myFoo=instance1.jar instances/myFoo=instance2/ etc.). - *

- * If a template name does not include a webapp name, then the template is created as a ContextHandler - * instead of a WebAppContext (with the exact type being determined by overlay.xml). - */ -public class OverlayedAppProvider extends AbstractLifeCycle implements AppProvider -{ - private static final Logger __log = org.eclipse.jetty.util.log.Log.getLogger("OverlayedAppProvider"); - /** - * Property set for overlay.xml and template.xml files that gives the root overlay scan directory as a canonical file name. - */ - public static final String OVERLAYS_DIR = "overlays.dir"; - /** - * Property set for overlay.xml and template.xml files that gives the current webapp name, as {@link Webapp#getName()}. - */ - public static final String OVERLAY_WEBAPP = "overlay.webapp"; - /** - * Property set for overlay.xml and template.xml files that gives the current template full name, as {@link Template#getName()}. - */ - public static final String OVERLAY_TEMPLATE = "overlay.template"; - /** - * Property set for overlay.xml and template.xml files that gives the current template name, as {@link Template#getTemplateName()}. - */ - public static final String OVERLAY_TEMPLATE_NAME = "overlay.template.name"; - /** - * Property set for overlay.xml and template.xml files that gives the current template classifier, as {@link Template#getClassifier()}. - */ - public static final String OVERLAY_TEMPLATE_CLASSIFIER = "overlay.template.classifier"; - /** - * Property set for overlay.xml and template.xml files that gives the current node name, as {@link Node#getName()}. - */ - public static final String OVERLAY_NODE = "overlay.node"; - /** - * Property set for overlay.xml and template.xml files that gives the current instance name, {@link Instance#getName()}. - */ - public static final String OVERLAY_INSTANCE = "overlay.instance"; - /** - * Property set for overlay.xml and template.xml files that gives the current instance clasifier, {@link Instance#getClassifier()}. - */ - public static final String OVERLAY_INSTANCE_CLASSIFIER = "overlay.instance.classifier"; - - public static final String WEBAPPS = "webapps"; - public static final String TEMPLATES = "templates"; - public static final String NODES = "nodes"; - public static final String INSTANCES = "instances"; - - public static final String LIB = "WEB-INF/lib-overlay"; - public static final String WEBAPP = "."; - public static final String OVERLAY_XML = "WEB-INF/overlay.xml"; - public static final String TEMPLATE_XML = "WEB-INF/template.xml"; - public static final String WEB_DEFAULT_XML = "WEB-INF/web-default.xml"; - public static final String WEB_FRAGMENT_XML = "WEB-INF/web-overlay.xml"; - - enum Monitor - { - WEBAPPS, TEMPLATES, NODES, INSTANCES - } - - ; - - public static final List __scanPatterns = new ArrayList(); - - static - { - List regexes = new ArrayList(); - - for (String s : new String[]{ - ".war", ".jar", "/WEB-INF/syslib/[^/]*", "/WEB-INF/lib/[^/]*", "/WEB-INF/classes/[^/]*", "/WEB-INF/[^/]*\\.xml", - }) - { - regexes.add(WEBAPPS + "/[^/]*" + s); - regexes.add(TEMPLATES + "/[^/]*" + s); - regexes.add(NODES + "/[^/]*" + s); - regexes.add(INSTANCES + "/[^/]*" + s); - } - - for (String s : regexes) - { - __scanPatterns.add(Pattern.compile(s, Pattern.CASE_INSENSITIVE)); - } - } - - ; - - private String _nodeName; - private File _scanDir; - private File _tmpDir; - private String _scanDirURI; - private long _loading; - private Node _node; - private final Map _webapps = new HashMap(); - private final Map _templates = new HashMap(); - private final Map _instances = new HashMap(); - private final Map _deployed = new HashMap(); - private final Map _shared = new HashMap(); - private boolean _copydir = false; - private DeploymentManager _deploymentManager; - private ConfigurationManager _configurationManager; - private String _serverID = "Server"; - private final Set _removedLayers = new HashSet(); - private Timer _sessionScavenger = new Timer(); - - private final Scanner _scanner = new Scanner(); - private final Scanner.BulkListener _listener = new Scanner.BulkListener() - { - public void filesChanged(List filenames) throws Exception - { - __log.debug("Changed {}", filenames); - - Set changes = new HashSet(); - for (String filename : filenames) - { - - File file = new File(filename); - if (file.getName().startsWith(".") || file.getName().endsWith(".swp")) - continue; - - String relname = file.toURI().getPath().substring(_scanDirURI.length()); - - File rel = new File(relname); - - String dir = null; - String name = null; - String parent = rel.getParent(); - while (parent != null) - { - name = rel.getName(); - dir = parent; - rel = rel.getParentFile(); - parent = rel.getParent(); - } - - String uri = dir + "/" + name; - - for (Pattern p : __scanPatterns) - { - if (p.matcher(relname).matches()) - { - __log.debug("{} == {}", relname, p.pattern()); - changes.add(uri); - } - else - __log.debug("{} != {}", relname, p.pattern()); - } - } - - if (changes.size() > 0) - OverlayedAppProvider.this.updateLayers(changes); - } - }; - - public OverlayedAppProvider() - { - try - { - _nodeName = InetAddress.getLocalHost().getHostName(); - } - catch (UnknownHostException e) - { - __log.debug(e); - _nodeName = "unknown"; - } - } - - public void setDeploymentManager(DeploymentManager deploymentManager) - { - _deploymentManager = deploymentManager; - } - - public DeploymentManager getDeploymentManager() - { - return _deploymentManager; - } - - public ConfigurationManager getConfigurationManager() - { - return _configurationManager; - } - - /** - * Set the configurationManager. - * - * @param configurationManager the configurationManager to set - */ - public void setConfigurationManager(ConfigurationManager configurationManager) - { - _configurationManager = configurationManager; - } - - /** - * @return The name in {@link XmlConfiguration#getIdMap()} of the {@link Server} instance. Default "Server". - */ - public String getServerID() - { - return _serverID; - } - - /** - * @param serverID The name in {@link XmlConfiguration#getIdMap()} of the {@link Server} instance. - */ - public void setServerID(String serverID) - { - _serverID = serverID; - } - - /** - * Create Context Handler. - *

- * Callback from the deployment manager to create a context handler instance. - * - * @see org.eclipse.jetty.deploy.AppProvider#createContextHandler(org.eclipse.jetty.deploy.App) - */ - public synchronized ContextHandler createContextHandler(App app) throws Exception - { - final OverlayedApp overlayed = (OverlayedApp)app; - final String origin = overlayed.getOriginId(); - final Instance instance = overlayed.getInstance(); - final Template template = instance.getTemplate(); - final Webapp webapp = template.getWebapp(); - final Node node = _node; - - // remember the original loader - ClassLoader orig_loader = Thread.currentThread().getContextClassLoader(); - try - { - // Look for existing shared resources - String key = (node == null ? "" : node.getLoadedKey()) + template.getLoadedKey() + (webapp == null ? "" : webapp.getLoadedKey()); - instance.setSharedKey(key); - - TemplateContext shared = _shared.get(key); - // Create shared resourced - if (shared == null) - shared = createTemplateContext(key, webapp, template, node, orig_loader); - - // Build the instance lib loader - ClassLoader shared_loader = shared.getWebappLoader() != null ? shared.getWebappLoader() : (shared.getLibLoader() != null ? shared.getLibLoader() : orig_loader); - ClassLoader loader = shared_loader; - Resource instance_lib = instance.getResource(LIB); - if (instance_lib.exists()) - { - List libs = new ArrayList(); - for (String jar : instance_lib.list()) - { - if (!jar.toLowerCase(Locale.ENGLISH).endsWith(".jar")) - continue; - libs.add(instance_lib.addPath(jar).getURL()); - } - - __log.debug("{}: libs={}", origin, libs); - loader = URLClassLoader.newInstance(libs.toArray(new URL[]{}), loader); - } - - // set the thread loader - Thread.currentThread().setContextClassLoader(loader); - - // Create properties to be shared by overlay.xmls - Map idMap = new HashMap(); - idMap.putAll(shared.getIdMap()); - idMap.put(_serverID, getDeploymentManager().getServer()); - - // Create the instance context for the template - ContextHandler context = null; - - Resource template_context_xml = template.getResource(OVERLAY_XML); - if (template_context_xml.exists()) - { - __log.debug("{}: overlay.xml={}", origin, template_context_xml); - XmlConfiguration xmlc = newXmlConfiguration(template_context_xml.getURL(), idMap, template, instance); - context = (ContextHandler)xmlc.configure(); - idMap = xmlc.getIdMap(); - } - else if (webapp == null) - // If there is no webapp, this is a plain context - context = new ContextHandler(); - else - // It is a webapp context - context = new WebAppContext(); - - // Set the resource base - final Resource instance_webapp = instance.getResource(WEBAPP); - if (instance_webapp.exists()) - { - context.setBaseResource(new ResourceCollection(instance_webapp, shared.getBaseResource())); - - // Create the resource cache - ResourceCache cache = new ResourceCache(shared.getResourceCache(), instance_webapp, context.getMimeTypes(), false, false); - context.setAttribute(ResourceCache.class.getCanonicalName(), cache); - } - else - { - context.setBaseResource(shared.getBaseResource()); - context.setAttribute(ResourceCache.class.getCanonicalName(), shared.getResourceCache()); - } - __log.debug("{}: baseResource={}", origin, context.getResourceBase()); - - // Set the shared session scavenger timer - context.setAttribute("org.eclipse.jetty.server.session.timer", _sessionScavenger); - - // Apply any node or instance overlay.xml - for (Resource context_xml : getLayeredResources(OVERLAY_XML, node, instance)) - { - __log.debug("{}: overlay.xml={}", origin, context_xml); - XmlConfiguration xmlc = newXmlConfiguration(context_xml.getURL(), idMap, template, instance); - xmlc.getIdMap().put("Cache", context.getAttribute(ResourceCache.class.getCanonicalName())); - xmlc.configure(context); - idMap = xmlc.getIdMap(); - } - - // Is it a webapp? - if (context instanceof WebAppContext) - { - final WebAppContext webappcontext = (WebAppContext)context; - - if (Arrays.asList(((WebAppContext)context).getServerClasses()).toString().equals(Arrays.asList(WebAppContext.__dftServerClasses).toString())) - { - __log.debug("clear server classes"); - webappcontext.setServerClasses(null); - } - - // set classloader - webappcontext.setCopyWebDir(false); - webappcontext.setCopyWebInf(false); - webappcontext.setExtractWAR(false); - - if (instance_webapp.exists()) - { - final Resource classes = instance_webapp.addPath("WEB-INF/classes"); - final Resource lib = instance_webapp.addPath("WEB-INF/lib"); - - if (classes.exists() || lib.exists()) - { - final AtomicBoolean locked = new AtomicBoolean(false); - - WebAppClassLoader webapp_loader = new WebAppClassLoader(loader, webappcontext) - { - @Override - public void addClassPath(Resource resource) throws IOException - { - if (!locked.get()) - super.addClassPath(resource); - } - - @Override - public void addClassPath(String classPath) throws IOException - { - if (!locked.get()) - super.addClassPath(classPath); - } - - @Override - public void addJars(Resource lib) - { - if (!locked.get()) - super.addJars(lib); - } - }; - - if (classes.exists()) - webapp_loader.addClassPath(classes); - if (lib.exists()) - webapp_loader.addJars(lib); - locked.set(true); - - loader = webapp_loader; - } - } - - // Make sure loader is unique for JNDI - if (loader == shared_loader) - loader = new URLClassLoader(new URL[]{}, shared_loader); - - // add default descriptor - List webdefaults = getLayeredResources(WEB_DEFAULT_XML, instance, node, template); - if (webdefaults.size() > 0) - { - Resource webdefault = webdefaults.get(0); - __log.debug("{}: defaultweb={}", origin, webdefault); - webappcontext.setDefaultsDescriptor(webdefault.toString()); - } - - // add overlay descriptors - for (Resource override : getLayeredResources(WEB_FRAGMENT_XML, template, node, instance)) - { - __log.debug("{}: web override={}", origin, override); - webappcontext.addOverrideDescriptor(override.toString()); - } - } - - context.setClassLoader(loader); - - __log.debug("{}: baseResource={}", origin, context.getBaseResource()); - - Resource jetty_web_xml = context.getResource("/WEB-INF/" + JettyWebXmlConfiguration.JETTY_WEB_XML); - if (jetty_web_xml != null && jetty_web_xml.exists()) - context.setAttribute(JettyWebXmlConfiguration.XML_CONFIGURATION, newXmlConfiguration(jetty_web_xml.getURL(), idMap, template, instance)); - - // Add listener to expand parameters from descriptors before other listeners execute - Map params = new HashMap(); - populateParameters(params, template, instance); - context.addEventListener(new ParameterExpander(params, context)); - - System.err.println("created:\n" + context.dump()); - - return context; - } - finally - { - Thread.currentThread().setContextClassLoader(orig_loader); - } - } - - private XmlConfiguration newXmlConfiguration(URL url, Map idMap, Template template, Instance instance) throws SAXException, IOException - { - XmlConfiguration xmlc = new XmlConfiguration(url); - populateParameters(xmlc.getProperties(), template, instance); - xmlc.getIdMap().putAll(idMap); - - return xmlc; - } - - private void populateParameters(Map params, Template template, Instance instance) - { - try - { - params.put(OVERLAYS_DIR, _scanDir.getCanonicalPath()); - if (template != null) - { - params.put(OVERLAY_TEMPLATE, template.getName()); - params.put(OVERLAY_TEMPLATE_NAME, template.getTemplateName()); - params.put(OVERLAY_TEMPLATE_CLASSIFIER, template.getClassifier()); - params.put(OVERLAY_WEBAPP, template.getWebapp() == null ? null : template.getWebapp().getName()); - } - if (_node != null) - params.put(OVERLAY_NODE, _node.getName()); - if (instance != null) - { - params.put(OVERLAY_INSTANCE, instance.getName()); - params.put(OVERLAY_INSTANCE_CLASSIFIER, instance.getClassifier()); - } - if (getConfigurationManager() != null) - params.putAll(getConfigurationManager().getProperties()); - } - catch (Exception e) - { - throw new RuntimeException(e); - } - } - - private TemplateContext createTemplateContext(final String key, Webapp webapp, Template template, Node node, ClassLoader parent) throws Exception - { - __log.info("created {}", key); - - // look for libs - // If we have libs directories, create classloader and make it available to - // the XMLconfiguration - List libs = new ArrayList(); - for (Resource lib : getLayeredResources(LIB, node, template)) - { - for (String jar : lib.list()) - { - if (!jar.toLowerCase(Locale.ENGLISH).endsWith(".jar")) - continue; - libs.add(lib.addPath(jar).getURL()); - } - } - final ClassLoader libLoader; - if (libs.size() > 0) - { - __log.debug("{}: libs={}", key, libs); - libLoader = new URLClassLoader(libs.toArray(new URL[]{}), parent) - { - public String toString() - { - return "libLoader@" + Long.toHexString(hashCode()) + "-lib-" + key; - } - }; - } - else - libLoader = parent; - - Thread.currentThread().setContextClassLoader(libLoader); - - // Make the shared resourceBase - List bases = new ArrayList(); - for (Resource wa : getLayers(node, template)) - { - bases.add(wa); - } - if (webapp != null) - bases.add(webapp.getBaseResource()); - Resource baseResource = bases.size() == 1 ? bases.get(0) : new ResourceCollection(bases.toArray(new Resource[bases.size()])); - __log.debug("{}: baseResource={}", key, baseResource); - - // Make the shared context - TemplateContext shared = new TemplateContext(key, getDeploymentManager().getServer(), baseResource, libLoader); - _shared.put(key, shared); - - // Create properties to be shared by overlay.xmls - Map idMap = new HashMap(); - idMap.put(_serverID, getDeploymentManager().getServer()); - - // Create the shared context for the template - // This instance will never be start, but is used to capture the - // shared results of running the template and node overlay.xml files. - // If there is a template overlay.xml, give it the chance to create the ContextHandler instance - // otherwise create an instance ourselves - for (Resource template_xml : getLayeredResources(TEMPLATE_XML, template, node)) - { - __log.debug("{}: template.xml={}", key, template_xml); - XmlConfiguration xmlc = newXmlConfiguration(template_xml.getURL(), idMap, template, null); - xmlc.getIdMap().putAll(idMap); - xmlc.configure(shared); - idMap = xmlc.getIdMap(); - } - - shared.setIdMap(idMap); - shared.start(); - - return shared; - } - - /** - * @return The node name (defaults to hostname) - */ - public String getNodeName() - { - return _nodeName; - } - - /** - * @param nodeName Set the node name - */ - public void setNodeName(String nodeName) - { - _nodeName = nodeName; - } - - /** - * Get the scanDir. - * - * @return the scanDir - */ - public File getScanDir() - { - return _scanDir; - } - - /** - * Set the scanDir. - * - * @param scanDir the scanDir to set - */ - public void setScanDir(File scanDir) - { - _scanDir = scanDir; - } - - /** - * Set the temporary directory. - * - * @param tmpDir the directory for temporary files. If null, then getScanDir()+"/tmp" is used if it exists, else the system default is used. - */ - public void setTmpDir(File tmpDir) - { - _tmpDir = tmpDir; - } - - /** - * Get the temporary directory. - * return the tmpDir. If null, then getScanDir()+"/tmp" is used if it exists, else the system default is used. - */ - public File getTmpDir() - { - return _tmpDir; - } - - /** - * @return The scan interval - * @see org.eclipse.jetty.util.Scanner#getScanInterval() - */ - public int getScanInterval() - { - return _scanner.getScanInterval(); - } - - /** - * @param scanInterval The scan interval - * @see org.eclipse.jetty.util.Scanner#setScanInterval(int) - */ - public void setScanInterval(int scanInterval) - { - _scanner.setScanInterval(scanInterval); - } - - /** - * @see org.eclipse.jetty.util.Scanner#scan() - */ - public void scan() - { - _scanner.scan(); - } - - /** - * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStart() - */ - @Override - protected void doStart() throws Exception - { - __log.info("Node={} Scan=", _nodeName, _scanDir); - if (_scanDir == null || !_scanDir.exists()) - throw new IllegalStateException("!scandir"); - - _scanDirURI = _scanDir.toURI().getPath(); - _scanner.setScanDepth(6); // enough for templates/name/webapps/WEB-INF/lib/foo.jar - List dirs = Arrays.asList(new File[] - { - new File(_scanDir, WEBAPPS), - new File(_scanDir, TEMPLATES), - new File(_scanDir, NODES), - new File(_scanDir, INSTANCES) - }); - for (File file : dirs) - { - if (!file.exists() && !file.isDirectory()) - __log.warn("No directory: " + file.getAbsolutePath()); - } - _scanner.setScanDirs(dirs); - _scanner.addListener(_listener); - _scanner.start(); - - super.doStart(); - } - - /** - * @see org.eclipse.jetty.util.component.AbstractLifeCycle#doStop() - */ - @Override - protected void doStop() throws Exception - { - _scanner.removeListener(_listener); - _scanner.stop(); - - if (_deploymentManager.isRunning()) - { - for (App app : _deployed.values()) - { - _deploymentManager.removeApp(app); - } - } - _deployed.clear(); - - for (Layer layer : _webapps.values()) - { - layer.release(); - } - _webapps.clear(); - for (Layer layer : _templates.values()) - { - layer.release(); - } - _templates.clear(); - if (_node != null) - _node.release(); - for (Layer layer : _instances.values()) - { - layer.release(); - } - _instances.clear(); - - super.doStop(); - } - - protected synchronized void updateLayers(Set layerURIs) - { - _loading = System.currentTimeMillis(); - for (String ruri : layerURIs) - { - try - { - // Decompose the name - File directory; - File archive; - File origin = new File(new URI(_scanDir.toURI() + ruri)); - String name = origin.getName(); - - Monitor monitor = Monitor.valueOf(origin.getParentFile().getName().toUpperCase(Locale.ENGLISH)); - - String ext = ".war"; - - // check directory vs archive - if (origin.isDirectory() || !origin.exists() && !ruri.toLowerCase(Locale.ENGLISH).endsWith(ext)) - { - // directories have priority over archives - directory = origin; - archive = new File(directory.toString() + ext); - } - else - { - // check extension name - if (!ruri.toLowerCase(Locale.ENGLISH).endsWith(ext)) - continue; - - name = name.substring(0, name.length() - 4); - archive = origin; - directory = new File(new URI(_scanDir.toURI() + ruri.substring(0, ruri.length() - 4))); - - // Look to see if directory exists - if (directory.exists()) - { - __log.info("Directory exists, ignoring change to {}", ruri); - continue; - } - } - - Layer layer = null; - - switch (monitor) - { - case WEBAPPS: - if (origin.exists()) - layer = loadWebapp(name, origin); - else - { - removeWebapp(name); - if (origin == directory && archive.exists()) - layer = loadWebapp(name, archive); - } - - break; - - case TEMPLATES: - if (origin.exists()) - layer = loadTemplate(name, origin); - else - { - removeTemplate(name); - if (origin == directory && archive.exists()) - layer = loadTemplate(name, archive); - } - break; - - case NODES: - if (name.equalsIgnoreCase(_nodeName)) - { - if (origin.exists()) - layer = loadNode(origin); - else - { - removeNode(); - if (origin == directory && archive.exists()) - layer = loadNode(archive); - } - } - break; - - case INSTANCES: - if (origin.exists()) - layer = loadInstance(name, origin); - else - { - removeInstance(name); - if (origin == directory && archive.exists()) - layer = loadInstance(name, archive); - } - break; - } - - if (layer != null) - __log.info("loaded {}", layer.getLoadedKey()); - } - catch (Exception e) - { - __log.warn(e); - } - } - - redeploy(); - - // Release removed layers - for (Layer layer : _removedLayers) - { - if (layer != null) - { - __log.info("unload {}", layer.getLoadedKey()); - layer.release(); - } - } - _removedLayers.clear(); - - if (__log.isDebugEnabled()) - { - System.err.println("updated:"); - System.err.println("java:" + javaRootURLContext.getRoot().dump()); - System.err.println("local:" + localContextRoot.getRoot().dump()); - if (getDeploymentManager() != null && getDeploymentManager().getServer() != null) - System.err.println(getDeploymentManager().getServer().dump()); - } - } - - protected File tmpdir(String name, String suffix) throws IOException - { - File dir = _tmpDir; - if (dir == null || !dir.isDirectory() || !dir.canWrite()) - { - dir = new File(_scanDir, "tmp"); - if (!dir.isDirectory() || !dir.canWrite()) - dir = null; - } - - File tmp = File.createTempFile(name + "_", "." + suffix, dir); - tmp = tmp.getCanonicalFile(); - if (tmp.exists()) - IO.delete(tmp); - tmp.mkdir(); - tmp.deleteOnExit(); - return tmp; - } - - /** - * Walks the defined webapps, templates, nodes and instances to - * determine what should be deployed, then adjust reality to match. - */ - protected void redeploy() - { - Map templates = new ConcurrentHashMap(); - - // Check for duplicate templates - for (Template template : _templates.values()) - { - Template other = templates.get(template.getTemplateName()); - if (other != null) - { - __log.warn("Multiple Templates: {} & {}", template.getName(), other.getName()); - if (other.getName().compareToIgnoreCase(template.getName()) <= 0) - continue; - } - templates.put(template.getTemplateName(), template); - } - - // Match webapps to templates - for (Template template : templates.values()) - { - String webappname = template.getClassifier(); - - if (webappname == null) - continue; - - Webapp webapp = _webapps.get(webappname); - - if (webapp == null) - { - __log.warn("No webapp found for template: {}", template.getName()); - templates.remove(template.getTemplateName()); - } - else - { - template.setWebapp(webapp); - } - } - - // Match instance to templates and check if what needs to be deployed or undeployed. - Set deployed = new HashSet(); - List deploy = new ArrayList(); - - for (Instance instance : _instances.values()) - { - Template template = templates.get(instance.getTemplateName()); - instance.setTemplate(template); - if (template != null) - { - String key = instance.getInstanceKey(); - App app = _deployed.get(key); - if (app == null) - deploy.add(instance); - else - deployed.add(key); - } - } - - // Look for deployed apps that need to be undeployed - List undeploy = new ArrayList(); - for (String key : _deployed.keySet()) - { - if (!deployed.contains(key)) - undeploy.add(key); - } - - // Do the undeploys - for (String key : undeploy) - { - App app = _deployed.remove(key); - if (app != null) - { - __log.info("Undeploy {}", key); - _deploymentManager.removeApp(app); - } - } - - // ready the deploys - for (Instance instance : deploy) - { - String key = instance.getInstanceKey(); - OverlayedApp app = new OverlayedApp(_deploymentManager, this, key, instance); - _deployed.put(key, app); - } - - // Remove unused Shared stuff - Set sharedKeys = new HashSet(_shared.keySet()); - for (OverlayedApp app : _deployed.values()) - { - Instance instance = app.getInstance(); - sharedKeys.remove(instance.getSharedKey()); - } - for (String sharedKey : sharedKeys) - { - __log.debug("Remove " + sharedKey); - TemplateContext shared = _shared.remove(sharedKey); - if (shared != null) - { - try - { - shared.stop(); - } - catch (Exception e) - { - __log.warn(e); - } - shared.destroy(); - } - } - - // Do the deploys - for (Instance instance : deploy) - { - String key = instance.getInstanceKey(); - OverlayedApp app = _deployed.get(key); - __log.info("Deploy {}", key); - _deploymentManager.addApp(app); - } - } - - protected void removeInstance(String name) - { - _removedLayers.add(_instances.remove(name)); - } - - protected Instance loadInstance(String name, File origin) - throws IOException - { - Instance instance = new Instance(name, origin); - _removedLayers.add(_instances.put(name, instance)); - return instance; - } - - protected void removeNode() - { - if (_node != null) - _removedLayers.add(_node); - _node = null; - } - - protected Node loadNode(File origin) - throws IOException - { - if (_node != null) - _removedLayers.add(_node); - _node = new Node(_nodeName, origin); - return _node; - } - - protected void removeTemplate(String name) - { - _removedLayers.add(_templates.remove(name)); - } - - protected Template loadTemplate(String name, File origin) - throws IOException - { - Template template = new Template(name, origin); - _removedLayers.add(_templates.put(name, template)); - return template; - } - - protected void removeWebapp(String name) - { - _removedLayers.add(_webapps.remove(name)); - } - - protected Webapp loadWebapp(String name, File origin) - throws IOException - { - Webapp webapp = new Webapp(name, origin); - _removedLayers.add(_webapps.put(name, webapp)); - return webapp; - } - - private static List getLayers(Layer... layers) - { - List resources = new ArrayList(); - for (Layer layer : layers) - { - if (layer == null) - continue; - Resource resource = layer.getBaseResource(); - if (resource.exists()) - resources.add(resource); - } - return resources; - } - - private static List getLayeredResources(String path, Layer... layers) - { - List resources = new ArrayList(); - for (Layer layer : layers) - { - if (layer == null) - continue; - Resource resource = layer.getResource(path); - if (resource.exists()) - resources.add(resource); - } - return resources; - } - - class Layer - { - private final String _name; - private final File _origin; - private final long _loaded = _loading; - private final Resource _resourceBase; - private final boolean _resourceBaseIsCopy; - - public Layer(String name, File origin) - throws IOException - { - super(); - _name = name; - _origin = origin; - - Resource resource = Resource.newResource(origin.toURI()); - - if (resource.isDirectory()) - { - if (_copydir) - { - File tmp = tmpdir(name, "extract"); - __log.info("Extract {} to {}", origin, tmp); - IO.copyDir(origin, tmp); - _resourceBase = Resource.newResource(tmp.toURI()); - _resourceBaseIsCopy = true; - } - else - { - _resourceBase = resource; - _resourceBaseIsCopy = false; - } - } - else - { - Resource jar = JarResource.newJarResource(resource); - File tmp = tmpdir(name, "extract"); - __log.info("Extract {} to {}", jar, tmp); - jar.copyTo(tmp); - _resourceBase = Resource.newResource(tmp.toURI()); - _resourceBaseIsCopy = true; - } - } - - public String getName() - { - return _name; - } - - public File getOrigin() - { - return _origin; - } - - public long getLoaded() - { - return _loaded; - } - - public Resource getBaseResource() - { - return _resourceBase; - } - - public Resource getResource(String path) - { - try - { - return getBaseResource().addPath(path); - } - catch (Exception e) - { - __log.warn(e); - } - return null; - } - - public String getLoadedKey() - { - return _name + "@" + _loaded; - } - - public void release() - { - if (_resourceBaseIsCopy) - { - try - { - File file = _resourceBase.getFile(); - if (file != null) - IO.delete(file); - } - catch (Exception e) - { - __log.warn(e); - } - } - } - - public String toString() - { - return getLoadedKey(); - } - } - - class Webapp extends Layer - { - public Webapp(String name, File origin) throws IOException - { - super(name, origin); - } - } - - class Overlay extends Layer - { - public Overlay(String name, File origin) throws IOException - { - super(name, origin); - } - - public Resource getContext() - { - return getResource(OVERLAY_XML); - } - } - - class Node extends Overlay - { - public Node(String name, File origin) throws IOException - { - super(name, origin); - } - } - - class ClassifiedOverlay extends Overlay - { - private final String _templateName; - private final String _classifier; - - public ClassifiedOverlay(String name, File origin) throws IOException - { - super(name, origin); - - int l = 1; - int e = name.indexOf('='); - if (e < 0) - { - l = 2; - e = name.indexOf("--"); - } - _templateName = e >= 0 ? name.substring(0, e) : name; - _classifier = e >= 0 ? name.substring(e + l) : null; - } - - public String getTemplateName() - { - return _templateName; - } - - public String getClassifier() - { - return _classifier; - } - } - - class Template extends ClassifiedOverlay - { - private Webapp _webapp; - - public Webapp getWebapp() - { - return _webapp; - } - - public void setWebapp(Webapp webapp) - { - _webapp = webapp; - } - - public Template(String name, File origin) throws IOException - { - super(name, origin); - } - } - - class Instance extends ClassifiedOverlay - { - Template _template; - String _sharedKey; - - public Instance(String name, File origin) throws IOException - { - super(name, origin); - if (getClassifier() == null) - throw new IllegalArgumentException("Instance without '=':" + name); - } - - public void setSharedKey(String key) - { - _sharedKey = key; - } - - public String getSharedKey() - { - return _sharedKey; - } - - public void setTemplate(Template template) - { - _template = template; - } - - public Template getTemplate() - { - return _template; - } - - public String getInstanceKey() - { - return - (_template.getWebapp() == null ? "" : _template.getWebapp().getLoadedKey()) + "|" + - _template.getLoadedKey() + "|" + - (_node == null ? "" : _node.getLoadedKey()) + "|" + - getLoadedKey(); - } - } - - static class OverlayedApp extends App - { - final Instance _instance; - - public OverlayedApp(DeploymentManager manager, AppProvider provider, String originId, Instance instance) - { - super(manager, provider, originId); - _instance = instance; - } - - public Instance getInstance() - { - return _instance; - } - } - - private final class ParameterExpander implements ServletContextListener - { - private final Map _params; - private final ContextHandler _ctx; - - private ParameterExpander(Map params, ContextHandler ctx) - { - _params = params; - _ctx = ctx; - } - - public void contextInitialized(ServletContextEvent sce) - { - Enumeration e = _ctx.getInitParameterNames(); - while (e.hasMoreElements()) - { - String name = e.nextElement(); - _ctx.setInitParameter(name, expandParameter(_ctx.getInitParameter(name))); - } - - ServletHandler servletHandler = _ctx.getChildHandlerByClass(ServletHandler.class); - if (servletHandler != null) - { - List> holders = new ArrayList>(); - if (servletHandler.getFilters() != null) - holders.addAll(Arrays.asList(servletHandler.getFilters())); - if (servletHandler.getHandler() != null) - holders.addAll(Arrays.asList(servletHandler.getServlets())); - for (Holder holder : holders) - { - e = holder.getInitParameterNames(); - while (e.hasMoreElements()) - { - String name = e.nextElement(); - holder.setInitParameter(name, expandParameter(holder.getInitParameter(name))); - } - } - } - } - - private String expandParameter(String value) - { - int i = 0; - while (true) - { - int open = value.indexOf("${", i); - if (open < 0) - return value; - int close = value.indexOf("}", open); - if (close < 0) - return value; - - String param = value.substring(open + 2, close); - if (_params.containsKey(param)) - { - String tmp = value.substring(0, open) + _params.get(param); - i = tmp.length(); - value = tmp + value.substring(close + 1); - } - else - i = close + 1; - } - } - - public void contextDestroyed(ServletContextEvent sce) - { - } - } -} diff --git a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/TemplateContext.java b/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/TemplateContext.java deleted file mode 100644 index 5a0e9b209ce..00000000000 --- a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/TemplateContext.java +++ /dev/null @@ -1,263 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.overlays; - -import java.io.IOException; -import java.security.PermissionCollection; -import java.util.Map; - -import org.eclipse.jetty.http.MimeTypes; -import org.eclipse.jetty.server.ResourceCache; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.eclipse.jetty.util.component.Destroyable; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.webapp.ClasspathPattern; -import org.eclipse.jetty.webapp.WebAppClassLoader; -import org.eclipse.jetty.webapp.WebAppContext; - -/** - * A Cloudtide template context. - *

- * This class is configured by the template.xml files and is used to control the - * shared resource cache and classloader. - *

- * This class is an AggregateLifeCycle, so dependent beans may be added to the template and will be started, stopped and destroyed with the template. - * The template is started after the template.xml file have been applied. It is stopped and destroyed after the last instance using the template is undeployed. - */ -public class TemplateContext extends ContainerLifeCycle implements WebAppClassLoader.Context, Destroyable -{ - private final ClassLoader _libLoader; - - private final Resource _baseResource; - private final ResourceCache _resourceCache; - private final Server _server; - private final MimeTypes _mimeTypes; - private final WebAppClassLoader _webappLoader; - - private ClasspathPattern _systemClasses; - private ClasspathPattern _serverClasses; - private PermissionCollection _permissions; - - private boolean _parentLoaderPriority; - - private String _extraClasspath; - - private Map _idMap; - - public ClassLoader getLibLoader() - { - return _libLoader; - } - - public TemplateContext() - { - _server = null; - _baseResource = null; - _mimeTypes = new MimeTypes(); - _resourceCache = null; - _webappLoader = null; - _libLoader = null; - } - - public TemplateContext(String key, Server server, Resource baseResource, ClassLoader libLoader) throws IOException - { - _server = server; - _baseResource = baseResource; - _mimeTypes = new MimeTypes(); - _resourceCache = new ResourceCache(null, baseResource, _mimeTypes, false, false); - - String[] patterns = (String[])_server.getAttribute(WebAppContext.SERVER_SRV_CLASSES); - _serverClasses = new ClasspathPattern(patterns == null ? WebAppContext.__dftServerClasses : patterns); - patterns = (String[])_server.getAttribute(WebAppContext.SERVER_SYS_CLASSES); - _systemClasses = new ClasspathPattern(patterns == null ? WebAppContext.__dftSystemClasses : patterns); - _libLoader = libLoader; - - // Is this a webapp or a normal context - Resource classes = getBaseResource().addPath("WEB-INF/classes/"); - Resource lib = getBaseResource().addPath("WEB-INF/lib/"); - if (classes.exists() && classes.isDirectory() || lib.exists() && lib.isDirectory()) - { - _webappLoader = new WebAppClassLoader(_libLoader, this); - _webappLoader.setName(key); - if (classes.exists()) - _webappLoader.addClassPath(classes); - if (lib.exists()) - _webappLoader.addJars(lib); - } - else - _webappLoader = null; - } - - public Resource getBaseResource() - { - return _baseResource; - } - - /** - * @return Comma or semicolon separated path of filenames or URLs - * pointing to directories or jar files. Directories should end - * with '/'. - */ - public String getExtraClasspath() - { - return _extraClasspath; - } - - public MimeTypes getMimeTypes() - { - return _mimeTypes; - } - - public PermissionCollection getPermissions() - { - return _permissions; - } - - public ResourceCache getResourceCache() - { - return _resourceCache; - } - - public Server getServer() - { - return _server; - } - - WebAppClassLoader getWebappLoader() - { - return _webappLoader; - } - - public boolean isParentLoaderPriority() - { - return _parentLoaderPriority; - } - - public boolean isServerClass(String clazz) - { - return _serverClasses.match(clazz); - } - - public boolean isSystemClass(String clazz) - { - return _systemClasses.match(clazz); - } - - public Resource newResource(String urlOrPath) throws IOException - { - return Resource.newResource(urlOrPath); - } - - /** - * @param extraClasspath Comma or semicolon separated path of filenames or URLs - * pointing to directories or jar files. Directories should end - * with '/'. - */ - public void setExtraClasspath(String extraClasspath) - { - _extraClasspath = extraClasspath; - } - - /** - * @param java2compliant The java2compliant to set. - */ - public void setParentLoaderPriority(boolean java2compliant) - { - _parentLoaderPriority = java2compliant; - } - - /** - * @param permissions The permissions to set. - */ - public void setPermissions(PermissionCollection permissions) - { - _permissions = permissions; - } - - /** - * Set the server classes patterns. - *

- * Server classes/packages are classes used to implement the server and are hidden - * from the context. If the context needs to load these classes, it must have its - * own copy of them in WEB-INF/lib or WEB-INF/classes. - * A class pattern is a string of one of the forms:

- *
org.package.Classname
Match a specific class
- *
org.package.
Match a specific package hierarchy
- *
-org.package.Classname
Exclude a specific class
- *
-org.package.
Exclude a specific package hierarchy
- *
- * - * @param serverClasses The serverClasses to set. - */ - public void setServerClasses(String[] serverClasses) - { - _serverClasses = new ClasspathPattern(serverClasses); - } - - /** - * Set the system classes patterns. - *

- * System classes/packages are classes provided by the JVM and that - * cannot be replaced by classes of the same name from WEB-INF, - * regardless of the value of {@link #setParentLoaderPriority(boolean)}. - * A class pattern is a string of one of the forms:

- *
org.package.Classname
Match a specific class
- *
org.package.
Match a specific package hierarchy
- *
-org.package.Classname
Exclude a specific class
- *
-org.package.
Exclude a specific package hierarchy
- *
- * - * @param systemClasses The systemClasses to set. - */ - public void setSystemClasses(String[] systemClasses) - { - _systemClasses = new ClasspathPattern(systemClasses); - } - - public void addSystemClass(String classname) - { - _systemClasses.addPattern(classname); - } - - public void addServerClass(String classname) - { - _serverClasses.addPattern(classname); - } - - public void destroy() - { - if (_baseResource != null) - _baseResource.release(); - if (_resourceCache != null) - _resourceCache.flushCache(); - if (_idMap != null) - _idMap.clear(); - } - - public void setIdMap(Map idMap) - { - _idMap = idMap; - } - - public Map getIdMap() - { - return _idMap; - } -} diff --git a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/package-info.java b/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/package-info.java deleted file mode 100644 index a7d895d435d..00000000000 --- a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/package-info.java +++ /dev/null @@ -1,23 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -/** - * Jetty Overlay : Overlay Deployment Provider - */ -package org.eclipse.jetty.overlays; - diff --git a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayServer.java b/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayServer.java deleted file mode 100644 index fe9f89216e7..00000000000 --- a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayServer.java +++ /dev/null @@ -1,94 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.overlays; - -import java.io.File; - -import org.eclipse.jetty.deploy.DeploymentManager; -import org.eclipse.jetty.overlays.OverlayedAppProvider; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; -import org.eclipse.jetty.server.handler.HandlerCollection; -import org.eclipse.jetty.server.handler.RequestLogHandler; -import org.eclipse.jetty.server.handler.StatisticsHandler; - -public class OverlayServer -{ - public static void main(String[] args) throws Exception - { - // NamingUtil.__log.setDebugEnabled(true); - String jetty_home = System.getProperty("jetty.home", "target/test-classes/home"); - System.setProperty("jetty.home", jetty_home); - - Server server = new Server(); - server.setAttribute("org.eclipse.jetty.webapp.configuration", - new String[] - { - org.eclipse.jetty.webapp.WebInfConfiguration.class.getCanonicalName(), - org.eclipse.jetty.webapp.WebXmlConfiguration.class.getCanonicalName(), - org.eclipse.jetty.webapp.MetaInfConfiguration.class.getCanonicalName(), - org.eclipse.jetty.webapp.FragmentConfiguration.class.getCanonicalName(), - org.eclipse.jetty.plus.webapp.EnvConfiguration.class.getCanonicalName(), - org.eclipse.jetty.plus.webapp.PlusConfiguration.class.getCanonicalName(), - org.eclipse.jetty.webapp.JettyWebXmlConfiguration.class.getCanonicalName(), - } - ); - - // Setup Connectors - ServerConnector connector = new ServerConnector(server); - connector.setPort(8080); - server.addConnector(connector); - - HandlerCollection handlers = new HandlerCollection(); - ContextHandlerCollection contexts = new ContextHandlerCollection(); - RequestLogHandler requestLogHandler = new RequestLogHandler(); - handlers.setHandlers(new Handler[] - {contexts, new DefaultHandler(), requestLogHandler}); - - StatisticsHandler stats = new StatisticsHandler(); - stats.setHandler(handlers); - - server.setHandler(stats); - - // Setup deployers - DeploymentManager deployer = new DeploymentManager(); - deployer.setContexts(contexts); - server.addBean(deployer); - - OverlayedAppProvider provider = new OverlayedAppProvider(); - - provider.setNodeName("nodeA"); - provider.setScanDir(new File(jetty_home + "/overlays")); - provider.setScanInterval(2); - - deployer.addAppProvider(provider); - - server.setStopAtShutdown(true); - //server.setSendServerVersion(true); - - // Uncomment to work with JNDI examples - // new org.eclipse.jetty.plus.jndi.Transaction(new com.atomikos.icatch.jta.UserTransactionImp()); - - server.start(); - server.join(); - } -} diff --git a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayedAppProviderTest.java b/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayedAppProviderTest.java deleted file mode 100644 index 0bc28738a1b..00000000000 --- a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayedAppProviderTest.java +++ /dev/null @@ -1,587 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ------------------------------------------------------------------------ -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -package org.eclipse.jetty.overlays; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Set; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; - -import org.eclipse.jetty.util.IO; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class OverlayedAppProviderTest -{ - File _tmp; - File _scan; - File _webapps; - File _templates; - File _nodes; - File _instances; - - @BeforeEach - public void before() throws Exception - { - _tmp = File.createTempFile("OAPTest", null); - if (_tmp.exists()) - IO.delete(_tmp); - _tmp.mkdir(); - - _scan = new File(_tmp, "scan").getCanonicalFile(); - _webapps = new File(_scan, OverlayedAppProvider.WEBAPPS); - _templates = new File(_scan, OverlayedAppProvider.TEMPLATES); - _nodes = new File(_scan, OverlayedAppProvider.NODES); - _instances = new File(_scan, OverlayedAppProvider.INSTANCES); - _webapps.mkdirs(); - _templates.mkdir(); - _nodes.mkdir(); - _instances.mkdir(); - } - - @AfterEach - public void after() throws Exception - { - if (_tmp.exists()) - IO.delete(_tmp); - } - - @Test - public void testScanForWars() throws Exception - { - final ConcurrentLinkedQueue> scanned = new ConcurrentLinkedQueue>(); - OverlayedAppProvider provider = new OverlayedAppProvider() - { - - /** - * @see org.eclipse.jetty.overlays.OverlayedAppProvider#updateLayers(java.util.Set) - */ - @Override - protected void updateLayers(Set filenames) - { - scanned.offer(filenames); - } - }; - provider.setScanInterval(0); - - provider.setScanDir(_scan); - provider.start(); - provider.scan(); - provider.scan(); - - assertTrue(scanned.isEmpty()); - - // Check scanning for archives - File war = new File(_webapps, "foo-1.2.3.war"); - touch(war); - File template = new File(_templates, "foo=foo-1.2.3.war"); - touch(template); - File node = new File(_nodes, "nodeA.war"); - touch(node); - File instance = new File(_instances, "foo=instance.war"); - touch(instance); - - provider.scan(); - provider.scan(); - - Set results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertThat(results, contains("webapps/foo-1.2.3.war")); - assertThat(results, contains("templates/foo=foo-1.2.3.war")); - assertThat(results, contains("nodes/nodeA.war")); - assertThat(results, contains("instances/foo=instance.war")); - - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - IO.delete(war); - IO.delete(template); - IO.delete(node); - IO.delete(instance); - - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3.war")); - assertTrue(results.contains("templates/foo=foo-1.2.3.war")); - assertTrue(results.contains("nodes/nodeA.war")); - assertTrue(results.contains("instances/foo=instance.war")); - } - - @Test - public void testScanForDirs() throws Exception - { - final ConcurrentLinkedQueue> scanned = new ConcurrentLinkedQueue>(); - OverlayedAppProvider provider = new OverlayedAppProvider() - { - - /** - * @see org.eclipse.jetty.overlays.OverlayedAppProvider#updateLayers(java.util.Set) - */ - @Override - protected void updateLayers(Set filenames) - { - scanned.offer(filenames); - } - }; - provider.setScanInterval(0); - - provider.setScanDir(_scan); - provider.start(); - provider.scan(); - - assertTrue(scanned.isEmpty()); - - // Check scanning for directories - File war = new File(_webapps, "foo-1.2.3"); - war.mkdir(); - File template = new File(_templates, "foo=foo-1.2.3"); - template.mkdir(); - File node = new File(_nodes, "nodeA"); - node.mkdir(); - File instance = new File(_instances, "foo=instance"); - instance.mkdir(); - for (File f : new File[]{war, template, node, instance}) - { - File webinf = new File(f, "WEB-INF"); - webinf.mkdir(); - touch(webinf, "web.xml"); - } - - provider.scan(); - provider.scan(); - - Set results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Touch everything - touch(war, "WEB-INF/web.xml"); - touch(war, "WEB-INF/spring.XML"); - touch(war, "WEB-INF/other"); - touch(war, "WEB-INF/lib/bar.jar"); - touch(war, "WEB-INF/classes/bar.class"); - - for (File d : new File[]{template, node, instance}) - { - touch(d, "WEB-INF/web-fragment.xml"); - touch(d, "WEB-INF/overlay.xml"); - touch(d, "WEB-INF/other"); - touch(d, "WEB-INF/lib/bar.jar"); - } - - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - - // Touch xml - Thread.sleep(1000); // needed so last modified is different - for (File d : new File[]{war, template, node, instance}) - { - touch(d, "WEB-INF/web.xml"); - } - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - - // Touch XML - Thread.sleep(1000); - for (File d : new File[]{war, template, node, instance}) - { - touch(d, "WEB-INF/spring.XML"); - } - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - - // Touch unrelated - for (File d : new File[]{war, template, node, instance}) - { - touch(d, "index.html"); - } - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertEquals(null, results); - - // Touch jar - Thread.sleep(1000); - for (File d : new File[]{war, template, node, instance}) - { - touch(d, "WEB-INF/lib/bar.jar"); - } - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - - // touch other class - Thread.sleep(1000); - for (File d : new File[]{war, template, node, instance}) - { - touch(d, "index.html"); - } - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(scanned.isEmpty()); - - // delete all - IO.delete(war); - IO.delete(template); - IO.delete(node); - IO.delete(instance); - - provider.scan(); - provider.scan(); - results = scanned.poll(); - assertTrue(results != null); - assertEquals(4, results.size()); - assertTrue(results.contains("webapps/foo-1.2.3")); - assertTrue(results.contains("templates/foo=foo-1.2.3")); - assertTrue(results.contains("nodes/nodeA")); - assertTrue(results.contains("instances/foo=instance")); - } - - @Test - public void testTriageURI() throws Exception - { - final BlockingQueue scanned = new LinkedBlockingQueue(); - OverlayedAppProvider provider = new OverlayedAppProvider() - { - protected void removeInstance(String name) - { - scanned.add("removeInstance " + name); - } - - protected Instance loadInstance(String name, File origin) - { - scanned.add("loadInstance " + name); - scanned.add(origin.getAbsolutePath()); - return null; - } - - protected void removeNode() - { - scanned.add("removeNode"); - } - - protected Node loadNode(File origin) - { - scanned.add("loadNode"); - scanned.add(origin.getAbsolutePath()); - return null; - } - - protected void removeTemplate(String name) - { - scanned.add("removeTemplate " + name); - } - - protected Template loadTemplate(String name, File origin) - { - scanned.add("loadTemplate " + name); - scanned.add(origin.getAbsolutePath()); - return null; - } - - protected void removeWebapp(String name) - { - scanned.add("removeWebapp " + name); - } - - protected Webapp loadWebapp(String name, File origin) - { - scanned.add("loadWebapp " + name); - scanned.add(origin.getAbsolutePath()); - return null; - } - - protected void redeploy() - { - } - }; - provider.setScanInterval(0); - provider.setNodeName("nodeA"); - - provider.setScanDir(_scan); - provider.start(); - provider.scan(); - - assertTrue(scanned.isEmpty()); - - // Add a war - File war = new File(_webapps, "foo-1.2.3.war"); - touch(war); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadWebapp foo-1.2.3"); - assertEquals(war.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add a template - File template = new File(_templates, "foo=foo-1.2.3.war"); - touch(template); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadTemplate foo=foo-1.2.3"); - assertEquals(template.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add a node - File nodeA = new File(_nodes, "nodeA.war"); - touch(nodeA); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadNode"); - assertEquals(nodeA.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add another node - File nodeB = new File(_nodes, "nodeB.war"); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Add an instance - File instance = new File(_instances, "foo=instance.war"); - touch(instance); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadInstance foo=instance"); - assertEquals(instance.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add a war dir - File warDir = new File(_webapps, "foo-1.2.3"); - warDir.mkdir(); - File warDirWI = new File(warDir, "WEB-INF"); - warDirWI.mkdir(); - touch(warDirWI, "web.xml"); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadWebapp foo-1.2.3"); - assertEquals(warDir.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add a template dir - File templateDir = new File(_templates, "foo=foo-1.2.3"); - templateDir.mkdir(); - File templateDirWI = new File(templateDir, "WEB-INF"); - templateDirWI.mkdir(); - touch(templateDirWI, "web.xml"); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadTemplate foo=foo-1.2.3"); - assertEquals(templateDir.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add a node dir - File nodeADir = new File(_nodes, "nodeA"); - nodeADir.mkdir(); - File nodeADirWI = new File(nodeADir, "WEB-INF"); - nodeADirWI.mkdir(); - touch(nodeADirWI, "web.xml"); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadNode"); - assertEquals(nodeADir.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Add another node dir - File nodeBDir = new File(_nodes, "nodeB"); - nodeBDir.mkdir(); - File nodeBDirWI = new File(nodeBDir, "WEB-INF"); - nodeBDirWI.mkdir(); - touch(nodeBDirWI, "web.xml"); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Add an instance dir - File instanceDir = new File(_instances, "foo=instance"); - instanceDir.mkdir(); - File instanceDirWI = new File(instanceDir, "WEB-INF"); - instanceDirWI.mkdir(); - touch(instanceDirWI, "web.xml"); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadInstance foo=instance"); - assertEquals(instanceDir.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // touch archives will be ignored. - Thread.sleep(1000); - touch(war); - touch(template); - touch(nodeA); - touch(nodeB); - touch(instance); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Touch directories - for (File d : new File[]{warDir, templateDir, nodeADir, nodeBDir, instanceDir}) - { - touch(d, "WEB-INF/web.xml"); - } - provider.scan(); - provider.scan(); - assertEquals(8, scanned.size()); - scanned.clear(); - - // Remove web dir - IO.delete(warDir); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeWebapp foo-1.2.3"); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadWebapp foo-1.2.3"); - assertEquals(war.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Remove template dir - IO.delete(templateDir); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeTemplate foo=foo-1.2.3"); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadTemplate foo=foo-1.2.3"); - assertEquals(template.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Remove nodeA dir - IO.delete(nodeADir); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeNode"); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadNode"); - assertEquals(nodeA.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Remove nodeB dir - IO.delete(nodeBDir); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Remove instance dir - IO.delete(instanceDir); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeInstance foo=instance"); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "loadInstance foo=instance"); - assertEquals(instance.getAbsolutePath(), scanned.poll(1, TimeUnit.SECONDS)); - - // Remove web - IO.delete(war); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeWebapp foo-1.2.3"); - - // Remove template - IO.delete(template); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeTemplate foo=foo-1.2.3"); - - // Remove nodeA dir - IO.delete(nodeA); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeNode"); - - // Remove nodeB dir - IO.delete(nodeB); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Remove instance dir - IO.delete(instance); - provider.scan(); - provider.scan(); - assertEquals(scanned.poll(1, TimeUnit.SECONDS), "removeInstance foo=instance"); - - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - } - - private void touch(File base, String path) - { - try - { - File target = new File(new URI(base.toURI().toString() + path)); - target.getParentFile().mkdirs(); - touch(target); - } - catch (URISyntaxException e) - { - e.printStackTrace(); - } - } - - private void touch(File file) - { - try - { - IO.delete(file); - try (OutputStream out = new FileOutputStream(file, false)) - { - out.write("

Hello

".getBytes()); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } -} diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 9c74ff39523..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=blue WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 9c74ff39523..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=blue WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/lib-overlay/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/lib-overlay/resources.jar deleted file mode 100644 index a94e69bb0ea974a806898e43834bf336f9062ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmWIWW@Zs#-~d9m+EiNxB*4kQ!r%MB z$s^K|8W}9ppK1O`QxktG9xgV0$ulwSif5{?Gd~r5EMf#ZWMA~3Aa|fOAdGN`LIkQW zc!9D-sm1xFMaij-dLDN))(VOQ+zvj9q!k<`0p6@^ PApfudVJ1*g3LMG+U~j=h diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/overlay.xml deleted file mode 100644 index 680199d225f..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/overlay.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - /blue - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/web-overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/web-overlay.xml deleted file mode 100644 index 6eee674e02c..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/web-overlay.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - Blue Test WebApp - - - overlay - instances/myfoo=blue/web.xml - - - instance - instances/myfoo=blue/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/lib/resources.jar deleted file mode 100644 index a94e69bb0ea974a806898e43834bf336f9062ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmWIWW@Zs#-~d9m+EiNxB*4kQ!r%MB z$s^K|8W}9ppK1O`QxktG9xgV0$ulwSif5{?Gd~r5EMf#ZWMA~3Aa|fOAdGN`LIkQW zc!9D-sm1xFMaij-dLDN))(VOQ+zvj9q!k<`0p6@^ PApfudVJ1*g3LMG+U~j=h diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/logo.png b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/logo.png deleted file mode 100644 index 21e0d3024a490381a6fd603b940c2ea19e627b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 zcma)7c{Cg77Ee%HY!#}OQd_mhSUO5uJJFIB&1(^DT1y43h-NATK~#yFv39homZt5L zc1A2k&s8Sx*@N z0H{KJye>+SBo(Bhyz~W9oC^0K{-U=hppI_vm-M5A@wpri0D!=I0t7s+I4D&rV4;3z z6ed8j+8U;dSC#6dDqZZEU@YVo8XXyj1wd{`hGQd? zkTk)sz+(c&4)wX|zi!OR%IX7{%iR3MYs%)1y!LTpEvK`GQ0J}g|LZ9v_k~*G#aG4t z-XDe!=n^x5cGzD@GW=#GN3usz&pkb5q2h~<2_lCRQEMEVg!G^gDt>V6HQQk#!CP^i zPjtooV)|)Zmw+~fXSfLd_IwIcG_KQ7`qACT-58i%l;J6(EJZmjDJmV!lGD=<4eV>N@7xsHNG%v?yzw*0IQ3G0MiA;QMkC`!5 z9ECtM>ds}B#1##z*Xb(GdV4M-ADxm5#=T!%B3@D+9yy z0sat1Wgz2)Ip#CY(Rw9#aOh_lqGv;jOUbT$45OLa)f|wtWULc|lHe5XVhG1Og7+sg zPqTAI%%=sdp;L{I$}INPx`A*u8F2Q!batz6cD|*tz4bL40S?P;3N}6Fz#47ft@C`^OY?(Ij-Tfiw zW7E0noHgyOzb6fZv?k1JWj!_8D;7*_;M+Ak)d%iMn5DcY!b$U4$8Q*EeI&B9F;Q-# zfsnv+{i3tTc)9ToWO@CkO=Zbu+cpqVqvxSOT)-I;!;DS7htwp-9mcUb#Ly#jORdzT>cYu5e{9aQgUO#~lgjW(yxO6$A#;V`!8M&szSD%>3FMYVp+XVS>}rO8A13aCAbcb^8a^wF+sW6@ObHu6^KbZIBuMZ&N@g z?d?vd(&P|3qMY#O9XIXZAV{m93p{kD2`w7k zcX+`+_?uP-q1&%jj>}nDpM0}G1y%#BwJ-cKbBu}ZRJ49 zd>#&`6T>5MU39L``6G<3)n`JO;qD;IfJ~2rRqEb_*S7QYz`sfJbg`9&$TcUr_K@!wkIA!j7S&STue}OaVqsj=G8#*Z?O7&y*`j zz9yJeVBOJ_FiWpgDi3@Mvv^k z=_y9vmUXFo$qYYO8zGh?))GnJXqf!flgi5Lq_Bz7Qr-%g$Ws|y&ru`FA`q?U#)p@K zfmHXSa(Gva`mA)Fn%Xb-CQpBN;zV2Ws}f`@={BYs|G-PSOiwthTWm9b9!Y>9lYVJD ztnN^sUpO=~Bg$|!@;%5GCzpNf4Q+u&%vji2`Q-24GJ4HkD*P7y>`@i#kGeuNJLO6* zGG{XR(IyG~{mukxl6lUYB-DK16h34HYtxv@4O5-w5NMn1mimu7+a1CID{E`d>n6XS zZQ5tr#F}L0gIR&76~pDq!33aSGHxPb^>4^*c2WybIk>RWvI zcu}ozz%M6Ez39G*cI2AH6S;4I%d%k$)r(XLL`E45O;5UE-64PO8|T{{dZu B2IT+% diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 9c74ff39523..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=blue WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 9c74ff39523..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=blue WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/logo.png b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/webapp/logo.png deleted file mode 100644 index 21e0d3024a490381a6fd603b940c2ea19e627b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2128 zcma)7c{Cg77Ee%HY!#}OQd_mhSUO5uJJFIB&1(^DT1y43h-NATK~#yFv39homZt5L zc1A2k&s8Sx*@N z0H{KJye>+SBo(Bhyz~W9oC^0K{-U=hppI_vm-M5A@wpri0D!=I0t7s+I4D&rV4;3z z6ed8j+8U;dSC#6dDqZZEU@YVo8XXyj1wd{`hGQd? zkTk)sz+(c&4)wX|zi!OR%IX7{%iR3MYs%)1y!LTpEvK`GQ0J}g|LZ9v_k~*G#aG4t z-XDe!=n^x5cGzD@GW=#GN3usz&pkb5q2h~<2_lCRQEMEVg!G^gDt>V6HQQk#!CP^i zPjtooV)|)Zmw+~fXSfLd_IwIcG_KQ7`qACT-58i%l;J6(EJZmjDJmV!lGD=<4eV>N@7xsHNG%v?yzw*0IQ3G0MiA;QMkC`!5 z9ECtM>ds}B#1##z*Xb(GdV4M-ADxm5#=T!%B3@D+9yy z0sat1Wgz2)Ip#CY(Rw9#aOh_lqGv;jOUbT$45OLa)f|wtWULc|lHe5XVhG1Og7+sg zPqTAI%%=sdp;L{I$}INPx`A*u8F2Q!batz6cD|*tz4bL40S?P;3N}6Fz#47ft@C`^OY?(Ij-Tfiw zW7E0noHgyOzb6fZv?k1JWj!_8D;7*_;M+Ak)d%iMn5DcY!b$U4$8Q*EeI&B9F;Q-# zfsnv+{i3tTc)9ToWO@CkO=Zbu+cpqVqvxSOT)-I;!;DS7htwp-9mcUb#Ly#jORdzT>cYu5e{9aQgUO#~lgjW(yxO6$A#;V`!8M&szSD%>3FMYVp+XVS>}rO8A13aCAbcb^8a^wF+sW6@ObHu6^KbZIBuMZ&N@g z?d?vd(&P|3qMY#O9XIXZAV{m93p{kD2`w7k zcX+`+_?uP-q1&%jj>}nDpM0}G1y%#BwJ-cKbBu}ZRJ49 zd>#&`6T>5MU39L``6G<3)n`JO;qD;IfJ~2rRqEb_*S7QYz`sfJbg`9&$TcUr_K@!wkIA!j7S&STue}OaVqsj=G8#*Z?O7&y*`j zz9yJeVBOJ_FiWpgDi3@Mvv^k z=_y9vmUXFo$qYYO8zGh?))GnJXqf!flgi5Lq_Bz7Qr-%g$Ws|y&ru`FA`q?U#)p@K zfmHXSa(Gva`mA)Fn%Xb-CQpBN;zV2Ws}f`@={BYs|G-PSOiwthTWm9b9!Y>9lYVJD ztnN^sUpO=~Bg$|!@;%5GCzpNf4Q+u&%vji2`Q-24GJ4HkD*P7y>`@i#kGeuNJLO6* zGG{XR(IyG~{mukxl6lUYB-DK16h34HYtxv@4O5-w5NMn1mimu7+a1CID{E`d>n6XS zZQ5tr#F}L0gIR&76~pDq!33aSGHxPb^>4^*c2WybIk>RWvI zcu}ozz%M6Ez39G*cI2AH6S;4I%d%k$)r(XLL`E45O;5UE-64PO8|T{{dZu B2IT+% diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 4817b3f04de..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=green WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 4817b3f04de..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=green WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/lib-overlay/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/lib-overlay/resources.jar deleted file mode 100644 index bfce59a00ba557902d2b7f79105a59e54642e38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmWIWW@Zs#-~d9m+EiNxB*4kQ!r%MB z$s^K|8W}9ppK1O`QxktG9xgV0$ulwSif5{?Gd~r5EMf#ZWMA~3Aa|fOAdGN`LIkQW zc!9D-sm1xFMaij-dLO>P$oyj&8Jsy!mz?)=K8JR>FP}2u2@ - - - - /green - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/web-overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/web-overlay.xml deleted file mode 100644 index 92ed7290d78..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/WEB-INF/web-overlay.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - Green Test WebApp - - - overlay - instances/myfoo=green/web.xml - - - instance - instances/myfoo=green/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/lib/resources.jar deleted file mode 100644 index bfce59a00ba557902d2b7f79105a59e54642e38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 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 Zis-IhA44|S9zJ^uP=2o=-y&-j^*>XfsSW@D diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 4817b3f04de..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=green WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 4817b3f04de..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=green WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/logo.png b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=green/webapp/logo.png deleted file mode 100644 index 67b04b96b80a36256e6365f3555fe0942da5c97f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11230 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 Zis-IhA44|S9zJ^uP=2o=-y&-j^*>XfsSW@D diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 47d45478c5d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=red WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 47d45478c5d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=red WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/lib-overlay/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/lib-overlay/resources.jar deleted file mode 100644 index 994a698f89908e6960d52c925a82c2255ac6b45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmWIWW@Zs#-~d9m+EiNxB*4kQ!r%MB z$s^K|8W}9ppK1O`QxktG9xgV0$ulwSif5{?Gd~r5EMf#ZWMA~3Aa|fOAdGN`LIkQW zc!9D-sm1xFMaij-dLHnHqCu%7z#CO7ax{Tb1p - - - - /red - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/web-overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/web-overlay.xml deleted file mode 100644 index c8d9dcb0a64..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/WEB-INF/web-overlay.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - Red Test WebApp - - - overlay - instances/myfoo=red/web.xml - - - instance - instances/myfoo=red/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/resources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/lib/resources.jar deleted file mode 100644 index 994a698f89908e6960d52c925a82c2255ac6b45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 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 diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 47d45478c5d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=red WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 47d45478c5d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -instance myfoo=red WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/logo.png b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=red/webapp/logo.png deleted file mode 100644 index a121e4a6c11cdfa3a831d0663c39d129ed6d7dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4499 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 diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/root=root/WEB-INF/overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/instances/root=root/WEB-INF/overlay.xml deleted file mode 100644 index 5ceeb0ee51c..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/root=root/WEB-INF/overlay.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceC.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceC.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceC.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceD.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceD.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/classes/resourceD.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/lib-overlay/nodeResources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/lib-overlay/nodeResources.jar deleted file mode 100644 index 61f42e6bba84d32596a39bb328f2b079b7348828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmWIWW@Zs#-~htkHL11?NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+IfN zl1HQ^H8NPHKhyk?rY8PWJX~!0l4oMt70*;(XMQUBSi}f+$iC=5LGD0nKp5c==5SPB z@B(FvQj7CTi;`0v^-3yAPM`Mo3_Wqu=MfXwl-;#mGTcBloJ5=AL={tJs#fHv2cV!Z diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/web-overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/web-overlay.xml deleted file mode 100644 index e9f509aaf89..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/WEB-INF/web-overlay.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - overlay - nodes/nodeA/web.xml - - - node - nodes/nodeA/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/nodeResources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/lib/nodeResources.jar deleted file mode 100644 index 61f42e6bba84d32596a39bb328f2b079b7348828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmWIWW@Zs#-~htkHL11?NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+IfN zl1HQ^H8NPHKhyk?rY8PWJX~!0l4oMt70*;(XMQUBSi}f+$iC=5LGD0nKp5c==5SPB z@B(FvQj7CTi;`0v^-3yAPM`Mo3_Wqu=MfXwl-;#mGTcBloJ5=AL={tJs#fHv2cV!Z diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceC.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceC.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceC.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceD.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceD.txt deleted file mode 100644 index 170b5badf10..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeA/webapp/WEB-INF/classes/resourceD.txt +++ /dev/null @@ -1 +0,0 @@ -node WEB-INF lib diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeB/WEB-INF/web.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeB/WEB-INF/web.xml deleted file mode 100644 index 5cf803a5039..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/nodes/nodeB/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - overlay - nodes/nodeB/web.xml - - - node - nodes/nodeB/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceA.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceB.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceC.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceC.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceC.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceD.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceD.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceD.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceE.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceE.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceE.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceF.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceF.txt deleted file mode 100644 index 9e00184c94d..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/classes/resourceF.txt +++ /dev/null @@ -1 +0,0 @@ -template WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/jetty-web.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/jetty-web.xml deleted file mode 100644 index 7d6af1fa167..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/jetty-web.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - Executing jetty-web.xml for - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/lib-overlay/templateResources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/lib-overlay/templateResources.jar deleted file mode 100644 index 4fb379cb2220dd66d34ba0b3464bb9de108ad426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmWIWW@Zs#-~hslHL11?NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+IfN zl1HQ^H8NPHKhyk?rY8PWJX~!0l4oMt70*;(XMQUBSi}f+$iC=5LGD0nKp5eW#xPW0 z@B(FvQj7CTi;`0v^-3yAv^~%2p77N13_Wqu=MfXwB!^oM`1pb9Kx&CI$%$$vIaAFf z7pj@$N;Q+*sAiHoNhX~@OUuZqz>_GG7@0&EQ1b;W(Sz~@Du5?+P%a7ZM%9X(OhLH< z0YJG8t`#YdAe#V6&dA9VqQ#0{eqmZ& zzC+RqPN2kVwE#vPESSJ4l6b96NLs;35LqiImEn$@Ge}y&X)eH - - - false - - true - 10000000 - 1000 - 64000000 - - - - bogus - application/bogon - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-default.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-default.xml deleted file mode 100644 index 7359db4d67f..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-default.xml +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Default web.xml file. - This file is applied to a Web application before its own WEB_INF/web.xml file - - - - - - - - org.eclipse.jetty.servlet.listener.ELContextCleaner - - - - - - - - org.eclipse.jetty.servlet.listener.IntrospectorCleaner - - - - - - - - - - - - - - - - - default - org.eclipse.jetty.servlet.DefaultServlet - - aliases - false - - - acceptRanges - true - - - dirAllowed - true - - - welcomeServlets - false - - - redirectWelcome - false - - - maxCacheSize - 256000000 - - - maxCachedFileSize - 200000000 - - - maxCachedFiles - 2048 - - - gzip - false - - - etags - false - - - useFileMappedBuffer - true - - - - 0 - - - - default - / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jsp - org.eclipse.jetty.jsp.JettyJspServlet - - logVerbosityLevel - DEBUG - - - fork - false - - - xpoweredBy - false - - - compilerTargetVM - 1.7 - - - compilerSourceVM - 1.7 - - - 0 - - - - jsp - *.jsp - *.jspf - *.jspx - *.xsp - *.JSP - *.JSPF - *.JSPX - *.XSP - - - - - - - - 30 - - - - - - - - - - - - - - - index.html - index.htm - index.jsp - - - - - - - - ar - ISO-8859-6 - - - be - ISO-8859-5 - - - bg - ISO-8859-5 - - - ca - ISO-8859-1 - - - cs - ISO-8859-2 - - - da - ISO-8859-1 - - - de - ISO-8859-1 - - - el - ISO-8859-7 - - - en - ISO-8859-1 - - - es - ISO-8859-1 - - - et - ISO-8859-1 - - - fi - ISO-8859-1 - - - fr - ISO-8859-1 - - - hr - ISO-8859-2 - - - hu - ISO-8859-2 - - - is - ISO-8859-1 - - - it - ISO-8859-1 - - - iw - ISO-8859-8 - - - ja - Shift_JIS - - - ko - EUC-KR - - - lt - ISO-8859-2 - - - lv - ISO-8859-2 - - - mk - ISO-8859-5 - - - nl - ISO-8859-1 - - - no - ISO-8859-1 - - - pl - ISO-8859-2 - - - pt - ISO-8859-1 - - - ro - ISO-8859-2 - - - ru - ISO-8859-5 - - - sh - ISO-8859-5 - - - sk - ISO-8859-2 - - - sl - ISO-8859-2 - - - sq - ISO-8859-2 - - - sr - ISO-8859-5 - - - sv - ISO-8859-1 - - - tr - ISO-8859-9 - - - uk - ISO-8859-5 - - - zh - GB2312 - - - zh_TW - Big5 - - - - - - - - - Disable TRACE - / - TRACE - - - - - - Enable everything but TRACE - / - TRACE - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-overlay.xml b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-overlay.xml deleted file mode 100644 index a554231f4ff..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-overlay.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - Templated Test WebApp - - - overlay - templates/myfoo/web.xml - - - template - templates/myfoo/web.xml - - - overlay.template - ${overlay.template} - - - overlay.template.name - ${overlay.template.name} - - - overlay.template.classifier - ${overlay.template.classifier} - - - overlay.instance.classifier - ${overlay.instance.classifier} - - - overlay.instance - ${overlay.instance} - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.html b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.html deleted file mode 100644 index afebff7ad8f..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -

Template foo webapp

- - -Should see index.jsp instead of this!!! - -

-Red, -Blue, -Green diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.jsp b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.jsp deleted file mode 100644 index 569338d2448..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/index.jsp +++ /dev/null @@ -1,54 +0,0 @@ - -<%@page import="java.io.BufferedReader"%> -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.util.Enumeration"%> -

<%=application.getServletContextName()%>

- - -

-Red, -Blue, -Green -

- -

Overlays

-webapp=<%=application.getInitParameter("webapp")%>
-template=<%=application.getInitParameter("template")%>
-node=<%=application.getInitParameter("node")%>
-instance=<%=application.getInitParameter("instance")%>
- -

Init Parameters

-<% -Enumeration e=application.getInitParameterNames(); -while (e.hasMoreElements()) -{ - String name=e.nextElement().toString(); - String value=application.getInitParameter(name); - out.println(name+": "+value+"
"); -} -%> -

Attributes

-<% -e=application.getAttributeNames(); -while (e.hasMoreElements()) -{ - String name=e.nextElement().toString(); - String value=String.valueOf(application.getAttribute(name)); - out.println(name+": "+value+"
"); -} -%> -

Resources

-<% -ClassLoader loader = Thread.currentThread().getContextClassLoader(); -%> -resourceA.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceA.txt").openStream())).readLine()%>
-resourceB.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceB.txt").openStream())).readLine()%>
-resourceC.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceC.txt").openStream())).readLine()%>
-resourceD.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceD.txt").openStream())).readLine()%>
-resourceE.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceE.txt").openStream())).readLine()%>
-resourceF.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceF.txt").openStream())).readLine()%>
-resourceG.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceG.txt").openStream())).readLine()%>
-resourceH.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceH.txt").openStream())).readLine()%>
-resourceI.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceI.txt").openStream())).readLine()%>
-resourceJ.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceJ.txt").openStream())).readLine()%>
-resourceK.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceK.txt").openStream())).readLine()%>
diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/META-INF/MANIFEST.MF b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/META-INF/MANIFEST.MF deleted file mode 100644 index e7374eeb7dc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Created-By: 1.6.0_20 (Sun Microsystems Inc.) - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/templateResources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/lib/templateResources.jar deleted file mode 100644 index 4fb379cb2220dd66d34ba0b3464bb9de108ad426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmWIWW@Zs#-~hslHL11?NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+IfN zl1HQ^H8NPHKhyk?rY8PWJX~!0l4oMt70*;(XMQUBSi}f+$iC=5LGD0nKp5eW#xPW0 z@B(FvQj7CTi;`0v^-3yAv^~%2p77N13_Wqu=MfXwB!^oM`1pb9Kx&CI$%$$vIaAFf z7pj@$N;Q+*sAiHoNhX~@OUuZqz>_GG7@0&EQ1b;W(Sz~@Du5?+P%a7ZM%9X(OhLH< z0YJG8t`#YdAe#V6&dA9VqQ#0{eqmZ& zzC+RqPN2kVwE#vPESSJ4l6b96NLs;35LqiImEn$@Ge}y&X)eH^(zW001_nvP#&v)MEeNr8;7y({sUH||D ztgS4aKzs~_FE=MRLmE(-KOo!*V*ykT$bJSFJlCz_Co!O0#D7m`ogcyt&y_U0d6=qvkTLig~}W5sBV? z;X&!yS)F#7Fg7&UDH~hz^Y!&*5bJLc`eR+1OQ>4-(9jw{IImYZ^6O-FYAR1^*PO1d zuHydoiWoqgY3JzNy0yKW9l1JXttXxP^VI=vKwVAEN@lt#vL+CfmX@X@%x#5$<+Qb( z52JcQ&5=kXO#I!_Ru9>=MhTYQ{ozBtp1wX0KnM)P=`ED8v5rwwNre7K^`9gP)d#OeN8?0_ zG~89zSx;%SQzj-RgxeM9hh^*m_ch(wn@tcPbh^27RRPU(Z6K}BqI(8GDqO%nJheuG zs=ZnSfwld^{QUgZzP`RYKmYnlZY^{H3xT|BXn+D$WOCTt8-aTn84B4}a9Fy66#o+n zMKU)x*S+bshlfm3Qj(5|NrpK*zM;VYFu!)~#TWhhp>G?2wd;5$pwAYtw0!?wm z1%#0;G%dwA?!XPq1dsoT-i)T@+o^;#eH>yk&m@?`gP=(k3IqZ{B$=)NOGgXJnS-p7@MLHM^ z#?jT4i#)|=v&g!$K`N?j_Cu4n10w{CuNbSUb@_FrThRLln1QTx z6u!K?e7-f|MAby5pq#PVI?0&2;k&`^Pty&jIBJ$n*)hqi4$s(F+LPs64Ogd|?|cg} z*p-kTGz5i0al{+R3Q}YD8}8D*d6MbGrBO|gFx0%UsR?a4f3Uj&HBU=V%LCd7+N zNE|xS3SPSQrc%?=c%zPwXm(hv%Fg$dDH_ThYbz(N(+iC@mV?0KTD%-b7dChRbqx(M zk?f%%CkR|f-qcQgY;4+3GoI!OHe*q9F<57fEwmpX8pmIz%P z{G9^;t5r9%Template foo webapp - - -Should see index.jsp instead of this!!! - -

-Red, -Blue, -Green diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/index.jsp b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/index.jsp deleted file mode 100644 index 569338d2448..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/index.jsp +++ /dev/null @@ -1,54 +0,0 @@ - -<%@page import="java.io.BufferedReader"%> -<%@page import="java.io.InputStreamReader"%> -<%@page import="java.util.Enumeration"%> -

<%=application.getServletContextName()%>

- - -

-Red, -Blue, -Green -

- -

Overlays

-webapp=<%=application.getInitParameter("webapp")%>
-template=<%=application.getInitParameter("template")%>
-node=<%=application.getInitParameter("node")%>
-instance=<%=application.getInitParameter("instance")%>
- -

Init Parameters

-<% -Enumeration e=application.getInitParameterNames(); -while (e.hasMoreElements()) -{ - String name=e.nextElement().toString(); - String value=application.getInitParameter(name); - out.println(name+": "+value+"
"); -} -%> -

Attributes

-<% -e=application.getAttributeNames(); -while (e.hasMoreElements()) -{ - String name=e.nextElement().toString(); - String value=String.valueOf(application.getAttribute(name)); - out.println(name+": "+value+"
"); -} -%> -

Resources

-<% -ClassLoader loader = Thread.currentThread().getContextClassLoader(); -%> -resourceA.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceA.txt").openStream())).readLine()%>
-resourceB.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceB.txt").openStream())).readLine()%>
-resourceC.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceC.txt").openStream())).readLine()%>
-resourceD.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceD.txt").openStream())).readLine()%>
-resourceE.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceE.txt").openStream())).readLine()%>
-resourceF.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceF.txt").openStream())).readLine()%>
-resourceG.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceG.txt").openStream())).readLine()%>
-resourceH.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceH.txt").openStream())).readLine()%>
-resourceI.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceI.txt").openStream())).readLine()%>
-resourceJ.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceJ.txt").openStream())).readLine()%>
-resourceK.txt=<%=new BufferedReader(new InputStreamReader(loader.getResource("resourceK.txt").openStream())).readLine()%>
diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/logo.png b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/webapp/logo.png deleted file mode 100644 index b633447fff53fc3da462aecd0899c2255d0f53b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2001 zcmbVNc{JN=8vZ4%ec!@G3AI)%b!|;-Rk^WdEOilDQA-7-LMs%dxArP()Y_|hYpJxB ztCb0jEmZ9dMTJsJLW`od+V8J3bLNlvXU>^(zW001_nvP#&v)MEeNr8;7y({sUH||D ztgS4aKzs~_FE=MRLmE(-KOo!*V*ykT$bJSFJlCz_Co!O0#D7m`ogcyt&y_U0d6=qvkTLig~}W5sBV? z;X&!yS)F#7Fg7&UDH~hz^Y!&*5bJLc`eR+1OQ>4-(9jw{IImYZ^6O-FYAR1^*PO1d zuHydoiWoqgY3JzNy0yKW9l1JXttXxP^VI=vKwVAEN@lt#vL+CfmX@X@%x#5$<+Qb( z52JcQ&5=kXO#I!_Ru9>=MhTYQ{ozBtp1wX0KnM)P=`ED8v5rwwNre7K^`9gP)d#OeN8?0_ zG~89zSx;%SQzj-RgxeM9hh^*m_ch(wn@tcPbh^27RRPU(Z6K}BqI(8GDqO%nJheuG zs=ZnSfwld^{QUgZzP`RYKmYnlZY^{H3xT|BXn+D$WOCTt8-aTn84B4}a9Fy66#o+n zMKU)x*S+bshlfm3Qj(5|NrpK*zM;VYFu!)~#TWhhp>G?2wd;5$pwAYtw0!?wm z1%#0;G%dwA?!XPq1dsoT-i)T@+o^;#eH>yk&m@?`gP=(k3IqZ{B$=)NOGgXJnS-p7@MLHM^ z#?jT4i#)|=v&g!$K`N?j_Cu4n10w{CuNbSUb@_FrThRLln1QTx z6u!K?e7-f|MAby5pq#PVI?0&2;k&`^Pty&jIBJ$n*)hqi4$s(F+LPs64Ogd|?|cg} z*p-kTGz5i0al{+R3Q}YD8}8D*d6MbGrBO|gFx0%UsR?a4f3Uj&HBU=V%LCd7+N zNE|xS3SPSQrc%?=c%zPwXm(hv%Fg$dDH_ThYbz(N(+iC@mV?0KTD%-b7dChRbqx(M zk?f%%CkR|f-qcQgY;4+3GoI!OHe*q9F<57fEwmpX8pmIz%P z{G9^;t5r9% - - - - / - - - - - index.html - - - max-age=3600,public - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/index.html b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/index.html deleted file mode 100644 index 67ed39608fc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -

Cloudtide Deployer Demo

- -

-Red, -Blue, -Green diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/webapp/index.html b/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/webapp/index.html deleted file mode 100644 index 67ed39608fc..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/root/webapp/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -

Cloudtide Deployer Demo

- -

-Red, -Blue, -Green diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceA.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceA.txt deleted file mode 100644 index c8ca259d738..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceA.txt +++ /dev/null @@ -1 +0,0 @@ -webapp WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceB.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceB.txt deleted file mode 100644 index c8ca259d738..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceB.txt +++ /dev/null @@ -1 +0,0 @@ -webapp WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceC.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceC.txt deleted file mode 100644 index c8ca259d738..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceC.txt +++ /dev/null @@ -1 +0,0 @@ -webapp WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceD.txt b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceD.txt deleted file mode 100644 index c8ca259d738..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/classes/resourceD.txt +++ /dev/null @@ -1 +0,0 @@ -webapp WEB-INF classes diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/lib/webappResources.jar b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/WEB-INF/lib/webappResources.jar deleted file mode 100644 index 4c450a43e304870b74178a7288129f64d35b625a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmWIWW@Zs#-~d8_uvA+HB*4kQ!r%MB z$s^K|8W}9ppK1O`QxktG9xgV0$ulwSif5{?Gd~r5EMf#ZWMA~3Aa|fOAdGOx?@&}< z@B(FvQj7CTi;`1a^-3yAwEca(bTk4u%1bYO{Zbr!;-t?bCa`%k{kB_*0#ys6n8%D3 zD#+%!kzpPy9`oGEFpmw7c^)K~$H*kYfSL|qkqk-)r~n?Zpi~jyjj9znT0p4)0YIq> zt`#XwAe#V+KIDi11vdg512Rz}6Im-Lrf_Q&V?<~L#~ZR%P^942nueqm97V`lLE(>E a>oz2<;MfT8W@Q8UhYbibfs$ - - - Test WebApp - - - overlay - webapps/foo/WEB-INF/web.xml - - - webapp - webapps/foo-INF/web.xml - - - - - diff --git a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/index.html b/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/index.html deleted file mode 100644 index a98e28bfce9..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/webapps/foo/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -

foo webapp

From ac14312c99669c22f978e15c81d8d24c0e0ff720 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 11 Aug 2020 08:29:23 -0500 Subject: [PATCH 2/3] Removing overlay-deployer documentation Signed-off-by: Joakim Erdfelt --- .../configuring/deploying/chapter.adoc | 1 - .../deploying/overlay-deployer.adoc | 292 ------------------ 2 files changed, 293 deletions(-) delete mode 100644 jetty-documentation/src/main/asciidoc/configuring/deploying/overlay-deployer.adoc diff --git a/jetty-documentation/src/main/asciidoc/configuring/deploying/chapter.adoc b/jetty-documentation/src/main/asciidoc/configuring/deploying/chapter.adoc index 8d5b8a4fa81..b3a74b359d0 100644 --- a/jetty-documentation/src/main/asciidoc/configuring/deploying/chapter.adoc +++ b/jetty-documentation/src/main/asciidoc/configuring/deploying/chapter.adoc @@ -31,4 +31,3 @@ include::static-content-deployment.adoc[] include::hot-deployment.adoc[] include::deployment-architecture.adoc[] include::quickstart-webapp.adoc[] -//include::overlay-deployer.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/configuring/deploying/overlay-deployer.adoc b/jetty-documentation/src/main/asciidoc/configuring/deploying/overlay-deployer.adoc deleted file mode 100644 index a1bbc307590..00000000000 --- a/jetty-documentation/src/main/asciidoc/configuring/deploying/overlay-deployer.adoc +++ /dev/null @@ -1,292 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// ======================================================================== -// All rights reserved. This program and the accompanying materials -// are made available under the terms of the Eclipse Public License v1.0 -// and Apache License v2.0 which accompanies this distribution. -// -// The Eclipse Public License is available at -// http://www.eclipse.org/legal/epl-v10.html -// -// The Apache License v2.0 is available at -// http://www.opensource.org/licenses/apache2.0.php -// -// You may elect to redistribute this code under either of these licenses. -// ======================================================================== -// - -[[overlay-deployer]] -=== Overlay WebApp Deployer - -____ -[NOTE] -This feature was reintroduced in Jetty 9.0.4 -____ - -The Jetty Overlay Deployer allows multiple WAR files to be overlaid so that a web application can be customized, configured, and deployed without unpacking, modifying and repacking the WAR file. -This has the following benefits: - -* WAR files can be kept immutable, even signed, so that it is clear which version is deployed. -* All modifications made to customize/configure the web application are separate WARs, and thus are easily identifiable for review and migration to new versions. -* A parameterized template overlay can be created that contains common customizations and configuration that apply to many instances of the web application (for example, for multi-tenant deployment). -* Because the layered deployment clearly identifies the common and instance specific components, Jetty is able to share classloaders and static resource caches for the template, greatly reducing the memory footprint of multiple instances. - -This tutorial describes how to configure Jetty to use the Overlay Deployer, and how to deploy multiple instances of a web application using the JTrac application in the example. - -[[overlay-overview]] -==== Overview - -Customizing, configuring and deploying a web application bundled as a WAR file frequently includes some or all of these steps: - -* Editing the `WEB-INF/web.xml` file to set init parameters, add filters/servlets or to configure JNDI resources. -* Editing other application specific configuration files under `WEB-INF/`. -* Editing container specific configuration files under `WEB-INF/` (for example, `jetty-web.xml` or `jboss-web.xml`). -* Adding/modifying static content such as images and CSS to create a style or themes for the web application. -* Adding Jars to the container classpath for Datasource and other resources. -* Modifying the container configuration to provide JNDI resources. - -The result is that the customizations and configurations blend into both the container and the WAR file. -If either the container or the base WAR file is upgraded to a new version, it can be a very difficult and error prone task to identify all the changes that have been made and to reapply them to a new version. - -[[overlay-overlays]] -==== Overlays - -To solve the problems highlighted above, Jetty introduced WAR overlays (a concept borrowed from the Maven WAR plugin). -An overlay is basically just another WAR file, whose contents merge on top of the original WAR so that filed can be added or replaced. -Jetty overlays also allow fragments of `web.xml` to be mixed in, which means the configuration can be modified without replacing it. - -[[overlay-jtrac]] -==== JTrac Overlay Example - -The JTrac issue tracking web application is a good example of a typical web application, as it uses the usual suspects of libs: spring, hibernate, dom4j, commons-*, wicket, etc. -The files for this demonstration are available in overlays-demo.tar.gz. -The demonstration can be expanded on top of the Jetty distribution; this tutorial expands it to /tmp and installs the components step-by-step: - -[source, screen, subs="{sub-order}"] ----- -$ cd /tmp -$ wget http://webtide.com/wp-content/uploads/2011/05/overlays-demo.tar.gz -$ tar xfvz overlays-demo.tar.gz -$ export OVERLAYS=/tmp/overlays ----- - -[[overlay-configure]] -==== Configuring Jetty for Overlays - -Overlays support is included in jetty distributions from 7.4.1-SNAPSHOT onwards, which can be downloaded from oss.sonatype.org or Maven Central and unpack into a directory. -The `start.ini` file needs edited so that it includes the overlay option and configuration file. -The resulting file should look like: - -[source, plain, subs="{sub-order}"] ----- -OPTIONS=Server,jsp,jmx,resources,websocket,ext,overlay -etc/jetty.xml -etc/jetty-deploy.xml -etc/jetty-overlay.xml ----- - -The mechanics of this are in etc/jetty-deploy.xml, which installs the `OverlayedAppProvider` into the `DeploymentManager`. -Jetty can then be started normally: - -[source, screen, subs="{sub-order}"] ----- -$ java -jar start.jar ----- - -Jetty is now listening on port 8080, but with no webapp deployed. - -____ -[IMPORTANT] -You should conduct the rest of the tutorial in another window with the JETTY_HOME environmental variable set to the Jetty distribution directory. -____ - -[[overlay-install]] -==== Installing the WebApp - -The WAR file for this demo can be downloaded and deployed the using the following commands, which downloads and extracts the WAR file to the $JETTY_HOME/overlays/webapps directory. - -[source, screen, subs="{sub-order}"] ----- -$ cd /tmp -$ wget -O jtrac.zip http://sourceforge.net/projects/j-trac/files/jtrac/2.1.0/jtrac-2.1.0.zip/download -$ jar xfv jtrac.zip jtrac/jtrac.war -$ mv jtrac/jtrac.war $JETTY_HOME/overlays/webapps ----- - -When these commands (or equivalent) have been executed, a message that the `OverlayedAppProvider` has extracted and loaded the WAR file will be displayed in the Jetty server window: - -[source, plain, subs="{sub-order}"] ----- -2011-05-06 10:31:54.678:INFO:OverlayedAppProvider:Extract jar:file:/tmp/jetty-distribution-7.4.1-SNAPSHOT/overlays/webapps/jtrac-2.1.0.war!/ to /tmp/jtrac-2.1.0_236811420856825222.extract -2011-05-06 10:31:55.235:INFO:OverlayedAppProvider:loaded jtrac-2.1.0@1304641914666 ----- - -Unlike the normal webapps dir, loading a WAR file from the overlays/webapp dir does not deploy the web application, it simply makes it available to use as the basis for templates and overlays. - -==== Installing a Template Overlay - -A template overlay is a WAR structured directory/archive that contains the files that have been added or modified to customize/configure the web application for all instances planned for deployment. - -The demo template can be installed from the downloaded files with the command: - -[source, screen, subs="{sub-order}"] ----- -$ mv $OVERLAYS/jtracTemplate\=jtrac-2.1.0 $JETTY_HOME/overlays/templates/ ----- - -In the Jetty server window, a message similar to this will be displayed confirmed that the template is loaded: - -[source, plain, subs="{sub-order}"] ----- -2011-05-06 11:00:08.716:INFO:OverlayedAppProvider:loaded jtracTemplate=jtrac-2.1.0@1304643608715 ----- - -The contents of the loaded template are as follows: - -[source, plain, subs="{sub-order}"] ----- -templates/jtracTemplate=jtrac-2.1.0 -|__ WEB-INF - |__ classes - | |__ jtrac-init.properties - |__ log4j.properties - |__ overlay.xml - |__ template.xml - |__ web-overlay.xml ----- - -name of the template directory (or WAR):: - Uses the ‘=’ character in jtracTemplate=jtrac-2.1.0 to separate the name of the template from the name of the WAR file in webapps that it applies to. - If = is a problem, use -- instead. -WEB-INF/classes/jtrac-init.properties:: - Replaces the JTrac properties file with an empty file, as the properties it contains are configured elsewhere. -WEB-INF/log4j.properties:: - Configures the logging for all instances of the template. -WEB-INF/overlay.xml:: - A Jetty XML formatted IoC file that injects/configures the `ContextHandler` for each instance. \ - In this case it sets up the context path: - -[source, xml, subs="{sub-order}"] ----- - - - - / - ----- - -WEB-INF/template.xml:: - A Jetty XML formatted IoC file that injects/configures the resource cache and classloader that all instances of the template share. - It runs only once per load of the template: - -[source, xml, subs="{sub-order}"] ----- - - - - - true - 10000000 - 1000 - 64000000 - - ----- - -WEB-INF/web-overlay.xml:: - A `web.xml` fragment that Jetty overlays on top of the `web.xml` from the base WAR file; it can set init parameters and add/modify filters and - servlets. - In this example it sets the application home and springs `webAppRootKey`: - -[source, xml, subs="{sub-order}"] ----- - - - - jtrac.home - /tmp/jtrac-${overlay.instance.classifier} - - - webAppRootKey - jtrac-${overlay.instance.classifier} - - - ----- - -Notice the parameterization of values such as `${overlays.instance.classifier}`, as this allows the configuration to be in the template, and not customized for each instance. - -Without the Overlay Deployer, all of the above would still need to have configure , but rather than being in a single clear structure the configuration elements would have been either in the server's common directory, the server's `webdefaults.xml` (aka `server.xml`), or baked into the WAR file of each application instance using copied/modified files from the original. -The Overlay Deployer allows all these changes to be made in one structure; moreover it allows for the parameterization of some of the configuration, which facilitates easy multi-tenant deployment. - -==== Installing an Instance Overlay - -Now that the template is installed, one or more instance overlays can be implemented to deploy the actual web applications: - -[source, screen, subs="{sub-order}"] ----- -$ mv /tmp/overlays/instances/jtracTemplate\=blue $JETTY_HOME/overlays/instances/ -$ mv /tmp/overlays/instances/jtracTemplate\=red $JETTY_HOME/overlays/instances/ -$ mv /tmp/overlays/instances/jtracTemplate\=blue $JETTY_HOME/overlays/instances/ ----- - -As each instance moves into place, the Jetty server window reacts and deploys the instance. -Within each instance, there is the structure: - -[source, plain, subs="{sub-order}"] ----- -instances/jtracTemplate=red/ -|__ WEB-INF -| |__ overlay.xml -|__ favicon.ico -|__ resources - |__ jtrac.css ----- - -WEB-INF/overlay.xml:: - A Jetty XML format IoC file that injects/configures the context for the instance. - In this case it sets up a virtual host for the instance: - -[source, xml, subs="{sub-order}"] ----- - - - - - - 127.0.0.2 - red.myVirtualDomain.com - - - ----- - -favicon.ico:: - Replaces the icon in the base WAR with one that has a theme for the instance; in this case red, blue, or green. -resources/jtrac.css:: - Replaces the style sheet from the base WAR with one that has a theme for the instance. - -Deployed instances can be vied by pointing a browser at http://127.0.0.1:8080, http://127.0.0.2:8080 and http://127.0.0.3:8080. -The default username/password for JTrac is admin/admin. - -[[overlay-tips]] -==== Things to Know and Notice - -* Each instance has themes with images and style sheets from the instance overlay. -* Each instance is running with its own application directory (that is, /tmp/jtrac-red), set in templates web-overlay.xml. -* A virtual host set in the instance overlay.xml distinguishes the instances. -* All instances share static content from the base WAR and template. -Specifically there is a shared `ResourceCache` so only a single instance of each static content is loaded into memory. -* All instances share the classloader at the base WAR and template level, so that only a single instance of common classes is loaded into memory. -Classes with non shared statics can be configured to load in the instances classloader. -* Jetty hot deploys all overlays and tracks dependencies. -** If an XML changes in an instance, Jetty redeploys it. -** If an XML changes in a template, then Jetty redeploys all instances using it. -** If a WAR file changes, then Jetty redeploys all templates and all instances dependent on it. -* New versions can be easily deployed. -For example, when JTrac-2.2.0.war becomes available, it can be placed into `overlays/webapps` and then rename `jtracTemplate\=jtrac-2.1.0` to `jtracTemplate\=jtrac-2.2.0`. -* There is a fuller version of this demo in overlays-demo-jndi.tar.gz, that uses JNDI (needs `options=jndi`, annotations and `jetty-plus.xml` in `start.ini`) and shows how additional JARs can be added in the overlays. From a70070816578635e2abebdf03423e8a3299651cd Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 11 Aug 2020 08:30:34 -0500 Subject: [PATCH 3/3] Removing dead maven modules Signed-off-by: Joakim Erdfelt --- pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pom.xml b/pom.xml index 354522261e3..79f6c522a8e 100644 --- a/pom.xml +++ b/pom.xml @@ -136,9 +136,6 @@ jetty-home jetty-bom jetty-documentation - - -