From f5d3fec4f817cb0f669294e10912c59a0f14c9ad Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 15 Oct 2012 22:05:33 +1100 Subject: [PATCH] jetty-9 removed context deployer and merged context and webapps directory --- .../eclipse/jetty/embedded/LikeJettyXml.java | 7 - .../eclipse/jetty/embedded/SpdyServer.java | 7 - .../src/main/config/etc/jetty-contexts.xml | 23 - .../src/main/config/etc/jetty-deploy.xml | 77 +- .../src/main/config/etc/jetty-webapps.xml | 26 - .../deploy/providers/ContextProvider.java | 94 - .../deploy/providers/ScanningAppProvider.java | 89 +- .../deploy/providers/WebAppProvider.java | 147 +- .../GlobalWebappConfigBindingTest.java | 2 +- ...ScanningAppProviderRuntimeUpdatesTest.java | 10 +- .../ScanningAppProviderStartupTest.java | 2 +- .../deploy/providers/WebAppProviderTest.java | 1 - .../jetty/deploy/test/XmlConfiguredJetty.java | 30 +- .../resources/binding-test-contexts-1.xml | 11 +- .../src/test/resources/jetty-deploy-wars.xml | 2 +- .../resources/jetty-deploymgr-contexts.xml | 13 +- .../test/resources/jetty-logging.properties | 2 +- .../resources/{contexts => webapps}/foo.xml | 0 .../src/main/resources/contexts/README.TXT | 15 - .../resources/jetty-logging.properties | 9 + .../src/main/resources/start.ini | 2 - .../src/main/resources/webapps/README.TXT | 13 + .../{contexts => webapps}/javadoc.xml | 0 .../jetty/osgi/boot/OSGiAppProvider.java | 3 +- jetty-osgi/test-jetty-osgi/pom.xml | 29 + jetty-overlay-deployer/logs/jtrac.log | 24 - jetty-overlay-deployer/pom.xml | 61 - .../src/main/assembly/config.xml | 18 - .../src/main/config/etc/jetty-overlay.xml | 24 - .../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 | 1522 ----------------- .../jetty/overlays/TemplateContext.java | 290 ---- .../eclipse/jetty/overlays/OverlayServer.java | 100 -- .../overlays/OverlayedAppProviderTest.java | 589 ------- .../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 | 16 - .../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 | 16 - .../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 | 16 - .../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 | 12 - .../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 | 8 - .../WEB-INF/lib-overlay/templateResources.jar | Bin 1409 -> 0 bytes .../templates/myfoo=foo/WEB-INF/template.xml | 18 - .../myfoo=foo/WEB-INF/web-default.xml | 482 ------ .../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 | 18 - .../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 - .../java/org/eclipse/jetty/util/Scanner.java | 41 +- .../jetty/util/log/AbstractLogger.java | 1 + .../org/eclipse/jetty/util/log/StdErrLog.java | 31 +- .../eclipse/jetty/util/log/StdErrLogTest.java | 10 +- .../test/resources/jetty-logging.properties | 6 +- .../test.d/override-web.xml | 0 .../config/{contexts => webapps}/test.xml | 2 +- 127 files changed, 314 insertions(+), 4050 deletions(-) delete mode 100644 jetty-deploy/src/main/config/etc/jetty-contexts.xml delete mode 100644 jetty-deploy/src/main/config/etc/jetty-webapps.xml delete mode 100644 jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java rename jetty-deploy/src/test/resources/{contexts => webapps}/foo.xml (100%) delete mode 100644 jetty-distribution/src/main/resources/contexts/README.TXT create mode 100644 jetty-distribution/src/main/resources/resources/jetty-logging.properties create mode 100644 jetty-distribution/src/main/resources/webapps/README.TXT rename jetty-distribution/src/main/resources/{contexts => webapps}/javadoc.xml (100%) delete mode 100644 jetty-overlay-deployer/logs/jtrac.log 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/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/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 rename test-jetty-webapp/src/main/config/{contexts => webapps}/test.d/override-web.xml (100%) rename test-jetty-webapp/src/main/config/{contexts => webapps}/test.xml (98%) diff --git a/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java b/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java index 34b9e8f2de9..c500162b082 100644 --- a/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java +++ b/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java @@ -21,7 +21,6 @@ package org.eclipse.jetty.embedded; import java.lang.management.ManagementFactory; import org.eclipse.jetty.deploy.DeploymentManager; -import org.eclipse.jetty.deploy.providers.ContextProvider; import org.eclipse.jetty.deploy.providers.WebAppProvider; import org.eclipse.jetty.jmx.MBeanContainer; import org.eclipse.jetty.security.HashLoginService; @@ -102,18 +101,12 @@ public class LikeJettyXml deployer.setContexts(contexts); server.addBean(deployer); - ContextProvider context_provider = new ContextProvider(); - context_provider.setMonitoredDirName(jetty_home + "/contexts"); - context_provider.setScanInterval(2); - deployer.addAppProvider(context_provider); - WebAppProvider webapp_provider = new WebAppProvider(); webapp_provider.setMonitoredDirName(jetty_home + "/webapps"); webapp_provider.setParentLoaderPriority(false); webapp_provider.setExtractWars(true); webapp_provider.setScanInterval(2); webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml"); - webapp_provider.setContextXmlDir(jetty_home + "/contexts"); deployer.addAppProvider(webapp_provider); HashLoginService login = new HashLoginService(); diff --git a/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/SpdyServer.java b/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/SpdyServer.java index ab6c5683d06..a95c9a970de 100644 --- a/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/SpdyServer.java +++ b/example-jetty-embedded/src/main/java/org/eclipse/jetty/embedded/SpdyServer.java @@ -21,7 +21,6 @@ package org.eclipse.jetty.embedded; import java.lang.management.ManagementFactory; import org.eclipse.jetty.deploy.DeploymentManager; -import org.eclipse.jetty.deploy.providers.ContextProvider; import org.eclipse.jetty.deploy.providers.WebAppProvider; import org.eclipse.jetty.io.ArrayByteBufferPool; import org.eclipse.jetty.io.ByteBufferPool; @@ -155,18 +154,12 @@ public class SpdyServer deployer.setContexts(contexts); server.addBean(deployer); - ContextProvider context_provider = new ContextProvider(); - context_provider.setMonitoredDirName(jetty_home + "/contexts"); - context_provider.setScanInterval(2); - deployer.addAppProvider(context_provider); - WebAppProvider webapp_provider = new WebAppProvider(); webapp_provider.setMonitoredDirName(jetty_home + "/webapps"); webapp_provider.setParentLoaderPriority(false); webapp_provider.setExtractWars(true); webapp_provider.setScanInterval(2); webapp_provider.setDefaultsDescriptor(jetty_home + "/etc/webdefault.xml"); - webapp_provider.setContextXmlDir(jetty_home + "/contexts"); deployer.addAppProvider(webapp_provider); HashLoginService login = new HashLoginService(); diff --git a/jetty-deploy/src/main/config/etc/jetty-contexts.xml b/jetty-deploy/src/main/config/etc/jetty-contexts.xml deleted file mode 100644 index caa7270dc39..00000000000 --- a/jetty-deploy/src/main/config/etc/jetty-contexts.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - /contexts - 1 - - - - - diff --git a/jetty-deploy/src/main/config/etc/jetty-deploy.xml b/jetty-deploy/src/main/config/etc/jetty-deploy.xml index 1b3fd66dcd2..5316b500ddf 100644 --- a/jetty-deploy/src/main/config/etc/jetty-deploy.xml +++ b/jetty-deploy/src/main/config/etc/jetty-deploy.xml @@ -6,43 +6,48 @@ - - - - - + - - - - - - - - org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern - .*/servlet-api-[^/]*\.jar$ - - - - - - - - - + + + + + + + + org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern + .*/servlet-api-[^/]*\.jar$ + + + + + + + + + /webapps + /etc/webdefault.xml + 1 + true + + + + + + + diff --git a/jetty-deploy/src/main/config/etc/jetty-webapps.xml b/jetty-deploy/src/main/config/etc/jetty-webapps.xml deleted file mode 100644 index 1071ae52d4e..00000000000 --- a/jetty-deploy/src/main/config/etc/jetty-webapps.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - /webapps - /etc/webdefault.xml - 1 - /contexts - true - - - - - diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java deleted file mode 100644 index 2c6b36d0c5b..00000000000 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java +++ /dev/null @@ -1,94 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// 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.deploy.providers; - -import java.io.File; -import java.io.FilenameFilter; - -import org.eclipse.jetty.deploy.App; -import org.eclipse.jetty.deploy.ConfigurationManager; -import org.eclipse.jetty.deploy.util.FileID; -import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.util.annotation.ManagedObject; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.xml.XmlConfiguration; - -/** Context directory App Provider. - *

