diff --git a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java index 60b09a8b492..386af03db5a 100644 --- a/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java +++ b/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java @@ -133,7 +133,7 @@ public class TestAnnotationConfiguration File testSciJar = new File(jarDir, "test-sci.jar"); assertTrue(testSciJar.exists()); URLClassLoader webAppLoader = new URLClassLoader(new URL[]{testSciJar.toURI().toURL()}, Thread.currentThread().getContextClassLoader()); - + ClassLoader orig = Thread.currentThread().getContextClassLoader(); try { diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyWebAppContext.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyWebAppContext.java index cd9ffd38b24..0380c1774fd 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyWebAppContext.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyWebAppContext.java @@ -19,7 +19,6 @@ package org.eclipse.jetty.maven.plugin; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Method; import java.net.MalformedURLException; @@ -37,7 +36,6 @@ import org.eclipse.jetty.plus.webapp.PlusConfiguration; import org.eclipse.jetty.quickstart.ExtraXmlDescriptorProcessor; import org.eclipse.jetty.quickstart.QuickStartConfiguration; import org.eclipse.jetty.quickstart.QuickStartConfiguration.Mode; -import org.eclipse.jetty.quickstart.QuickStartGeneratorConfiguration; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.FilterMapping; import org.eclipse.jetty.servlet.ServletHolder; @@ -49,12 +47,8 @@ import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.resource.ResourceCollection; import org.eclipse.jetty.webapp.Configuration; -import org.eclipse.jetty.webapp.FragmentConfiguration; -import org.eclipse.jetty.webapp.JettyWebXmlConfiguration; -import org.eclipse.jetty.webapp.MetaInfConfiguration; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebInfConfiguration; -import org.eclipse.jetty.webapp.WebXmlConfiguration; /** * JettyWebAppContext @@ -81,10 +75,7 @@ public class JettyWebAppContext extends WebAppContext private List _classpathFiles; //webInfClasses+testClasses+webInfJars private String _jettyEnvXml; private List _overlays; - private Resource _quickStartWebXml; - private String _originAttribute; - private boolean _generateOrigin; - + /** * Set the "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern" with a pattern for matching jars on * container classpath to scan. This is analogous to the WebAppContext.setAttribute() call. @@ -210,29 +201,20 @@ public class JettyWebAppContext extends WebAppContext { _overlays = overlays; } - + + + public void setOriginAttribute (String name) + { + setAttribute(QuickStartConfiguration.ORIGIN_ATTRIBUTE,name); + } + /** * @return the originAttribute */ public String getOriginAttribute() { - return _originAttribute; - } - - /** - * @param originAttribute the originAttribute to set - */ - public void setOriginAttribute(String originAttribute) - { - _originAttribute = originAttribute; - } - - /** - * @return the generateOrigin - */ - public boolean isGenerateOrigin() - { - return _generateOrigin; + Object attr = getAttribute(QuickStartConfiguration.ORIGIN_ATTRIBUTE); + return attr==null?null:attr.toString(); } /** @@ -240,7 +222,16 @@ public class JettyWebAppContext extends WebAppContext */ public void setGenerateOrigin(boolean generateOrigin) { - _generateOrigin = generateOrigin; + setAttribute(QuickStartConfiguration.GENERATE_ORIGIN,generateOrigin); + } + + /** + * @return the generateOrigin + */ + public boolean isGenerateOrigin() + { + Object attr = getAttribute(QuickStartConfiguration.GENERATE_ORIGIN); + return attr==null?false:Boolean.valueOf(attr.toString()); } /* ------------------------------------------------------------ */ @@ -270,13 +261,13 @@ public class JettyWebAppContext extends WebAppContext /* ------------------------------------------------------------ */ protected void setQuickStartWebDescriptor (Resource quickStartWebXml) { - _quickStartWebXml = quickStartWebXml; + setAttribute(QuickStartConfiguration.QUICKSTART_WEB_XML,quickStartWebXml.toString()); } /* ------------------------------------------------------------ */ public Resource getQuickStartWebDescriptor () { - return _quickStartWebXml; + return (Resource)getAttribute(QuickStartConfiguration.QUICKSTART_WEB_XML); } /* ------------------------------------------------------------ */ @@ -326,24 +317,17 @@ public class JettyWebAppContext extends WebAppContext if (!isGenerateQuickStart() && getQuickStartWebDescriptor() != null) { MavenQuickStartConfiguration quickStart = new MavenQuickStartConfiguration(); - quickStart.setMode(Mode.QUCKSTART); - quickStart.setQuickStartWebXml(getQuickStartWebDescriptor()); + quickStart.setMode(Mode.QUICKSTART); addConfiguration(quickStart); } - else - { - if (isGenerateQuickStart()) - { - MavenQuickStartConfiguration quickStart = new MavenQuickStartConfiguration(); - quickStart.setMode(Mode.GENERATE); - quickStart.getGenerator().setGenerateOrigin(isGenerateOrigin()); - quickStart.getGenerator().setOriginAttribute(getOriginAttribute()); - quickStart.setQuickStartWebXml(getQuickStartWebDescriptor()); - quickStart.getGenerator().setQuickStartWebXml(getQuickStartWebDescriptor()); - addConfiguration(quickStart); - } + else if (isGenerateQuickStart()) + { + MavenQuickStartConfiguration quickStart = new MavenQuickStartConfiguration(); + quickStart.setMode(Mode.GENERATE); + addConfiguration(quickStart); } + //Set up the pattern that tells us where the jars are that need scanning //Allow user to set up pattern for names of jars from the container classpath diff --git a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenQuickStartConfiguration.java b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenQuickStartConfiguration.java index dd9fbac0f89..5313c0bebe9 100644 --- a/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenQuickStartConfiguration.java +++ b/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenQuickStartConfiguration.java @@ -39,24 +39,6 @@ import org.eclipse.jetty.webapp.WebAppContext; public class MavenQuickStartConfiguration extends QuickStartConfiguration { private static final Logger LOG = Log.getLogger(QuickStartConfiguration.class); - - private Resource _quickStartWebXml; - - - - - public void setQuickStartWebXml (Resource r) - { - _quickStartWebXml = r; - } - - - - @Override - public Resource getQuickStartWebXml(WebAppContext context) throws Exception - { - return _quickStartWebXml; - } @Override public void preConfigure(WebAppContext context) throws Exception diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureQuickStartWar.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureQuickStartWar.java index 24f9eb8e081..f8d925f27c9 100644 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureQuickStartWar.java +++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureQuickStartWar.java @@ -109,14 +109,11 @@ public class PreconfigureQuickStartWar xmlConfiguration.configure(webapp); } webapp.setResourceBase(dir.getFile().getAbsolutePath()); - webapp.setGenerate(true); + webapp.setMode(QuickStartConfiguration.Mode.GENERATE); server.setHandler(webapp); server.start(); server.stop(); } - - - private static void error(String message) { diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartConfiguration.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartConfiguration.java index e44f1e4c5ed..5fe8a7e5788 100644 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartConfiguration.java +++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartConfiguration.java @@ -18,6 +18,7 @@ package org.eclipse.jetty.quickstart; +import java.io.IOException; import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; @@ -41,11 +42,15 @@ import org.eclipse.jetty.webapp.WebXmlConfiguration; * Re-inflate a deployable webapp from a saved effective-web.xml * which combines all pre-parsed web xml descriptors and annotations. */ -public class QuickStartConfiguration extends AbstractConfiguration implements Configuration.DisabledByDefault +public class QuickStartConfiguration extends AbstractConfiguration { private static final Logger LOG = Log.getLogger(QuickStartConfiguration.class); public static final Set> __replacedConfigurations = new HashSet<>(); + public static final String ORIGIN_ATTRIBUTE = "org.eclipse.jetty.quickstart.ORIGIN_ATTRIBUTE"; + public static final String GENERATE_ORIGIN = "org.eclipse.jetty.quickstart.GENERATE_ORIGIN"; + public static final String QUICKSTART_WEB_XML = "org.eclipse.jetty.quickstart.QUICKSTART_WEB_XML"; + static { __replacedConfigurations.add(org.eclipse.jetty.webapp.WebXmlConfiguration.class); @@ -54,15 +59,20 @@ public class QuickStartConfiguration extends AbstractConfiguration implements Co __replacedConfigurations.add(org.eclipse.jetty.annotations.AnnotationConfiguration.class); }; - public enum Mode {DISABLED, GENERATE, AUTO, QUCKSTART}; + public enum Mode + { + DISABLED, // No Quick start + GENERATE, // Generate quickstart-web.xml and then stop + AUTO, // use or generate depending on the existance of quickstart-web.xml + QUICKSTART // Use quickstart-web.xml + }; + private Mode _mode=Mode.AUTO; private boolean _quickStart; - private QuickStartGeneratorConfiguration _generator = new QuickStartGeneratorConfiguration(); - - public QuickStartConfiguration() { + super(true); addDependencies(WebInfConfiguration.class); addDependents(WebXmlConfiguration.class); } @@ -76,12 +86,7 @@ public class QuickStartConfiguration extends AbstractConfiguration implements Co { return _mode; } - - public QuickStartGeneratorConfiguration getGenerator() - { - return _generator; - } - + /** * @see org.eclipse.jetty.webapp.AbstractConfiguration#preConfigure(org.eclipse.jetty.webapp.WebAppContext) */ @@ -105,24 +110,29 @@ public class QuickStartConfiguration extends AbstractConfiguration implements Co break; case GENERATE: - super.preConfigure(context); - - - context.addConfiguration(_generator); - context.addConfiguration(new StopContextConfiguration()); + { + super.preConfigure(context); + QuickStartGeneratorConfiguration generator = new QuickStartGeneratorConfiguration(true); + configure(generator, context); + context.addConfiguration(generator); break; + } case AUTO: + { if (quickStartWebXml.exists()) - quickStart(context,quickStartWebXml); + quickStart(context, quickStartWebXml); else { super.preConfigure(context); - context.addConfiguration(new QuickStartGeneratorConfiguration()); + QuickStartGeneratorConfiguration generator = new QuickStartGeneratorConfiguration(false); + configure(generator, context); + context.addConfiguration(generator); } break; + } - case QUCKSTART: + case QUICKSTART: if (quickStartWebXml.exists()) quickStart(context,quickStartWebXml); else @@ -130,7 +140,23 @@ public class QuickStartConfiguration extends AbstractConfiguration implements Co break; } } - + + protected void configure(QuickStartGeneratorConfiguration generator, WebAppContext context) throws IOException + { + Object attr; + attr = context.getAttribute(GENERATE_ORIGIN); + if (attr!=null) + generator.setGenerateOrigin(Boolean.valueOf(attr.toString())); + attr = context.getAttribute(ORIGIN_ATTRIBUTE); + if (attr!=null) + generator.setOriginAttribute(attr.toString()); + attr = context.getAttribute(QUICKSTART_WEB_XML); + if (attr instanceof Resource) + generator.setQuickStartWebXml((Resource)attr); + else if (attr!=null) + generator.setQuickStartWebXml(Resource.newResource(attr.toString())); + } + protected void quickStart(WebAppContext context, Resource quickStartWebXml) throws Exception { diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartGeneratorConfiguration.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartGeneratorConfiguration.java index f02415deefc..5b88d118f18 100644 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartGeneratorConfiguration.java +++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartGeneratorConfiguration.java @@ -73,22 +73,36 @@ import org.eclipse.jetty.xml.XmlAppendable; * Generate an effective web.xml from a WebAppContext, including all components * from web.xml, web-fragment.xmls annotations etc. */ -public class QuickStartGeneratorConfiguration extends AbstractConfiguration implements Configuration.DisabledByDefault +public class QuickStartGeneratorConfiguration extends AbstractConfiguration { private static final Logger LOG = Log.getLogger(QuickStartGeneratorConfiguration.class); public static final String ORIGIN = "org.eclipse.jetty.originAttribute"; public static final String DEFAULT_ORIGIN_ATTRIBUTE_NAME = "origin"; + + protected final boolean _abort; protected String _originAttribute; protected boolean _generateOrigin; protected int _count; protected Resource _quickStartWebXml; - + public QuickStartGeneratorConfiguration() { - _count = 0; + this(false); + } + + public QuickStartGeneratorConfiguration(boolean abort) + { + super(true); + _count = 0; + _abort = abort; + } + + @Override + public boolean abort(WebAppContext context) + { + return _abort; } - public void setOriginAttribute (String name) { _originAttribute = name; @@ -596,7 +610,6 @@ public class QuickStartGeneratorConfiguration extends AbstractConfiguration impl * * @param out * @param attribute - * @param resourceBase * @throws IOException */ private void addContextParamFromAttribute(WebAppContext context, XmlAppendable out, String attribute, AttributeNormalizer normalizer) throws IOException @@ -630,7 +643,6 @@ public class QuickStartGeneratorConfiguration extends AbstractConfiguration impl * * @param out * @param md - * @param tag * @param holder * @throws IOException */ diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartWebApp.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartWebApp.java index 08c2a067137..a380660f6a7 100644 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartWebApp.java +++ b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartWebApp.java @@ -29,10 +29,8 @@ import org.eclipse.jetty.webapp.WebAppContext; */ public class QuickStartWebApp extends WebAppContext { - private final QuickStartConfiguration _quickStartConfiguration; - private String _originAttribute; private boolean _generateOrigin; public QuickStartWebApp() @@ -51,30 +49,40 @@ public class QuickStartWebApp extends WebAppContext @Deprecated public boolean isPreconfigure() { - return isGenerate(); + switch(_quickStartConfiguration.getMode()) + { + case AUTO: + case GENERATE: + return true; + default: return false; + } } @Deprecated public void setPreconfigure(boolean preconfigure) { - setGenerate(preconfigure); + _quickStartConfiguration.setMode(preconfigure?Mode.GENERATE:Mode.DISABLED); } @Deprecated public boolean isAutoPreconfigure() { - return isAutoGenerate(); + switch(_quickStartConfiguration.getMode()) + { + case AUTO: return true; + default: return false; + } } @Deprecated public void setAutoPreconfigure(boolean autoPrecompile) { - setAutoGenerate(autoPrecompile); + _quickStartConfiguration.setMode(autoPrecompile?Mode.AUTO:Mode.DISABLED); } public void setOriginAttribute (String name) { - _quickStartConfiguration.getGenerator().setOriginAttribute(name); + setAttribute(QuickStartConfiguration.ORIGIN_ATTRIBUTE,name); } /** @@ -82,15 +90,8 @@ public class QuickStartWebApp extends WebAppContext */ public String getOriginAttribute() { - return _originAttribute; - } - - /** - * @return the generateOrigin - */ - public boolean isGenerateOrigin() - { - return _generateOrigin; + Object attr = getAttribute(QuickStartConfiguration.ORIGIN_ATTRIBUTE); + return attr==null?null:attr.toString(); } /** @@ -98,26 +99,25 @@ public class QuickStartWebApp extends WebAppContext */ public void setGenerateOrigin(boolean generateOrigin) { - _quickStartConfiguration.getGenerator().setGenerateOrigin(generateOrigin); + setAttribute(QuickStartConfiguration.GENERATE_ORIGIN,generateOrigin); } - public boolean isGenerate() + /** + * @return the generateOrigin + */ + public boolean isGenerateOrigin() { - return _quickStartConfiguration.getMode()==Mode.GENERATE; + Object attr = getAttribute(QuickStartConfiguration.GENERATE_ORIGIN); + return attr==null?false:Boolean.valueOf(attr.toString()); } - - public void setGenerate(boolean preconfigure) + + public Mode getMode() { - _quickStartConfiguration.setMode(Mode.GENERATE); + return _quickStartConfiguration.getMode(); } - - public boolean isAutoGenerate() + + public void setMode(Mode mode) { - return _quickStartConfiguration.getMode()==Mode.AUTO; - } - - public void setAutoGenerate(boolean autoPrecompile) - { - _quickStartConfiguration.setMode(Mode.AUTO); + _quickStartConfiguration.setMode(mode); } } diff --git a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/StopContextConfiguration.java b/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/StopContextConfiguration.java deleted file mode 100644 index 976c38b1891..00000000000 --- a/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/StopContextConfiguration.java +++ /dev/null @@ -1,26 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2017 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.quickstart; - -import org.eclipse.jetty.webapp.AbstractConfiguration; -import org.eclipse.jetty.webapp.Configuration; - -public class StopContextConfiguration extends AbstractConfiguration implements Configuration.AbortConfiguration -{ -} diff --git a/jetty-quickstart/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration b/jetty-quickstart/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration index 1296fe42fc4..d80157a7695 100644 --- a/jetty-quickstart/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration +++ b/jetty-quickstart/src/main/resources/META-INF/services/org.eclipse.jetty.webapp.Configuration @@ -1,3 +1,2 @@ org.eclipse.jetty.quickstart.QuickStartConfiguration org.eclipse.jetty.quickstart.QuickStartGeneratorConfiguration -org.eclipse.jetty.quickstart.StopContextConfiguration diff --git a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java index c414bacaed5..c78a664accd 100644 --- a/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java +++ b/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java @@ -39,8 +39,7 @@ public class TestQuickStart { File testDir; File webInf; - - + @Before public void setUp() { @@ -49,9 +48,7 @@ public class TestQuickStart webInf = new File(testDir, "WEB-INF"); FS.ensureDirExists(webInf); } - - @Test public void testProgrammaticOverrideOfDefaultServletMapping() throws Exception { @@ -64,7 +61,7 @@ public class TestQuickStart //generate a quickstart-web.xml QuickStartWebApp quickstart = new QuickStartWebApp(); quickstart.setResourceBase(testDir.getAbsolutePath()); - quickstart.setPreconfigure(true); + quickstart.setMode(QuickStartConfiguration.Mode.GENERATE); quickstart.setGenerateOrigin(true); ServletHolder fooHolder = new ServletHolder(); fooHolder.setServlet(new FooServlet()); @@ -80,7 +77,7 @@ public class TestQuickStart //now run the webapp again purely from the generated quickstart QuickStartWebApp webapp = new QuickStartWebApp(); webapp.setResourceBase(testDir.getAbsolutePath()); - webapp.setPreconfigure(false); + webapp.setMode(QuickStartConfiguration.Mode.QUICKSTART); webapp.setClassLoader(Thread.currentThread().getContextClassLoader()); //only necessary for junit testing server.setHandler(webapp); diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbstractConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbstractConfiguration.java index a8adce34aa6..78d60b39f8e 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbstractConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbstractConfiguration.java @@ -27,14 +27,20 @@ import java.util.stream.Collectors; public class AbstractConfiguration implements Configuration { protected static final boolean ENABLE_BY_DEFAULT = true; + private final boolean _disabledByDefault; private final List _after=new ArrayList<>(); private final List _beforeThis=new ArrayList<>(); private final ClasspathPattern _system=new ClasspathPattern(); private final ClasspathPattern _server=new ClasspathPattern(); - - + protected AbstractConfiguration() { + this(false); + } + + protected AbstractConfiguration(boolean disabledByDefault) + { + _disabledByDefault=disabledByDefault; } /** @@ -174,6 +180,18 @@ public class AbstractConfiguration implements Configuration { } + @Override + public boolean isDisabledByDefault() + { + return _disabledByDefault; + } + + @Override + public boolean abort(WebAppContext context) + { + return false; + } + public void cloneConfigure(WebAppContext template, WebAppContext context) throws Exception { } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java index 809c8e3e406..957fa8f7504 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java @@ -129,18 +129,17 @@ public interface Configuration * @throws Exception if unable to destroy */ public void destroy (WebAppContext context) throws Exception; - + /** - * A Configuration that is not added by default to a context - * + * @return true if configuration is disabled by default */ - interface DisabledByDefault extends Configuration {} - + public boolean isDisabledByDefault(); + /** - * A Configuration that will cause {@link Configurations#configure(WebAppContext)} to abort with a false return + * @return true if configuration should be aborted */ - interface AbortConfiguration extends DisabledByDefault,Configuration {} - + public boolean abort(WebAppContext context); + /** * @deprecated Use {@link Configurations} */ diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configurations.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configurations.java index 471f279b7bc..43b3fde6321 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configurations.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configurations.java @@ -187,7 +187,7 @@ public class Configurations extends AbstractList if (configurations==null) { configurations=new Configurations(Configurations.getKnown().stream() - .filter(c->!(c instanceof Configuration.DisabledByDefault)) + .filter(c->!c.isDisabledByDefault()) .map(c->c.getClass().getName()) .toArray(String[]::new)); } @@ -438,7 +438,7 @@ public class Configurations extends AbstractList /** * @param webapp The webapp to configure - * @return false if a {@link Configuration.AbortConfiguration} was encountered, true otherwise + * @return false if a {@link Configuration#abort(WebAppContext)} returns true, true otherwise * @throws Exception Thrown by {@link Configuration#configure(WebAppContext)} */ public boolean configure(WebAppContext webapp) throws Exception @@ -448,7 +448,7 @@ public class Configurations extends AbstractList { LOG.debug("configure {}",configuration); configuration.configure(webapp); - if (configuration instanceof Configuration.AbortConfiguration) + if (configuration.abort(webapp)) return false; } return true; diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java index c538cfcf6a7..9935948af8e 100644 --- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java +++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java @@ -57,7 +57,7 @@ public class WebAppContextTest public void testConfigurationClassesFromDefault () { String[] known_and_enabled=Configurations.getKnown().stream() - .filter(c->!(c instanceof Configuration.DisabledByDefault)) + .filter(c->!c.isDisabledByDefault()) .map(c->c.getClass().getName()) .toArray(String[]::new); diff --git a/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartTest.java b/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartTest.java index 5b4407ace5a..73aab40b3b3 100644 --- a/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartTest.java +++ b/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartTest.java @@ -61,7 +61,7 @@ public class QuickStartTest Server server = new Server(0); QuickStartWebApp webapp = new QuickStartWebApp(); - webapp.setAutoGenerate(true); + webapp.setMode(QuickStartConfiguration.Mode.AUTO); webapp.setWar(war); webapp.setContextPath("/"); @@ -107,7 +107,7 @@ public class QuickStartTest Server server = new Server(0); QuickStartWebApp webapp = new QuickStartWebApp(); - webapp.setAutoGenerate(true); + webapp.setMode(QuickStartConfiguration.Mode.AUTO); webapp.setWar(war); webapp.setContextPath("/"); @@ -153,7 +153,7 @@ public class QuickStartTest Server server = new Server(0); QuickStartWebApp webapp = new QuickStartWebApp(); - webapp.setAutoGenerate(true); + webapp.setMode(QuickStartConfiguration.Mode.AUTO); webapp.setWar(war); webapp.setContextPath("/"); diff --git a/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/Quickstart.java b/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/Quickstart.java index 2bb1c565691..c94bfb6b6be 100644 --- a/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/Quickstart.java +++ b/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/Quickstart.java @@ -41,7 +41,7 @@ public class Quickstart Server server = new Server(8080); QuickStartWebApp webapp = new QuickStartWebApp(); - webapp.setAutoGenerate(true); + webapp.setMode(QuickStartConfiguration.Mode.AUTO); webapp.setWar(war); webapp.setContextPath("/");