This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-launchpad-base.git


The following commit(s) were added to refs/heads/master by this push:
     new 9785119  SLING-8301 : Support servlet contains with servlet api 4.0
9785119 is described below

commit 978511903cf3be86716fd7fd42682a77c77bc9db
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Mar 4 11:15:11 2019 +0100

    SLING-8301 : Support servlet contains with servlet api 4.0
---
 .../base/webapp/SlingServletDelegate.java          | 23 +++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
 
b/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
index 818c514..4fe6f4b 100644
--- 
a/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
+++ 
b/src/main/java/org/apache/sling/launchpad/base/webapp/SlingServletDelegate.java
@@ -320,6 +320,20 @@ public class SlingServletDelegate extends GenericServlet 
implements Launcher {
 
     // ---------- Configuration Loading 
----------------------------------------
 
+    private String calculateServletPackages(final String servletVersion, final 
int majorVersion) {
+        final String servlet2Packages = 
"javax.servlet;javax.servlet.http;javax.servlet.resources";
+        final String servlet3Packages = servlet2Packages + 
";javax.servlet.annotation;javax.servlet.descriptor";
+        if (majorVersion < 3) {
+            return servlet2Packages.concat(";version=").concat(servletVersion);
+        } else if (majorVersion < 4) {
+            return 
servlet2Packages.concat(";version=2.6,").concat(servlet3Packages).concat(";version=")
+                    .concat(servletVersion);
+        }
+        return 
servlet2Packages.concat(";version=2.6,").concat(servlet3Packages).concat(";version=3.1,")
+                
.concat(servlet3Packages).concat(";version=").concat(servletVersion);
+
+    }
+
     /**
      * Loads the configuration properties in the configuration property file
      * associated with the framework installation; these properties are
@@ -343,17 +357,12 @@ public class SlingServletDelegate extends GenericServlet 
implements Launcher {
         // Try to load it from one of these places.
         Map<String, String> props = new HashMap<String, String>();
 
-        // The following property must start with a comma!
         final String servletVersion = getServletContext().getMajorVersion() + 
"." +
                                       getServletContext().getMinorVersion();
-        String packages = 
",javax.servlet;javax.servlet.http;javax.servlet.resources";
-        if ( getServletContext().getMajorVersion() >= 3 ) {
-            // servlet 3.x adds new packages and we should export as 2.6 and 
3.x
-            packages = packages + "; version=2.6" + packages + 
";javax.servlet.annotation;javax.servlet.descriptor";
-        }
+        // This property must start with a comma!
         props.put(
                  Sling.PROP_SYSTEM_PACKAGES,
-                 packages + "; version=" + servletVersion);
+                ",".concat(calculateServletPackages(servletVersion, 
getServletContext().getMajorVersion())));
         // extra capabilities
         final String servletCaps = 
"osgi.contract;osgi.contract=JavaServlet;version:Version=\" " + servletVersion 
+ "\";" +
                         
"uses:=\"javax.servlet,javax.servlet.http,javax.servlet.descriptor,javax.servlet.annotation\"";

Reply via email to