This specialization of {@link ScanningAppProvider} is the - * replacement for the old (and deprecated) org.eclipse.jetty.deploy.ContextDeployer and it will scan a directory - * only for context.xml files. - */ -@ManagedObject("Provider for starting webapps originating from context.xml files") -public class ContextProvider extends ScanningAppProvider -{ - private ConfigurationManager _configurationManager; - - public ContextProvider() - { - super( new FilenameFilter() - { - public boolean accept(File dir, String name) - { - if (!dir.exists()) - return false; - String lowername = name.toLowerCase(); - if (lowername.startsWith(".")) - return false; - - return (lowername.endsWith(".xml") && !new File(dir,name).isDirectory()); - } - }); - } - - - /* ------------------------------------------------------------ */ - public ConfigurationManager getConfigurationManager() - { - return _configurationManager; - } - - /* ------------------------------------------------------------ */ - /** Set the configurationManager. - * @param configurationManager the configurationManager to set - */ - public void setConfigurationManager(ConfigurationManager configurationManager) - { - _configurationManager = configurationManager; - } - - /* ------------------------------------------------------------ */ - public ContextHandler createContextHandler(App app) throws Exception - { - Resource resource = Resource.newResource(app.getOriginId()); - File file = resource.getFile(); - - if (resource.exists() && FileID.isXmlFile(file)) - { - XmlConfiguration xmlc = new XmlConfiguration(resource.getURL()); - - xmlc.getIdMap().put("Server",getDeploymentManager().getServer()); - if (getConfigurationManager() != null) - xmlc.getProperties().putAll(getConfigurationManager().getProperties()); - return (ContextHandler)xmlc.configure(); - } - - throw new IllegalStateException("App resouce does not exist "+resource); - } - -} diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java index 5ebecbfb4e6..8d8ef3e5285 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java @@ -20,9 +20,13 @@ package org.eclipse.jetty.deploy.providers; import java.io.File; import java.io.FilenameFilter; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; @@ -45,8 +49,8 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A private Map _appMap = new HashMap(); private DeploymentManager _deploymentManager; - protected final FilenameFilter _filenameFilter; - private Resource _monitoredDir; + protected FilenameFilter _filenameFilter; + private final List _monitored= new CopyOnWriteArrayList<>(); private boolean _recursive = false; private int _scanInterval = 10; private Scanner _scanner; @@ -73,12 +77,25 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A } }; + /* ------------------------------------------------------------ */ + protected ScanningAppProvider() + { + } + /* ------------------------------------------------------------ */ protected ScanningAppProvider(FilenameFilter filter) { _filenameFilter = filter; } + /* ------------------------------------------------------------ */ + protected void setFilenameFilter(FilenameFilter filter) + { + if (isRunning()) + throw new IllegalStateException(); + _filenameFilter = filter; + } + /* ------------------------------------------------------------ */ /** * @return The index of currently deployed applications. @@ -110,15 +127,16 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A { if (LOG.isDebugEnabled()) LOG.debug(this.getClass().getSimpleName() + ".doStart()"); - if (_monitoredDir == null) - { + if (_monitored.size()==0) throw new IllegalStateException("No configuration dir specified"); - } - File scandir = _monitoredDir.getFile(); - LOG.info("Deployment monitor " + scandir + " at interval " + _scanInterval); + LOG.info("Deployment monitor " + _monitored + " at interval " + _scanInterval); + List files = new ArrayList<>(); + for (Resource resource:_monitored) + files.add(resource.getFile()); + _scanner = new Scanner(); - _scanner.setScanDirs(Collections.singletonList(scandir)); + _scanner.setScanDirs(files); _scanner.setScanInterval(_scanInterval); _scanner.setRecursive(_recursive); _scanner.setFilenameFilter(_filenameFilter); @@ -138,6 +156,12 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A _scanner = null; } } + + /* ------------------------------------------------------------ */ + protected boolean exists(String path) + { + return _scanner.exists(path); + } /* ------------------------------------------------------------ */ protected void fileAdded(String filename) throws Exception @@ -195,13 +219,18 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A /* ------------------------------------------------------------ */ public Resource getMonitoredDirResource() { - return _monitoredDir; + if (_monitored.size()==0) + return null; + if (_monitored.size()>1) + throw new IllegalStateException(); + return _monitored.get(0); } /* ------------------------------------------------------------ */ public String getMonitoredDirName() { - return _monitoredDir.toString(); + Resource resource=getMonitoredDirResource(); + return resource==null?null:resource.toString(); } /* ------------------------------------------------------------ */ @@ -219,15 +248,29 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A } /* ------------------------------------------------------------ */ + @Override public void setDeploymentManager(DeploymentManager deploymentManager) { _deploymentManager = deploymentManager; } /* ------------------------------------------------------------ */ - public void setMonitoredDirResource(Resource contextsDir) + public void setMonitoredResources(List resources) { - _monitoredDir = contextsDir; + _monitored.clear(); + _monitored.addAll(resources); + } + + /* ------------------------------------------------------------ */ + public List getMonitoredResources() + { + return Collections.unmodifiableList(_monitored); + } + + /* ------------------------------------------------------------ */ + public void setMonitoredDirResource(Resource resource) + { + setMonitoredResources(Collections.singletonList(resource)); } /* ------------------------------------------------------------ */ @@ -235,15 +278,6 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A { _scanner.addListener(listener); } - - /* ------------------------------------------------------------ */ - /** - * @deprecated Use {@link #setMonitoredDirName(String)} - */ - public void setMonitoredDir(String dir) - { - setMonitoredDirName(dir); - } /* ------------------------------------------------------------ */ /** @@ -251,17 +285,26 @@ public abstract class ScanningAppProvider extends AbstractLifeCycle implements A * Directory to scan for context descriptors or war files */ public void setMonitoredDirName(String dir) + { + setMonitoredDirectories(Collections.singletonList(dir)); + } + + /* ------------------------------------------------------------ */ + public void setMonitoredDirectories(Collection directories) { try { - setMonitoredDirResource(Resource.newResource(dir)); + List resources = new ArrayList<>(); + for (String dir:directories) + resources.add(Resource.newResource(dir)); + setMonitoredResources(resources); } catch (Exception e) { throw new IllegalArgumentException(e); } } - + /* ------------------------------------------------------------ */ protected void setRecursive(boolean recursive) { diff --git a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java index 00550aec99b..61aa16509d1 100644 --- a/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java +++ b/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.net.MalformedURLException; import org.eclipse.jetty.deploy.App; +import org.eclipse.jetty.deploy.ConfigurationManager; import org.eclipse.jetty.deploy.util.FileID; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.util.URIUtil; @@ -31,31 +32,45 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.webapp.WebAppContext; +import org.eclipse.jetty.xml.XmlConfiguration; /* ------------------------------------------------------------ */ -/** Context directory App Provider. - *

This specialization of {@link ScanningAppProvider} is the - * replacement for old (and deprecated) org.eclipse.jetty.deploy.WebAppDeployer and it will scan a directory - * only for war files or directories files.

+/** The webapps directory scanning provider. *

- * Webapps with names root or starting with root- are deployed at /. - * If the name is in the format root-hostname, then the webapp is deployed - * at / in the virtual host hostname. + * This provider scans one or more directories (typically "webapps") for contexts to + * deploy, which may be:

+ *

+ * To avoid double deployments and allow flexibility of the content of the scanned directories, the provider + * implements some heuristics to ignore some files found in the scans:

+ * */ @ManagedObject("Provider for start-up deployement of webapps based on presence in directory") public class WebAppProvider extends ScanningAppProvider { private boolean _extractWars = false; private boolean _parentLoaderPriority = false; + private ConfigurationManager _configurationManager; private String _defaultsDescriptor; - private Filter _filter; private File _tempDirectory; private String[] _configurationClasses; - public static class Filter implements FilenameFilter + public class Filter implements FilenameFilter { - private File _contexts; - + @Override public boolean accept(File dir, String name) { if (!dir.exists()) @@ -65,53 +80,59 @@ public class WebAppProvider extends ScanningAppProvider String lowername = name.toLowerCase(); File file = new File(dir,name); - // is it not a directory and not a war ? - if (!file.isDirectory() && !lowername.endsWith(".war")) - { - return false; - } - //ignore hidden files + // ignore hidden files if (lowername.startsWith(".")) return false; - + + // Ignore some directories if (file.isDirectory()) { - // is it a directory for an existing war file? - if (new File(dir,name+".war").exists() || - new File(dir,name+".WAR").exists()) - + // is it a nominated config directory + if (lowername.endsWith(".d")) + return false; + + // is it an unpacked directory for an existing war file? + if (exists(name+".war")||exists(name+".WAR")) return false; + // is it a directory for an existing xml file? + if (exists(name+".xml")||exists(name+".XML")) + return false; + //is it a sccs dir? if ("cvs".equals(lowername) || "cvsroot".equals(lowername)) return false; + + // OK to deploy it then + return true; } - // is there a contexts config file - if (_contexts!=null) + // else is it a war file + if (lowername.endsWith(".war")) { - String context=name; - if (!file.isDirectory()) - { - context=context.substring(0,context.length()-4); - } - if (new File(_contexts,context+".xml").exists() || - new File(_contexts,context+".XML").exists() ) - { + String base=name.substring(0,name.length()-4); + // ignore if it is a war for an existing xml file? + if (exists(base+".xml")||exists(base+".XML")) return false; - } + + // OK to deploy it then + return true; } + + // else is it a context XML file + if (lowername.endsWith(".xml")) + return true; - return true; + return false; } } /* ------------------------------------------------------------ */ public WebAppProvider() { - super(new Filter()); - _filter=(Filter)_filenameFilter; + super(); + setFilenameFilter(new Filter()); setScanInterval(0); } @@ -173,39 +194,19 @@ public class WebAppProvider extends ScanningAppProvider } /* ------------------------------------------------------------ */ - @ManagedAttribute("directory to scan for context.xml files") - public String getContextXmlDir() + public ConfigurationManager getConfigurationManager() { - return _filter._contexts==null?null:_filter._contexts.toString(); - } - - /* ------------------------------------------------------------ */ - /** - * Set the directory in which to look for context XML files. - *

- * If a webapp call "foo/" or "foo.war" is discovered in the monitored - * directory, then the ContextXmlDir is examined to see if a foo.xml - * file exists. If it does, then this deployer will not deploy the webapp - * and the ContextProvider should be used to act on the foo.xml file. - * @see ContextProvider - * @param contextsDir - */ - public void setContextXmlDir(String contextsDir) - { - try - { - _filter._contexts=Resource.newResource(contextsDir).getFile(); - } - catch (MalformedURLException e) - { - throw new RuntimeException(e); - } - catch (IOException e) - { - throw new RuntimeException(e); - } + return _configurationManager; } + /* ------------------------------------------------------------ */ + /** Set the configurationManager. + * @param configurationManager the configurationManager to set + */ + public void setConfigurationManager(ConfigurationManager configurationManager) + { + _configurationManager = configurationManager; + } /* ------------------------------------------------------------ */ /** @@ -250,6 +251,7 @@ public class WebAppProvider extends ScanningAppProvider } /* ------------------------------------------------------------ */ + @Override public ContextHandler createContextHandler(final App app) throws Exception { Resource resource = Resource.newResource(app.getOriginId()); @@ -258,8 +260,17 @@ public class WebAppProvider extends ScanningAppProvider throw new IllegalStateException("App resouce does not exist "+resource); String context = file.getName(); - - if (file.isDirectory()) + + if (resource.exists() && FileID.isXmlFile(file)) + { + XmlConfiguration xmlc = new XmlConfiguration(resource.getURL()); + + xmlc.getIdMap().put("Server",getDeploymentManager().getServer()); + if (getConfigurationManager() != null) + xmlc.getProperties().putAll(getConfigurationManager().getProperties()); + return (ContextHandler)xmlc.configure(); + } + else if (file.isDirectory()) { // must be a directory } diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBindingTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBindingTest.java index 79e837193a3..d2031ffe219 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBindingTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBindingTest.java @@ -55,7 +55,7 @@ public class GlobalWebappConfigBindingTest jetty.addConfiguration("jetty.xml"); // Setup initial context - jetty.copyContext("foo.xml","foo.xml"); + jetty.copyWebapp("foo.xml","foo.xml"); jetty.copyWebapp("foo-webapp-1.war","foo.war"); } diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderRuntimeUpdatesTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderRuntimeUpdatesTest.java index 17ffd94b9f4..6008c5aa443 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderRuntimeUpdatesTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderRuntimeUpdatesTest.java @@ -112,7 +112,7 @@ public class ScanningAppProviderRuntimeUpdatesTest public void testAfterStartupContext() throws IOException { jetty.copyWebapp("foo-webapp-1.war","foo.war"); - jetty.copyContext("foo.xml","foo.xml"); + jetty.copyWebapp("foo.xml","foo.xml"); waitForDirectoryScan(); waitForDirectoryScan(); @@ -127,14 +127,14 @@ public class ScanningAppProviderRuntimeUpdatesTest public void testAfterStartupThenRemoveContext() throws IOException { jetty.copyWebapp("foo-webapp-1.war","foo.war"); - jetty.copyContext("foo.xml","foo.xml"); + jetty.copyWebapp("foo.xml","foo.xml"); waitForDirectoryScan(); waitForDirectoryScan(); jetty.assertWebAppContextsExists("/foo"); - jetty.removeContext("foo.xml"); + jetty.removeWebapp("foo.xml"); waitForDirectoryScan(); waitForDirectoryScan(); @@ -155,7 +155,7 @@ public class ScanningAppProviderRuntimeUpdatesTest jetty.copyWebapp("foo-webapp-1.war","foo.war"); - jetty.copyContext("foo.xml","foo.xml"); + jetty.copyWebapp("foo.xml","foo.xml"); waitForDirectoryScan(); waitForDirectoryScan(); @@ -167,7 +167,7 @@ public class ScanningAppProviderRuntimeUpdatesTest waitForDirectoryScan(); //System.err.println("Updating war files"); - jetty.copyContext("foo.xml","foo.xml"); // essentially "touch" the context xml + jetty.copyWebapp("foo.xml","foo.xml"); // essentially "touch" the context xml jetty.copyWebapp("foo-webapp-2.war","foo.war"); // This should result in the existing foo.war being replaced with the new foo.war diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderStartupTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderStartupTest.java index a4687713587..c1173322481 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderStartupTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderStartupTest.java @@ -42,7 +42,7 @@ public class ScanningAppProviderStartupTest jetty.addConfiguration("jetty-deploymgr-contexts.xml"); // Setup initial context - jetty.copyContext("foo.xml","foo.xml"); + jetty.copyWebapp("foo.xml","foo.xml"); jetty.copyWebapp("foo-webapp-1.war","foo.war"); // Should not throw an Exception diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java index 65fbf731873..8e31c177865 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java @@ -43,7 +43,6 @@ public class WebAppProviderTest jetty.addConfiguration("jetty-deploy-wars.xml"); // Setup initial context - jetty.copyContext("foo.xml","foo.xml"); jetty.copyWebapp("foo-webapp-1.war","foo.war"); // Should not throw an Exception diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java index 2afd52841f9..5bb3c2a46d6 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java @@ -87,13 +87,6 @@ public class XmlConfiguredJetty IO.copyFile(MavenTestingUtils.getTestResourceFile("etc/realm.properties"),new File(etcDir,"realm.properties")); IO.copyFile(MavenTestingUtils.getTestResourceFile("etc/webdefault.xml"),new File(etcDir,"webdefault.xml")); - File contextsDir = new File(_jettyHome,"contexts"); - if (contextsDir.exists()) - { - deleteContents(contextsDir); - } - contextsDir.mkdirs(); - File webappsDir = new File(_jettyHome,"webapps"); if (webappsDir.exists()) { @@ -182,7 +175,7 @@ public class XmlConfiguredJetty public void assertResponseContains(String path, String needle) throws IOException { - System.err.println("Issuing request to " + path); + // System.err.println("Issuing request to " + path); String content = getResponse(path); Assert.assertTrue("Content should contain <" + needle + ">, instead got <" + content + ">",content.contains(needle)); } @@ -220,18 +213,6 @@ public class XmlConfiguredJetty } } - public void copyContext(String srcName, String destName) throws IOException - { - System.err.printf("Copying Context: %s -> %s%n",srcName,destName); - File srcDir = MavenTestingUtils.getTestResourceDir("contexts"); - File destDir = new File(_jettyHome,"contexts"); - - File srcFile = new File(srcDir,srcName); - File destFile = new File(destDir,destName); - - copyFile("Context",srcFile,destFile); - } - private void copyFile(String type, File srcFile, File destFile) throws IOException { PathAssert.assertFileExists(type + " File",srcFile); @@ -255,7 +236,7 @@ public class XmlConfiguredJetty private void deleteContents(File dir) { - System.err.printf("Delete (dir) %s/%n",dir); + // System.err.printf("Delete (dir) %s/%n",dir); if (!dir.exists()) { return; @@ -319,7 +300,6 @@ public class XmlConfiguredJetty { List contexts = new ArrayList<>(); HandlerCollection handlers = (HandlerCollection)_server.getHandler(); - System.err.println(_server.dump()); Handler children[] = handlers.getChildHandlers(); for (Handler handler : children) @@ -379,13 +359,13 @@ public class XmlConfiguredJetty this._server.setStopTimeout(10); } - public void removeContext(String name) + public void removeWebapp(String name) { - File destDir = new File(_jettyHome,"contexts"); + File destDir = new File(_jettyHome,"webapps"); File contextFile = new File(destDir,name); if (contextFile.exists()) { - Assert.assertTrue("Delete of Context file: " + contextFile.getAbsolutePath(),contextFile.delete()); + Assert.assertTrue("Delete of Webapp file: " + contextFile.getAbsolutePath(),contextFile.delete()); } } diff --git a/jetty-deploy/src/test/resources/binding-test-contexts-1.xml b/jetty-deploy/src/test/resources/binding-test-contexts-1.xml index 38979a28ab5..1614056f430 100644 --- a/jetty-deploy/src/test/resources/binding-test-contexts-1.xml +++ b/jetty-deploy/src/test/resources/binding-test-contexts-1.xml @@ -46,8 +46,8 @@ - - /contexts + + /webapps 1 @@ -58,13 +58,6 @@ - - - /webapps - 1 - /contexts - - diff --git a/jetty-deploy/src/test/resources/jetty-deploy-wars.xml b/jetty-deploy/src/test/resources/jetty-deploy-wars.xml index 859887b555a..8ef3a1792f1 100644 --- a/jetty-deploy/src/test/resources/jetty-deploy-wars.xml +++ b/jetty-deploy/src/test/resources/jetty-deploy-wars.xml @@ -17,7 +17,7 @@ /webapps 1 - /workish + /workish diff --git a/jetty-deploy/src/test/resources/jetty-deploymgr-contexts.xml b/jetty-deploy/src/test/resources/jetty-deploymgr-contexts.xml index 9442aab418c..acf69585ff5 100644 --- a/jetty-deploy/src/test/resources/jetty-deploymgr-contexts.xml +++ b/jetty-deploy/src/test/resources/jetty-deploymgr-contexts.xml @@ -13,9 +13,9 @@ - - /contexts - 1 + + /webapps + 1 @@ -25,13 +25,6 @@ - - - /webapps - 1 - /contexts - - diff --git a/jetty-deploy/src/test/resources/jetty-logging.properties b/jetty-deploy/src/test/resources/jetty-logging.properties index 9bad879708f..9d7bbe4489a 100644 --- a/jetty-deploy/src/test/resources/jetty-logging.properties +++ b/jetty-deploy/src/test/resources/jetty-logging.properties @@ -1,3 +1,3 @@ org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog org.eclipse.jetty.deploy.LEVEL=WARN - +org.eclipse.jetty.util.Scanner=WARN diff --git a/jetty-deploy/src/test/resources/contexts/foo.xml b/jetty-deploy/src/test/resources/webapps/foo.xml similarity index 100% rename from jetty-deploy/src/test/resources/contexts/foo.xml rename to jetty-deploy/src/test/resources/webapps/foo.xml diff --git a/jetty-distribution/src/main/resources/contexts/README.TXT b/jetty-distribution/src/main/resources/contexts/README.TXT deleted file mode 100644 index 36f67d70fa6..00000000000 --- a/jetty-distribution/src/main/resources/contexts/README.TXT +++ /dev/null @@ -1,15 +0,0 @@ - -This directory is scanned by the ContextDeployer instance -configured by the standard $JETTY_HOME/etc/jetty.xml configuration. - -It should contain XmlConfiguration files that describe individual -contexts to be deployed to the server. This directory is scanned -for additions, removals and updates for hot deployment. - -Frequenty the context configuration files here will reference -war files or directories from $JETTY_HOME/webapps. Care must be -taken to avoid a WebAppDeployer deploying duplicates of such -webapplications. - -The directory ../contexts-available contains more example contexts -that may be deployed by being copied here. diff --git a/jetty-distribution/src/main/resources/resources/jetty-logging.properties b/jetty-distribution/src/main/resources/resources/jetty-logging.properties new file mode 100644 index 00000000000..f912160249f --- /dev/null +++ b/jetty-distribution/src/main/resources/resources/jetty-logging.properties @@ -0,0 +1,9 @@ +org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog +org.eclipse.jetty.LEVEL=INFO +org.eclipse.jetty.STACKS=true +org.eclipse.jetty.SOURCE=false +#org.eclipse.jetty.STACKS=false +#org.eclipse.jetty.spdy.LEVEL=DEBUG +#org.eclipse.jetty.server.LEVEL=DEBUG +#org.eclipse.jetty.io.ssl.LEVEL=DEBUG +#org.eclipse.jetty.spdy.server.LEVEL=DEBUG diff --git a/jetty-distribution/src/main/resources/start.ini b/jetty-distribution/src/main/resources/start.ini index 26630f98bd7..9fcc0d2b0b5 100644 --- a/jetty-distribution/src/main/resources/start.ini +++ b/jetty-distribution/src/main/resources/start.ini @@ -126,8 +126,6 @@ etc/jetty-https.xml # Webapplication Deployer #----------------------------------------------------------- etc/jetty-deploy.xml -etc/jetty-webapps.xml -etc/jetty-contexts.xml #=========================================================== #=========================================================== diff --git a/jetty-distribution/src/main/resources/webapps/README.TXT b/jetty-distribution/src/main/resources/webapps/README.TXT new file mode 100644 index 00000000000..610ea9cf582 --- /dev/null +++ b/jetty-distribution/src/main/resources/webapps/README.TXT @@ -0,0 +1,13 @@ + +This directory is scanned by the WebAppDeployer provider for +web applications to deploy. It may contain: + + + standard WAR files + + directories that are deployed as static content, except for + directories ending in ".d", which are ignored. + + Context XML files that contain XmlConfiguration which + describe individual contexts to be deployed to the server. + +This directory is scanned for additions, removals and updates +for hot deployment. + diff --git a/jetty-distribution/src/main/resources/contexts/javadoc.xml b/jetty-distribution/src/main/resources/webapps/javadoc.xml similarity index 100% rename from jetty-distribution/src/main/resources/contexts/javadoc.xml rename to jetty-distribution/src/main/resources/webapps/javadoc.xml diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiAppProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiAppProvider.java index 4484d05675a..aa7a6b43ce3 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiAppProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiAppProvider.java @@ -29,7 +29,6 @@ import java.util.Set; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; import org.eclipse.jetty.deploy.DeploymentManager; -import org.eclipse.jetty.deploy.providers.ContextProvider; import org.eclipse.jetty.deploy.providers.ScanningAppProvider; import org.eclipse.jetty.osgi.boot.utils.internal.PackageAdminServiceTracker; import org.eclipse.jetty.server.handler.ContextHandler; @@ -92,6 +91,7 @@ public class OSGiAppProvider extends ScanningAppProvider implements AppProvider { OSGiAppProvider _enclosedInstance; + @Override public boolean accept(File dir, String name) { File file = new File(dir, name); @@ -180,6 +180,7 @@ public class OSGiAppProvider extends ScanningAppProvider implements AppProvider * * @see AppProvider */ + @Override public ContextHandler createContextHandler(App app) throws Exception { // return pre-created Context diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 0dacc7b1955..983699fd994 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -354,5 +354,34 @@ + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.servicemix.tooling + depends-maven-plugin + [1.2,) + + generate-depends-file + + + + + + + + + + + + \ No newline at end of file diff --git a/jetty-overlay-deployer/logs/jtrac.log b/jetty-overlay-deployer/logs/jtrac.log deleted file mode 100644 index 8c4c974e455..00000000000 --- a/jetty-overlay-deployer/logs/jtrac.log +++ /dev/null @@ -1,24 +0,0 @@ -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - found 'jtrac-init.properties' on classpath, processing... -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - 'jtrac.home' property initialized from 'jtrac-init.properties' as '/tmp/jtrac-red' -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - locales available configured are 'en' -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - directory already exists: '/tmp/jtrac-red' -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - directory already exists: '/tmp/jtrac-red/attachments' -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - directory already exists: '/tmp/jtrac-red/indexes' -2010-11-17 17:49:57,785 [main] INFO [info.jtrac.config.JtracConfigurer] - 'jtrac.properties' file exists: '/tmp/jtrac-red/jtrac.properties' -2010-11-17 17:49:57,786 [main] INFO [info.jtrac.config.JtracConfigurer] - found 'jtrac-version.properties' on classpath, processing... -2010-11-17 17:49:57,786 [main] INFO [info.jtrac.config.JtracConfigurer] - jtrac.version = '2.1.0' -2010-11-17 17:49:57,786 [main] INFO [info.jtrac.config.JtracConfigurer] - jtrac.timestamp = '200803022120' -2010-11-17 17:49:57,786 [main] INFO [info.jtrac.config.JtracConfigurer] - Loading properties file from file [/tmp/jtrac-red/jtrac.properties] -2010-11-17 17:49:57,804 [main] INFO [info.jtrac.config.DataSourceFactoryBean] - embedded HSQLDB mode detected, switching on spring single connection data source -2010-11-17 17:49:57,950 [main] INFO [info.jtrac.hibernate.HibernateJtracDao] - database schema exists, normal startup -2010-11-17 17:49:57,952 [main] INFO [info.jtrac.JtracImpl] - available locales configured {en=en - English} -2010-11-17 17:49:57,954 [main] WARN [info.jtrac.mail.MailSender] - 'mail.server.host' config is null, mail sender not initialized -2010-11-17 17:49:57,954 [main] WARN [info.jtrac.JtracImpl] - invalid default locale configured = 'null', using en -2010-11-17 17:49:57,954 [main] INFO [info.jtrac.JtracImpl] - default locale set to 'en' -2010-11-17 17:49:57,954 [main] WARN [info.jtrac.JtracImpl] - invalid attachment max size 'null', using 5 -2010-11-17 17:49:57,954 [main] INFO [info.jtrac.JtracImpl] - attachment max size set to 5 MB -2010-11-17 17:49:57,954 [main] WARN [info.jtrac.JtracImpl] - invalid session timeout 'null', using 30 -2010-11-17 17:49:57,954 [main] INFO [info.jtrac.JtracImpl] - session timeout set to 30 minutes -2010-11-17 17:49:57,975 [main] INFO [info.jtrac.wicket.JtracApplication] - casProxyTicketValidator not found in application context, CAS single-sign-on is not being used -2010-11-17 17:53:44,141 [Scanner-0] INFO [info.jtrac.config.DataSourceFactoryBean] - attempting to shut down embedded HSQLDB database -2010-11-17 17:53:44,253 [Scanner-0] INFO [info.jtrac.config.DataSourceFactoryBean] - embedded HSQLDB database shut down successfully diff --git a/jetty-overlay-deployer/pom.xml b/jetty-overlay-deployer/pom.xml deleted file mode 100644 index 138afc387da..00000000000 --- a/jetty-overlay-deployer/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - org.eclipse.jetty - jetty-project - 9.0.0-SNAPSHOT - - 4.0.0 - jetty-overlay-deployer - Jetty :: Overlay Deployer - Overlayed deployer - - - - - - 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} - - - org.eclipse.jetty.orbit - javax.transaction - 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 62317a312e1..00000000000 --- a/jetty-overlay-deployer/src/main/config/etc/jetty-overlay.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - /overlays - - 1 - - - - - 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 0a4cfb52cd4..00000000000 --- a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/OverlayedAppProvider.java +++ /dev/null @@ -1,1522 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// 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.MalformedURLException; -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.Map; -import java.util.Properties; -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 final static 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 final static 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 final static 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 final static 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 final static 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 final static 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 final static String OVERLAY_NODE="overlay.node"; - /** - * Property set for overlay.xml and template.xml files that gives the current instance name, {@link Instance#getName()}. - */ - public final static String OVERLAY_INSTANCE="overlay.instance"; - /** - * Property set for overlay.xml and template.xml files that gives the current instance clasifier, {@link Instance#getClassifier()}. - */ - public final static String OVERLAY_INSTANCE_CLASSIFIER="overlay.instance.classifier"; - - public final static String WEBAPPS="webapps"; - public final static String TEMPLATES="templates"; - public final static String NODES="nodes"; - public final static String INSTANCES="instances"; - - public final static String LIB="WEB-INF/lib-overlay"; - public final static String WEBAPP="."; - public final static String OVERLAY_XML="WEB-INF/overlay.xml"; - public final static String TEMPLATE_XML="WEB-INF/template.xml"; - public final static String WEB_DEFAULT_XML="WEB-INF/web-default.xml"; - public final static String WEB_FRAGMENT_XML="WEB-INF/web-overlay.xml"; - - enum Monitor { WEBAPPS,TEMPLATES,NODES,INSTANCES} ; - - public final static 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().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()); - 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().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()); - - String ext=".war"; - - // check directory vs archive - if (origin.isDirectory() || !origin.exists() && !ruri.toLowerCase().endsWith(ext)) - { - // directories have priority over archives - directory=origin; - archive=new File(directory.toString()+ext); - } - else - { - // check extension name - if (!ruri.toLowerCase().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 488d8f73d6d..00000000000 --- a/jetty-overlay-deployer/src/main/java/org/eclipse/jetty/overlays/TemplateContext.java +++ /dev/null @@ -1,290 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// 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.AggregateLifeCycle; -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; -import org.eclipse.jetty.xml.XmlConfiguration; - -/** - * 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 AggregateLifeCycle 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); - - 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; - } - - - -} \ No newline at end of file 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 407c159bdeb..00000000000 --- a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayServer.java +++ /dev/null @@ -1,100 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// 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.jndi.NamingUtil; -import org.eclipse.jetty.overlays.OverlayedAppProvider; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.Server; -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; -import org.eclipse.jetty.server.nio.SelectChannelConnector; - -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(), - org.eclipse.jetty.webapp.TagLibConfiguration.class.getCanonicalName() - } - ); - - // Setup Connectors - SelectChannelConnector connector = new SelectChannelConnector(); - 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 55f9873bcdf..00000000000 --- a/jetty-overlay-deployer/src/test/java/org/eclipse/jetty/overlays/OverlayedAppProviderTest.java +++ /dev/null @@ -1,589 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// 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.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.After; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - - -public class OverlayedAppProviderTest -{ - File _tmp; - File _scan; - File _webapps; - File _templates; - File _nodes; - File _instances; - - @Before - 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(); - } - - @After - 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()); - 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")); - - 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("loadWebapp foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadTemplate foo=foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadNode",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadInstance foo=instance",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadWebapp foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadTemplate foo=foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadNode",scanned.poll(1,TimeUnit.SECONDS)); - 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("loadInstance foo=instance",scanned.poll(1,TimeUnit.SECONDS)); - 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("removeWebapp foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals("loadWebapp foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals(war.getAbsolutePath(),scanned.poll(1,TimeUnit.SECONDS)); - - // Remove template dir - IO.delete(templateDir); - provider.scan(); - provider.scan(); - assertEquals("removeTemplate foo=foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals("loadTemplate foo=foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals(template.getAbsolutePath(),scanned.poll(1,TimeUnit.SECONDS)); - - // Remove nodeA dir - IO.delete(nodeADir); - provider.scan(); - provider.scan(); - assertEquals("removeNode",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals("loadNode",scanned.poll(1,TimeUnit.SECONDS)); - 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("removeInstance foo=instance",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals("loadInstance foo=instance",scanned.poll(1,TimeUnit.SECONDS)); - assertEquals(instance.getAbsolutePath(),scanned.poll(1,TimeUnit.SECONDS)); - - // Remove web - IO.delete(war); - provider.scan(); - provider.scan(); - assertEquals("removeWebapp foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - - // Remove template - IO.delete(template); - provider.scan(); - provider.scan(); - assertEquals("removeTemplate foo=foo-1.2.3",scanned.poll(1,TimeUnit.SECONDS)); - - // Remove nodeA dir - IO.delete(nodeA); - provider.scan(); - provider.scan(); - assertEquals("removeNode",scanned.poll(1,TimeUnit.SECONDS)); - - // Remove nodeB dir - IO.delete(nodeB); - provider.scan(); - provider.scan(); - assertTrue(scanned.isEmpty()); - - // Remove instance dir - IO.delete(instance); - provider.scan(); - provider.scan(); - assertEquals("removeInstance foo=instance",scanned.poll(1,TimeUnit.SECONDS)); - - 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); - FileOutputStream out = new FileOutputStream(file,false); - out.write("

Hello

".getBytes()); - out.close(); - } - 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 9d5eaea4563..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/myfoo=blue/WEB-INF/overlay.xml +++ /dev/null @@ -1,16 +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 8499944f90b..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 ddda5385c62..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 40927895b9c..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 47ad8a422f4..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/instances/root=root/WEB-INF/overlay.xml +++ /dev/null @@ -1,12 +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 27c9960ab99..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 d43dd8b52de..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 26eee4b4bff..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/jetty-web.xml +++ /dev/null @@ -1,8 +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 6a116536993..00000000000 --- a/jetty-overlay-deployer/src/test/resources/home/overlays/templates/myfoo=foo/WEB-INF/web-default.xml +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - Default web.xml file. - This file is applied to a Web application before it's own WEB_INF/web.xml file - - - - - - - - - - - - - - - - - - - default - org.eclipse.jetty.servlet.DefaultServlet - - aliases - false - - - acceptRanges - true - - - dirAllowed - true - - - welcomeServlets - false - - - redirectWelcome - false - - - maxCacheSize - 256000000 - - - maxCachedFileSize - 10000000 - - - maxCachedFiles - 2048 - - - gzip - true - - - useFileMappedBuffer - true - - - resourceCache - org.eclipse.jetty.server.ResourceCache - - - 0 - - - - default - / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jsp - org.apache.jasper.servlet.JspServlet - - logVerbosityLevel - DEBUG - - - fork - false - - - xpoweredBy - false - - - 0 - - - - jsp - *.jsp - *.jspf - *.jspx - *.xsp - *.JSP - *.JSPF - *.JSPX - *.XSP - - - - - - 30 - - - - - - - - - - - - - index.jsp - index.html - index.htm - - - - - - 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 - - - - - - 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 c03f435a740..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

diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java b/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java index 5e3bebc95eb..4e404889f58 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java @@ -164,29 +164,6 @@ public class Scanner extends AbstractLifeCycle schedule(); } - /** - * Set the location of the directory to scan. - * @param dir - * @deprecated use setScanDirs(List dirs) instead - */ - @Deprecated - public void setScanDir (File dir) - { - _scanDirs.clear(); - _scanDirs.add(dir); - } - - /** - * Get the location of the directory to scan - * @return the first directory (of {@link #getScanDirs()} being scanned) - * @deprecated use getScanDirs() instead - */ - @Deprecated - public File getScanDir () - { - return (_scanDirs==null?null:(File)_scanDirs.get(0)); - } - public void setScanDirs (List dirs) { _scanDirs.clear(); @@ -305,8 +282,7 @@ public class Scanner extends AbstractLifeCycle _listeners.add(listener); } - - + /* ------------------------------------------------------------ */ /** * Remove a registered listener * @param listener the Listener to be removed @@ -393,6 +369,18 @@ public class Scanner extends AbstractLifeCycle } } + /** + * @return true if the path exists in one of the scandirs + */ + public boolean exists(String path) + { + for (File dir : _scanDirs) + if (new File(dir,path).exists()) + return true; + return false; + } + + /** * Perform a pass of the scanner and report changes */ @@ -569,9 +557,12 @@ public class Scanner extends AbstractLifeCycle { if ((_filter == null) || ((_filter != null) && _filter.accept(f.getParentFile(), f.getName()))) { + LOG.debug("scan accepted {}",f); String name = f.getCanonicalPath(); scanInfoMap.put(name, new TimeNSize(f.lastModified(),f.length())); } + else + LOG.debug("scan rejected {}",f); } // If it is a directory, scan if it is a known directory or the depth is OK. diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java b/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java index 7ae0ad4905d..824458dbe29 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java @@ -25,6 +25,7 @@ package org.eclipse.jetty.util.log; */ public abstract class AbstractLogger implements Logger { + @Override public final Logger getLogger(String name) { if (isBlank(name)) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java b/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java index 28972d78056..6a25e8e75c4 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java @@ -201,7 +201,8 @@ public class StdErrLog extends AbstractLogger try { - _source = Boolean.parseBoolean(props.getProperty(_name + ".SOURCE",Boolean.toString(_source))); + String source = getLoggingProperty(props,_name,"SOURCE"); + _source = source==null?__source:Boolean.parseBoolean(source); } catch (AccessControlException ace) { @@ -211,12 +212,13 @@ public class StdErrLog extends AbstractLogger try { // allow stacktrace display to be controlled by properties as well - _hideStacks = !Boolean.parseBoolean(props.getProperty(_name + ".STACKS","true")); + String stacks = getLoggingProperty(props,_name,"STACKS"); + _hideStacks = stacks==null?false:!Boolean.parseBoolean(stacks); } catch (AccessControlException ignore) { /* ignore */ - } + } } /** @@ -260,6 +262,26 @@ public class StdErrLog extends AbstractLogger // Default Logging Level return getLevelId("log.LEVEL",props.getProperty("log.LEVEL","INFO")); } + + public static String getLoggingProperty(Properties props, String name, String property) + { + // Calculate the level this named logger should operate under. + // Checking with FQCN first, then each package segment from longest to shortest. + String nameSegment = name; + + while ((nameSegment != null) && (nameSegment.length() > 0)) + { + String s = props.getProperty(nameSegment+"."+property); + if (s!=null) + return s; + + // Trim and try again. + int idx = nameSegment.lastIndexOf('.'); + nameSegment = (idx >= 0)?nameSegment.substring(0,idx):null; + } + + return null; + } protected static int getLevelId(String levelSegment, String levelName) { @@ -675,13 +697,12 @@ public class StdErrLog extends AbstractLogger /** * Create a Child Logger of this Logger. */ + @Override protected Logger newLogger(String fullname) { StdErrLog logger = new StdErrLog(fullname); // Preserve configuration for new loggers configuration logger.setPrintLongNames(_printLongNames); - // Let Level come from configured Properties instead - sel.setLevel(_level); - logger.setSource(_source); logger._stderr = this._stderr; // Force the child to have any programmatic configuration diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrLogTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrLogTest.java index d12daa0b718..68aea654ac5 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrLogTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrLogTest.java @@ -636,9 +636,10 @@ public class StdErrLogTest @Test public void testPrintSource() throws UnsupportedEncodingException { - StdErrLog log = new StdErrLog("test",new Properties()); + Properties props=new Properties(); + props.put("test.SOURCE","true"); + StdErrLog log = new StdErrLog("test",props); log.setLevel(StdErrLog.LEVEL_DEBUG); - log.setSource(true); ByteArrayOutputStream test = new ByteArrayOutputStream(); PrintStream err = new PrintStream(test); @@ -650,6 +651,10 @@ public class StdErrLogTest // System.err.print(output); Assert.assertThat(output, containsString(".StdErrLogTest#testPrintSource(StdErrLogTest.java:")); + + + props.put("test.SOURCE","false"); + log=new StdErrLog("other",props); } @Test @@ -677,6 +682,7 @@ public class StdErrLogTest assertLevel(log,StdErrLog.LEVEL_WARN); // as configured } + private void assertLevel(StdErrLog log, int expectedLevel) { Assert.assertThat("Log[" + log.getName() + "].level",levelToString(log.getLevel()),is(levelToString(expectedLevel))); diff --git a/jetty-websocket/websocket-server/src/test/resources/jetty-logging.properties b/jetty-websocket/websocket-server/src/test/resources/jetty-logging.properties index 3606aeb9f31..fcac29eb903 100644 --- a/jetty-websocket/websocket-server/src/test/resources/jetty-logging.properties +++ b/jetty-websocket/websocket-server/src/test/resources/jetty-logging.properties @@ -1,5 +1,7 @@ org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog -org.eclipse.jetty.LEVEL=WARN +org.eclipse.jetty.LEVEL=INFO +org.eclipse.jetty.STACKS=true +org.eclipse.jetty.SOURCE=true # org.eclipse.jetty.LEVEL=INFO # org.eclipse.jetty.websocket.LEVEL=WARN # org.eclipse.jetty.websocket.LEVEL=DEBUG @@ -19,7 +21,7 @@ org.eclipse.jetty.LEVEL=WARN # org.eclipse.jetty.websocket.io.Frames.LEVEL=DEBUG ### Show state changes on BrowserDebugTool -org.eclipse.jetty.websocket.server.browser.LEVEL=DEBUG +#org.eclipse.jetty.websocket.server.browser.LEVEL=DEBUG ### Disabling intentional error out of RFCSocket org.eclipse.jetty.websocket.server.helper.RFCSocket.LEVEL=OFF diff --git a/test-jetty-webapp/src/main/config/contexts/test.d/override-web.xml b/test-jetty-webapp/src/main/config/webapps/test.d/override-web.xml similarity index 100% rename from test-jetty-webapp/src/main/config/contexts/test.d/override-web.xml rename to test-jetty-webapp/src/main/config/webapps/test.d/override-web.xml diff --git a/test-jetty-webapp/src/main/config/contexts/test.xml b/test-jetty-webapp/src/main/config/webapps/test.xml similarity index 98% rename from test-jetty-webapp/src/main/config/contexts/test.xml rename to test-jetty-webapp/src/main/config/webapps/test.xml index 1d90630384e..c19f55c73d1 100644 --- a/test-jetty-webapp/src/main/config/contexts/test.xml +++ b/test-jetty-webapp/src/main/config/webapps/test.xml @@ -28,7 +28,7 @@ detected. true false /etc/webdefault.xml - /contexts/test.d/override-web.xml + /webapps/test.d/override-web.xml