diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml index 4545bc5f5c0..a6fb6131503 100644 --- a/jetty-osgi/jetty-osgi-boot/pom.xml +++ b/jetty-osgi/jetty-osgi-boot/pom.xml @@ -112,8 +112,9 @@ javax.servlet.http;version="[3.1,3.2)", javax.transaction;version="1.1.0";resolution:=optional, javax.transaction.xa;version="1.1.0";resolution:=optional, + org.eclipse.jetty.annotations;version="9.1";resolution:=optional, + org.eclipse.jetty.plus.webapp;version="9.1";resolution:=optional, org.objectweb.asm;version=4;resolution:=optional, - org.eclipse.jetty.annotations;version="9.0.0";resolution:=optional, org.osgi.framework, org.osgi.service.cm;version="1.2.0", org.osgi.service.packageadmin, diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java index 89621a2284b..726aa694d9b 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java @@ -143,63 +143,12 @@ public abstract class AbstractContextProvider extends AbstractLifeCycle implemen { //apply the contextFile, creating the ContextHandler, the DeploymentManager will register it in the ContextHandlerCollection Resource res = null; - - //try to find the context file in the filesystem - if (_contextFile.startsWith("/")) - res = getFileAsResource(_contextFile); - - //try to find it relative to jetty home - if (res == null) - { - //See if the specific server we are related to has jetty.home set - String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); - if (jettyHome != null) - res = getFileAsResource(jettyHome, _contextFile); - - //try to see if a SystemProperty for jetty.home is set - if (res == null) - { - jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); - - if (jettyHome != null) - { - if (jettyHome.startsWith("\"") || jettyHome.startsWith("'")) - jettyHome = jettyHome.substring(1); - if (jettyHome.endsWith("\"") || (jettyHome.endsWith("'"))) - jettyHome = jettyHome.substring(0,jettyHome.length()-1); - - res = getFileAsResource(jettyHome, _contextFile); - LOG.debug("jetty home context file: {}",res); - } - } - } - - //try to find it relative to an override location that has been specified - if (res == null) - { - if (bundleOverrideLocation != null) - { - try(Resource location=Resource.newResource(bundleOverrideLocation)) - { - res=location.addPath(_contextFile); - } - LOG.debug("Bundle override location context file: {}",res); - } - } - - //try to find it relative to the bundle in which it is being deployed - if (res == null) - { - if (_contextFile.startsWith("./")) - _contextFile = _contextFile.substring(1); - - if (!_contextFile.startsWith("/")) - _contextFile = "/" + _contextFile; - - URL contextURL = _bundle.getEntry(_contextFile); - if (contextURL != null) - res = Resource.newResource(contextURL); - } + + String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); + if (jettyHome == null) + jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); + + res = findFile(_contextFile, jettyHome, bundleOverrideLocation, _bundle); //apply the context xml file, either to an existing ContextHandler, or letting the //it create the ContextHandler as necessary @@ -266,38 +215,6 @@ public abstract class AbstractContextProvider extends AbstractLifeCycle implemen } - - private Resource getFileAsResource (String dir, String file) - { - Resource r = null; - try - { - File asFile = new File (dir, file); - if (asFile.exists()) - r = Resource.newResource(asFile); - } - catch (Exception e) - { - r = null; - } - return r; - } - - private Resource getFileAsResource (String file) - { - Resource r = null; - try - { - File asFile = new File (file); - if (asFile.exists()) - r = Resource.newResource(asFile); - } - catch (Exception e) - { - r = null; - } - return r; - } } /* ------------------------------------------------------------ */ diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java index 185d0f1ae6e..7ffc9b4c66d 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java @@ -18,6 +18,8 @@ package org.eclipse.jetty.osgi.boot; +import java.io.File; +import java.net.URL; import java.util.Dictionary; import java.util.Hashtable; @@ -25,6 +27,9 @@ import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; import org.eclipse.jetty.deploy.DeploymentManager; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; +import org.eclipse.jetty.util.resource.Resource; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceRegistration; @@ -39,6 +44,8 @@ import org.osgi.framework.ServiceRegistration; */ public abstract class AbstractOSGiApp extends App { + private static final Logger LOG = Log.getLogger(AbstractOSGiApp.class); + protected Bundle _bundle; protected Dictionary _properties; protected ServiceRegistration _registration; @@ -118,4 +125,91 @@ public abstract class AbstractOSGiApp extends App _registration = null; } + protected Resource getFileAsResource (String dir, String file) + { + Resource r = null; + try + { + File asFile = new File (dir, file); + if (asFile.exists()) + r = Resource.newResource(asFile); + } + catch (Exception e) + { + r = null; + } + return r; + } + + protected Resource getFileAsResource (String file) + { + Resource r = null; + try + { + File asFile = new File (file); + if (asFile.exists()) + r = Resource.newResource(asFile); + } + catch (Exception e) + { + r = null; + } + return r; + } + + protected Resource findFile (String fileName, String jettyHome, String bundleOverrideLocation, Bundle containingBundle) + { + Resource res = null; + + //try to find the context file in the filesystem + if (fileName.startsWith("/")) + res = getFileAsResource(fileName); + if (res != null) + return res; + + //try to find it relative to jetty home + if (jettyHome != null) + { + if (jettyHome.startsWith("\"") || jettyHome.startsWith("'")) + jettyHome = jettyHome.substring(1); + if (jettyHome.endsWith("\"") || (jettyHome.endsWith("'"))) + jettyHome = jettyHome.substring(0,jettyHome.length()-1); + + res = getFileAsResource(jettyHome, fileName); + } + if (res != null) + return res; + + + //try to find it relative to an override location that has been specified + if (bundleOverrideLocation != null) + { + try(Resource location=Resource.newResource(bundleOverrideLocation)) + { + res=location.addPath(fileName); + } + catch (Exception e) + { + LOG.warn(e); + } + } + if (res != null) + return res; + + //try to find it relative to the bundle in which it is being deployed + if (containingBundle != null) + { + if (fileName.startsWith("./")) + fileName = fileName.substring(1); + + if (!fileName.startsWith("/")) + fileName = "/" + fileName; + + URL entry = _bundle.getEntry(fileName); + if (entry != null) + res = Resource.newResource(entry); + } + + return res; + } } diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java index 97f9296114f..849a00c55c3 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java @@ -20,10 +20,12 @@ package org.eclipse.jetty.osgi.boot; import java.io.File; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.Dictionary; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import org.eclipse.jetty.deploy.App; import org.eclipse.jetty.deploy.AppProvider; @@ -32,7 +34,9 @@ import org.eclipse.jetty.osgi.boot.internal.serverfactory.ServerInstanceWrapper; import org.eclipse.jetty.osgi.boot.internal.webapp.OSGiWebappClassLoader; import org.eclipse.jetty.osgi.boot.utils.BundleFileLocatorHelperFactory; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.util.ArrayUtil; import org.eclipse.jetty.util.component.AbstractLifeCycle; +import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.resource.JarResource; @@ -73,17 +77,23 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement public static String[] getDefaultConfigurations () { + List configs = ArrayUtil.asMutableList(__defaultConfigurations); if (annotationsAvailable()) { - String[] configs = new String[__defaultConfigurations.length+1]; - System.arraycopy(__defaultConfigurations, 0, configs, 0, 4); - configs[4] = "org.eclipse.jetty.osgi.annotations.AnnotationConfiguration"; - configs[5] = __defaultConfigurations[__defaultConfigurations.length-1]; - return configs; + //add before JettyWebXmlConfiguration + int i = configs.indexOf("org.eclipse.jetty.webapp.JettyWebXmlConfiguration"); + configs.add(i, "org.eclipse.jetty.osgi.annotations.AnnotationConfiguration"); + } + + if (jndiAvailable()) + { + //add in EnvConfiguration and PlusConfiguration just after FragmentConfiguration + int i = configs.indexOf("org.eclipse.jetty.webapp.FragmentConfiguration"); + configs.add(++i, "org.eclipse.jetty.plus.webapp.EnvConfiguration"); + configs.add(++i, "org.eclipse.jetty.plus.webapp.PlusConfiguration"); } - - return Arrays.copyOf(__defaultConfigurations, __defaultConfigurations.length); + return configs.toArray(new String[configs.size()]); } private static boolean annotationsAvailable() @@ -91,7 +101,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement boolean result = false; try { - Thread.currentThread().getContextClassLoader().loadClass("org.eclipse.jetty.annotations.AnnotationConfiguration"); + Loader.loadClass(AbstractWebAppProvider.class,"org.eclipse.jetty.annotations.AnnotationConfiguration"); result = true; LOG.debug("Annotation support detected"); } @@ -104,6 +114,23 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement return result; } + + private static boolean jndiAvailable() + { + try + { + Loader.loadClass(AbstractWebAppProvider.class, "org.eclipse.jetty.plus.jndi.Resource"); + Loader.loadClass(AbstractWebAppProvider.class, "org.eclipse.jetty.plus.webapp.EnvConfiguration"); + LOG.debug("JNDI support detected"); + return true; + } + catch (ClassNotFoundException e) + { + LOG.debug("No JNDI support detected"); + return false; + } + } + private boolean _parentLoaderPriority; @@ -268,7 +295,6 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement //Sets the location of the war file // converts bundleentry: protocol if necessary - System.err.println("WAR : "+BundleFileLocatorHelperFactory.getFactory().getHelper().getLocalURL(url).toString()); _webApp.setWar(BundleFileLocatorHelperFactory.getFactory().getHelper().getLocalURL(url).toString()); // Set up what has been configured on the provider @@ -329,7 +355,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement // apply any META-INF/context.xml file that is found to configure // the webapp first - applyMetaInfContextXml(rootResource); + applyMetaInfContextXml(rootResource, overrideBundleInstallLocation); _webApp.setAttribute(OSGiWebappConstants.REQUIRE_TLD_BUNDLE, requireTldBundles); @@ -385,7 +411,7 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement } - protected void applyMetaInfContextXml(Resource rootResource) + protected void applyMetaInfContextXml(Resource rootResource, String overrideBundleInstallLocation) throws Exception { if (_bundle == null) return; @@ -399,8 +425,31 @@ public abstract class AbstractWebAppProvider extends AbstractLifeCycle implement Thread.currentThread().setContextClassLoader(_webApp.getClassLoader()); //TODO replace this with getting the InputStream so we don't cache in URL - // find if there is a META-INF/context.xml file + //Try looking for a context xml file in META-INF with a specific name URL contextXmlUrl = _bundle.getEntry("/META-INF/jetty-webapp-context.xml"); + + if (contextXmlUrl == null) + { + //Didn't find specially named file, try looking for a property that names a context xml file to use + if (_properties != null) + { + String tmp = (String)_properties.get(OSGiWebappConstants.JETTY_CONTEXT_FILE_PATH); + if (tmp != null) + { + String[] filenames = tmp.split(",;"); + if (filenames != null && filenames.length > 0) + { + String filename = filenames[0]; //should only be 1 filename in this usage + String jettyHome = (String)getServerInstanceWrapper().getServer().getAttribute(OSGiServerConstants.JETTY_HOME); + if (jettyHome == null) + jettyHome = System.getProperty(OSGiServerConstants.JETTY_HOME); + Resource res = findFile(filename, jettyHome, overrideBundleInstallLocation, _bundle); + if (res != null) + contextXmlUrl = res.getURL(); + } + } + } + } if (contextXmlUrl == null) return; // Apply it just as the standard jetty ContextProvider would do diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java index 1cd720b601f..65466f506a5 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java @@ -106,6 +106,13 @@ public class BundleContextProvider extends AbstractContextProvider implements Bu if (bundle == null) return false; + //If the bundle defines a Web-ContextPath then its probably a webapp and the BundleWebAppProvider should deploy it + if ((String)bundle.getHeaders().get(OSGiWebappConstants.RFC66_WEB_CONTEXTPATH) != null) + { + if (LOG.isDebugEnabled()) LOG.debug("BundleContextProvider ignoring bundle {} with {} set", bundle.getSymbolicName(), OSGiWebappConstants.RFC66_WEB_CONTEXTPATH); + return false; + } + String contextFiles = (String)bundle.getHeaders().get(OSGiWebappConstants.JETTY_CONTEXT_FILE_PATH); if (contextFiles == null) contextFiles = (String)bundle.getHeaders().get(OSGiWebappConstants.SERVICE_PROP_CONTEXT_FILE_PATH); @@ -113,6 +120,7 @@ public class BundleContextProvider extends AbstractContextProvider implements Bu if (contextFiles == null) return false; + boolean added = false; //bundle defines JETTY_CONTEXT_FILE_PATH header, //a comma separated list of context xml files that each define a ContextHandler diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java index bdd52ac537c..62d9f0b341a 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java @@ -100,7 +100,6 @@ public class OSGiWebappClassLoader extends WebAppClassLoader implements BundleRe @Override public Class loadClass(String name) throws ClassNotFoundException { - System.err.println("LOADING CLASS: "+name); return super.loadClass(name); } diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml index 2a734b968bd..dda7984dc62 100644 --- a/jetty-osgi/test-jetty-osgi/pom.xml +++ b/jetty-osgi/test-jetty-osgi/pom.xml @@ -352,6 +352,20 @@ test + + org.eclipse.jetty.tests + test-container-initializer + ${project.version} + test + + + + + org.eclipse.jetty.tests + test-mock-resources + ${project.version} + + org.eclipse.jetty.osgi test-jetty-osgi-context diff --git a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java index b5035fadff5..48e018b9c6a 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java +++ b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java @@ -106,7 +106,7 @@ public class TestJettyOSGiBootCore res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-servlets" ).versionAsInProject().noStart()); res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-client" ).versionAsInProject().noStart()); res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-jndi" ).versionAsInProject().noStart()); - res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-plus" ).versionAsInProject().noStart()); + res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-plus" ).versionAsInProject()); res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-annotations" ).versionAsInProject().start()); res.add(mavenBundle().groupId( "org.eclipse.jetty.websocket" ).artifactId( "websocket-api" ).versionAsInProject().noStart()); res.add(mavenBundle().groupId( "org.eclipse.jetty.websocket" ).artifactId( "websocket-common" ).versionAsInProject().noStart()); diff --git a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java index e1bdd8b2c48..156d8e4f8c9 100644 --- a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java +++ b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java @@ -33,6 +33,7 @@ import javax.inject.Inject; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; +import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.osgi.boot.OSGiServerConstants; import org.junit.Ignore; @@ -50,7 +51,7 @@ import org.osgi.framework.BundleContext; * top of this. */ @RunWith(PaxExam.class) -@Ignore + public class TestJettyOSGiBootWithAnnotations { private static final String LOG_LEVEL = "WARN"; @@ -65,7 +66,7 @@ public class TestJettyOSGiBootWithAnnotations ArrayList - - diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/Foo.java b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/Foo.java similarity index 97% rename from tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/Foo.java rename to tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/Foo.java index bae5e96b1d4..935a55756b7 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/Foo.java +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/Foo.java @@ -16,7 +16,7 @@ // ======================================================================== // -package com.acme; +package com.acme.initializer; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/FooInitializer.java b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/FooInitializer.java similarity index 99% rename from tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/FooInitializer.java rename to tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/FooInitializer.java index 59ca8e1d4fb..9f4c181c023 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/FooInitializer.java +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/FooInitializer.java @@ -16,7 +16,7 @@ // ======================================================================== // -package com.acme; +package com.acme.initializer; import java.util.ArrayList; import java.util.Set; diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer index 264910bf918..622cbd01213 100644 --- a/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer +++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer @@ -1 +1 @@ -com.acme.FooInitializer +com.acme.initializer.FooInitializer diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml index 43e496ac68d..b8bc0cfc83f 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml @@ -47,6 +47,15 @@ ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + target + + plugin-context.xml + + META-INF + + @@ -70,10 +79,22 @@ org.eclipse.jetty.tests.test-spec-webapp - javax.servlet.jsp.*;version="[2.2.0, 3.0)",javax.transaction.*;version="[1.1, 2.0)", javax.servlet.*;version="3.0",org.eclipse.jetty.*;version="9.2",* - !com.acme* + Test Webapp for Servlet 3.1 Features + + javax.servlet.jsp.*;version="[2.2.0, 3.0)", + javax.transaction.*;version="[1.1, 2.0)", + javax.servlet.*;version="3.0", + javax.sql, + org.eclipse.jetty.webapp;version="9.2",org.eclipse.jetty.plus.jndi;version="9.2", + org.eclipse.jetty.security;version="9.2", + com.acme;version="9.2", + * + + com.acme.test;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}" / .,WEB-INF/classes,WEB-INF/lib + ./META-INF/plugin-context.xml + <_nouses>true diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotatedListener.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotatedListener.java similarity index 99% rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotatedListener.java rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotatedListener.java index 2a5caf276af..0b05fa7af4a 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotatedListener.java +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotatedListener.java @@ -16,7 +16,7 @@ // ======================================================================== // -package com.acme; +package com.acme.test; import javax.annotation.Resource; import javax.servlet.ServletContextAttributeEvent; diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotationTest.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotationTest.java similarity index 91% rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotationTest.java rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotationTest.java index 502e4b1c48d..7ec4c8f4136 100644 --- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AnnotationTest.java +++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotationTest.java @@ -16,7 +16,7 @@ // ======================================================================== // -package com.acme; +package com.acme.test; import java.io.IOException; import java.util.ArrayList; @@ -110,7 +110,7 @@ public class AnnotationTest extends HttpServlet try { InitialContext ic = new InitialContext(); - envLookupResult = "java:comp/env/com.acme.AnnotationTest/maxAmount="+ic.lookup("java:comp/env/com.acme.AnnotationTest/maxAmount"); + envLookupResult = "java:comp/env/com.acme.test.AnnotationTest/maxAmount="+ic.lookup("java:comp/env/com.acme.test.AnnotationTest/maxAmount"); } catch (Exception e) { @@ -131,7 +131,7 @@ public class AnnotationTest extends HttpServlet try { InitialContext ic = new InitialContext(); - envLookupResult3 = "java:comp/env/com.acme.AnnotationTest/avgAmount="+ic.lookup("java:comp/env/com.acme.AnnotationTest/avgAmount"); + envLookupResult3 = "java:comp/env/com.acme.test.AnnotationTest/avgAmount="+ic.lookup("java:comp/env/com.acme.test.AnnotationTest/avgAmount"); } catch (Exception e) { @@ -143,7 +143,7 @@ public class AnnotationTest extends HttpServlet try { InitialContext ic = new InitialContext(); - dsLookupResult = "java:comp/env/com.acme.AnnotationTest/myDatasource="+ic.lookup("java:comp/env/com.acme.AnnotationTest/myDatasource"); + dsLookupResult = "java:comp/env/com.acme.test.AnnotationTest/myDatasource="+ic.lookup("java:comp/env/com.acme.test.AnnotationTest/myDatasource"); } catch (Exception e) { @@ -154,7 +154,7 @@ public class AnnotationTest extends HttpServlet try { InitialContext ic = new InitialContext(); - txLookupResult = "java:comp/env/com.acme.AnnotationTest/myUserTransaction="+ic.lookup("java:comp/env/com.acme.AnnotationTest/myUserTransaction"); + txLookupResult = "java:comp/env/com.acme.test.AnnotationTest/myUserTransaction="+ic.lookup("java:comp/env/com.acme.test.AnnotationTest/myUserTransaction"); } catch (Exception e) { @@ -209,14 +209,14 @@ public class AnnotationTest extends HttpServlet __HandlesTypes = Arrays.asList( "javax.servlet.GenericServlet", "javax.servlet.http.HttpServlet", - "com.acme.AsyncListenerServlet", - "com.acme.AnnotationTest", - "com.acme.RoleAnnotationTest", - "com.acme.MultiPartTest", - "com.acme.FragmentServlet", - "com.acme.TestListener", - "com.acme.SecuredServlet", - "com.acme.Bar"); + "com.acme.test.AsyncListenerServlet", + "com.acme.test.AnnotationTest", + "com.acme.test.RoleAnnotationTest", + "com.acme.test.MultiPartTest", + "com.acme.fragment.FragmentServlet", + "com.acme.test.TestListener", + "com.acme.test.SecuredServlet", + "com.acme.test.Bar"); out.println("

@ContainerInitializer

"); out.println("
");
              out.println("@HandlesTypes({javax.servlet.Servlet.class, Foo.class})");
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AsyncListenerServlet.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AsyncListenerServlet.java
similarity index 99%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AsyncListenerServlet.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AsyncListenerServlet.java
index 4f783521093..e89378c5246 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/AsyncListenerServlet.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AsyncListenerServlet.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 
 import java.io.IOException;
 import java.io.PrintWriter;
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/Bar.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/Bar.java
similarity index 93%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/Bar.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/Bar.java
index bbb083fb088..f3bf8beda09 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/Bar.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/Bar.java
@@ -16,12 +16,12 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 
 
 public class Bar {
         
-        @Foo(2)
+        @com.acme.initializer.Foo(2)
         public void someMethod () {
         }
 
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/MultiPartTest.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/MultiPartTest.java
similarity index 99%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/MultiPartTest.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/MultiPartTest.java
index 12cbee865dd..ba3f4ab3e60 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/MultiPartTest.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/MultiPartTest.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/RoleAnnotationTest.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/RoleAnnotationTest.java
similarity index 99%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/RoleAnnotationTest.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/RoleAnnotationTest.java
index 0958f610150..5e87c6da5ac 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/RoleAnnotationTest.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/RoleAnnotationTest.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 
 import java.io.IOException;
 
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/SecuredServlet.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/SecuredServlet.java
similarity index 99%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/SecuredServlet.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/SecuredServlet.java
index d542615d356..82b187022e2 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/SecuredServlet.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/SecuredServlet.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 
 import java.io.IOException;
 import java.io.PrintWriter;
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/TestListener.java b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/TestListener.java
similarity index 99%
rename from tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/TestListener.java
rename to tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/TestListener.java
index e92f4491386..c3107dce9e6 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/TestListener.java
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/TestListener.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.test;
 import java.util.EventListener;
 
 import javax.annotation.PostConstruct;
@@ -38,7 +38,7 @@ import javax.servlet.http.HttpSessionIdListener;
 import javax.servlet.http.HttpSessionListener;
 
 
-@Foo(1)
+@com.acme.initializer.Foo(1)
 @WebListener
 public class TestListener implements HttpSessionListener,  HttpSessionAttributeListener, HttpSessionActivationListener, ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener
 {
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/META-INF/MANIFEST.MF b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e9495128c0..00000000000
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/WEB-INF/web.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/WEB-INF/web.xml
index e81ecc1ab42..c03d5c83d47 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/webapp/WEB-INF/web.xml
@@ -9,7 +9,7 @@
   Test Annotations WebApp
   
   
-    com.acme.TestListener
+    com.acme.test.TestListener
   
 
 
@@ -25,7 +25,7 @@
   
   
     RoleAnnotationTest
-    com.acme.RoleAnnotationTest
+    com.acme.test.RoleAnnotationTest
     1
     
       manager
@@ -40,7 +40,7 @@
   
   
     Multi
-    com.acme.MultiPartTest
+    com.acme.test.MultiPartTest
     2
   
 
@@ -50,7 +50,7 @@
   
 
   
-    com.acme.AnnotationTest/avgAmount
+    com.acme.test.AnnotationTest/avgAmount
     java.lang.Double
     1.25
   
diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/FragmentServlet.java b/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/fragment/FragmentServlet.java
similarity index 98%
rename from tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/FragmentServlet.java
rename to tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/fragment/FragmentServlet.java
index 236a53a122c..bfb28ec2bc6 100644
--- a/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/FragmentServlet.java
+++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/fragment/FragmentServlet.java
@@ -16,7 +16,7 @@
 //  ========================================================================
 //
 
-package com.acme;
+package com.acme.fragment;
 
 import java.io.IOException;
 
diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/resources/META-INF/web-fragment.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/resources/META-INF/web-fragment.xml
index e932576d743..a85aea5f030 100644
--- a/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/resources/META-INF/web-fragment.xml
+++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/resources/META-INF/web-fragment.xml
@@ -14,7 +14,7 @@
 
   
     AnnotationTest
-    com.acme.AnnotationTest
+    com.acme.test.AnnotationTest
     
       extra1123
     
@@ -25,7 +25,7 @@
 
   
       Fragment
-      com.acme.FragmentServlet
+      com.acme.fragment.FragmentServlet