]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java
Merge tag 'v2.3.23' into testing
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / servlet / internal / PkgServlet.java
index c762b67ecc36a610b3e24508861cdcf4655c064b..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;
@@ -12,9 +14,9 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.io.IOUtils;
+import org.argeo.cms.osgi.FilterRequirement;
 import org.argeo.cms.osgi.PublishNamespace;
-import org.argeo.osgi.util.FilterRequirement;
+import org.argeo.cms.util.StreamUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
@@ -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) {
@@ -126,7 +138,7 @@ public class PkgServlet extends HttpServlet {
                }
 
                try (InputStream in = internalURL.openStream()) {
-                       IOUtils.copy(in, resp.getOutputStream());
+                       StreamUtils.copy(in, resp.getOutputStream());
                }
        }