From c4f8afc178cc0164acfde273c5f8efebc21e8ea8 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Tue, 8 Dec 2020 16:24:29 +0100 Subject: [PATCH] Fix Servlet 5 Schema redirects (#5765) * Issue #5752 Fix servlet 5 redirects; update default servlet version Signed-off-by: Jan Bartel --- .../src/main/webapp/WEB-INF/web.xml | 6 +-- .../src/main/webapp/WEB-INF/web.xml | 6 +-- .../main/resources/META-INF/web-fragment.xml | 6 +-- .../QuickStartGeneratorConfiguration.java | 6 ++- .../jetty/server/handler/ContextHandler.java | 2 +- .../eclipse/jetty/webapp/WebDescriptor.java | 45 ++++++++++++++----- 6 files changed, 48 insertions(+), 23 deletions(-) diff --git a/demos/demo-jetty-webapp/src/main/webapp/WEB-INF/web.xml b/demos/demo-jetty-webapp/src/main/webapp/WEB-INF/web.xml index 0ca1b4520552..da7b2ce6566b 100644 --- a/demos/demo-jetty-webapp/src/main/webapp/WEB-INF/web.xml +++ b/demos/demo-jetty-webapp/src/main/webapp/WEB-INF/web.xml @@ -1,10 +1,10 @@ + version="5.0"> Test WebApp diff --git a/demos/demo-spec/demo-spec-webapp/src/main/webapp/WEB-INF/web.xml b/demos/demo-spec/demo-spec-webapp/src/main/webapp/WEB-INF/web.xml index f5e0e3fa8a45..cd25084cad7e 100644 --- a/demos/demo-spec/demo-spec-webapp/src/main/webapp/WEB-INF/web.xml +++ b/demos/demo-spec/demo-spec-webapp/src/main/webapp/WEB-INF/web.xml @@ -1,10 +1,10 @@ + version="5.0"> Test Annotations WebApp diff --git a/demos/demo-spec/demo-web-fragment/src/main/resources/META-INF/web-fragment.xml b/demos/demo-spec/demo-web-fragment/src/main/resources/META-INF/web-fragment.xml index dd5f712bcfcb..68c22d85eccc 100644 --- a/demos/demo-spec/demo-web-fragment/src/main/resources/META-INF/web-fragment.xml +++ b/demos/demo-spec/demo-web-fragment/src/main/resources/META-INF/web-fragment.xml @@ -1,10 +1,10 @@ + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-fragment_5_0.xsd" + version="5.0"> FragmentA 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 456c59f11c53..b3e223735937 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 @@ -154,9 +154,11 @@ public void generateQuickStartWebXml(WebAppContext context, OutputStream stream) Map webappAttr = new HashMap<>(); int major = context.getServletContext().getEffectiveMajorVersion(); int minor = context.getServletContext().getEffectiveMinorVersion(); - webappAttr.put("xmlns", "http://xmlns.jcp.org/xml/ns/javaee"); + String ns = (major < 5) ? "http://xmlns.jcp.org/xml/ns/javaee" : "https://jakarta.ee/xml/ns/jakartaee"; + + webappAttr.put("xmlns", ns); webappAttr.put("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); - webappAttr.put("xsi:schemaLocation", "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_" + (major + "_" + minor) + ".xsd"); + webappAttr.put("xsi:schemaLocation", String.format("%s %s/web-app_%d_%d.xsd", ns, ns, major, minor)); webappAttr.put("metadata-complete", Boolean.toString(context.getMetaData().isMetaDataComplete())); webappAttr.put("version", major + "." + minor); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java index 0c0b2d65ad03..9b127f0e0b5a 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java @@ -115,7 +115,7 @@ @ManagedObject("URI Context") public class ContextHandler extends ScopedHandler implements Attributes, Graceful { - public static final int SERVLET_MAJOR_VERSION = 4; + public static final int SERVLET_MAJOR_VERSION = 5; public static final int SERVLET_MINOR_VERSION = 0; public static final Class[] SERVLET_LISTENER_TYPES = { diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebDescriptor.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebDescriptor.java index 6b261f0c0aac..f7df5184e111 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebDescriptor.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebDescriptor.java @@ -109,34 +109,40 @@ void mapResources() final URL javaee6 = Loader.getResource("jakarta/servlet/resources/javaee_6.xsd"); final URL javaee7 = Loader.getResource("jakarta/servlet/resources/javaee_7.xsd"); final URL javaee8 = Loader.getResource("jakarta/servlet/resources/javaee_8.xsd"); + final URL jakartaee9 = Loader.getResource("jakarta/servlet/resources/jakartaee_9.xsd"); final URL webapp24xsd = Loader.getResource("jakarta/servlet/resources/web-app_2_4.xsd"); final URL webapp25xsd = Loader.getResource("jakarta/servlet/resources/web-app_2_5.xsd"); final URL webapp30xsd = Loader.getResource("jakarta/servlet/resources/web-app_3_0.xsd"); final URL webapp31xsd = Loader.getResource("jakarta/servlet/resources/web-app_3_1.xsd"); final URL webapp40xsd = Loader.getResource("jakarta/servlet/resources/web-app_4_0.xsd"); - + final URL webapp50xsd = Loader.getResource("jakarta/servlet/resources/web-app_5_0.xsd"); + + final URL webcommon30xsd = Loader.getResource("jakarta/servlet/resources/web-common_3_0.xsd"); final URL webcommon31xsd = Loader.getResource("jakarta/servlet/resources/web-common_3_1.xsd"); final URL webcommon40xsd = Loader.getResource("jakarta/servlet/resources/web-common_4_0.xsd"); - + final URL webcommon50xsd = Loader.getResource("jakarta/servlet/resources/web-common_5_0.xsd"); + final URL webfragment30xsd = Loader.getResource("jakarta/servlet/resources/web-fragment_3_0.xsd"); final URL webfragment31xsd = Loader.getResource("jakarta/servlet/resources/web-fragment_3_1.xsd"); final URL webfragment40xsd = Loader.getResource("jakarta/servlet/resources/web-fragment_4_0.xsd"); - + final URL webfragment50xsd = Loader.getResource("jakarta/servlet/resources/web-fragment_5_0.xsd"); + final URL schemadtd = Loader.getResource("jakarta/servlet/resources/XMLSchema.dtd"); final URL xmlxsd = Loader.getResource("jakarta/servlet/resources/xml.xsd"); final URL webservice11xsd = Loader.getResource("jakarta/servlet/resources/j2ee_web_services_client_1_1.xsd"); final URL webservice12xsd = Loader.getResource("jakarta/servlet/resources/javaee_web_services_client_1_2.xsd"); final URL webservice13xsd = Loader.getResource("jakarta/servlet/resources/javaee_web_services_client_1_3.xsd"); final URL webservice14xsd = Loader.getResource("jakarta/servlet/resources/javaee_web_services_client_1_4.xsd"); + final URL webservice20xsd = Loader.getResource("jakarta/servlet/resources/jakartaee_web_services_client_2_0.xsd"); final URL datatypesdtd = Loader.getResource("jakarta/servlet/resources/datatypes.dtd"); URL jsp20xsd = null; URL jsp21xsd = null; URL jsp22xsd = null; URL jsp23xsd = null; - + URL jsp30xsd = null; try { //try both jakarta/servlet/resources and jakarta/servlet/jsp/resources to load @@ -144,6 +150,7 @@ void mapResources() jsp21xsd = Loader.getResource("jakarta/servlet/resources/jsp_2_1.xsd"); jsp22xsd = Loader.getResource("jakarta/servlet/resources/jsp_2_2.xsd"); jsp23xsd = Loader.getResource("jakarta/servlet/resources/jsp_2_3.xsd"); + jsp30xsd = Loader.getResource("jakarta/servlet/resources/jsp_3_0.xsd"); } catch (Exception e) { @@ -159,6 +166,8 @@ void mapResources() jsp22xsd = Loader.getResource("jakarta/servlet/jsp/resources/jsp_2_2.xsd"); if (jsp23xsd == null) jsp23xsd = Loader.getResource("jakarta/servlet/jsp/resources/jsp_2_3.xsd"); + if (jsp30xsd == null) + jsp30xsd = Loader.getResource("jakarta/servlet/jsp/resources/jsp_3_0.xsd"); } redirectEntity("web-app_2_2.dtd", dtd22); @@ -177,13 +186,16 @@ void mapResources() redirectEntity("http://java.sun.com/xml/ns/javaee/jsp_2_2.xsd", jsp22xsd); redirectEntity("jsp_2_3.xsd", jsp23xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/jsp_2_3.xsd", jsp23xsd); - + redirectEntity("jsp_3_0.xsd", jsp30xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/jsp_3_0.xsd", jsp30xsd); + redirectEntity("j2ee_1_4.xsd", j2ee14xsd); redirectEntity("http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd", j2ee14xsd); redirectEntity("http://java.sun.com/xml/ns/javaee/javaee_5.xsd", javaee5); redirectEntity("http://java.sun.com/xml/ns/javaee/javaee_6.xsd", javaee6); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/javaee_7.xsd", javaee7); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/javaee_8.xsd", javaee8); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/javaee_9.xsd", jakartaee9); redirectEntity("web-common_3_0.xsd", webcommon30xsd); redirectEntity("http://java.sun.com/xml/ns/javaee/web-common_3_0.xsd", webcommon30xsd); @@ -191,7 +203,9 @@ void mapResources() redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-common_3_1.xsd", webcommon31xsd); redirectEntity("web-common_4_0.xsd", webcommon40xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-common_4_0.xsd", webcommon40xsd); - + redirectEntity("web-common_5_0.xsd", webcommon50xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/web-common_5_0.xsd", webcommon50xsd); + redirectEntity("web-app_2_4.xsd", webapp24xsd); redirectEntity("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd", webapp24xsd); redirectEntity("web-app_2_5.xsd", webapp25xsd); @@ -202,21 +216,28 @@ void mapResources() redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd", webapp31xsd); redirectEntity("web-app_4_0.xsd", webapp40xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd", webapp40xsd); - - // Handle linewrap hyphon error in PDF spec + redirectEntity("web-app_5_0.xsd", webapp50xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd", webapp50xsd); + + // Handle linewrap hyphen error in PDF spec redirectEntity("webapp_4_0.xsd", webapp40xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/webapp_4_0.xsd", webapp40xsd); - + redirectEntity("webapp_5_0.xsd", webapp50xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/webapp_5_0.xsd", webapp50xsd); + // handle jakartaee coordinates redirectEntity("http://xmlns.eclipse.org/xml/ns/jakartaee/web-app_4_0.xsd", webapp40xsd); - + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd", webapp50xsd); + redirectEntity("web-fragment_3_0.xsd", webfragment30xsd); redirectEntity("http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd", webfragment30xsd); redirectEntity("web-fragment_3_1.xsd", webfragment31xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd", webfragment31xsd); redirectEntity("web-fragment_4_0.xsd", webfragment40xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd", webfragment40xsd); - + redirectEntity("web-fragment_5_0.xsd", webfragment50xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/web-fragment_5_0.xsd", webfragment50xsd); + redirectEntity("xml.xsd", xmlxsd); redirectEntity("http://www.w3.org/2001/xml.xsd", xmlxsd); redirectEntity("datatypes.dtd", datatypesdtd); @@ -230,6 +251,8 @@ void mapResources() redirectEntity("http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_3.xsd", webservice13xsd); redirectEntity("javaee_web_services_client_1_4.xsd", webservice14xsd); redirectEntity("http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_client_1_4.xsd", webservice14xsd); + redirectEntity("jakartaee_web_services_client_2_0.xsd", webservice20xsd); + redirectEntity("https://jakarta.ee/xml/ns/jakartaee/jakartaee_web_services_client_2_0.xsd", webservice20xsd); } };