SLING-8301 : Support servlet contains with servlet api 4.0
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 @@
 
     // ---------- 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 @@
         // 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\"";