Add content type to package servlet
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Aug 2023 06:40:49 +0000 (08:40 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Aug 2023 06:40:49 +0000 (08:40 +0200)
org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java

index 2b2ffcb10f084ff397a38df47354a72bb7dc32cd..ca4b6f74d70f9c27603fb7aaa9cefcc60f29bfde 100644 (file)
@@ -2,7 +2,9 @@ package org.argeo.cms.servlet.internal;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.FileNameMap;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.Collection;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -26,9 +28,15 @@ import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.framework.wiring.FrameworkWiring;
 import org.osgi.resource.Requirement;
 
+/**
+ * Publishes client-side web resources (JavaScript, HTML, CSS, images, etc.)
+ * from the OSGi runtime.
+ */
 public class PkgServlet extends HttpServlet {
        private static final long serialVersionUID = 7660824185145214324L;
 
+       private static FileNameMap fileNameMap = URLConnection.getFileNameMap();
+
        private BundleContext bundleContext = FrameworkUtil.getBundle(PkgServlet.class).getBundleContext();
 
        @Override
@@ -50,6 +58,10 @@ public class PkgServlet extends HttpServlet {
                        throw new IllegalArgumentException("Unsupported path length " + pathInfo);
                }
 
+               // content type
+               String contentType = fileNameMap.getContentTypeFor(file);
+               resp.setContentType(contentType);
+
                FrameworkWiring frameworkWiring = bundleContext.getBundle(0).adapt(FrameworkWiring.class);
                String filter;
                if (versionStr == null) {