X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ee%2Fsrc%2Forg%2Fargeo%2Fcms%2Fservlet%2Finternal%2FPkgServlet.java;h=ca4b6f74d70f9c27603fb7aaa9cefcc60f29bfde;hb=9e6715d360fb29bb817ecaf6d49f0c8a3cc014f5;hp=c762b67ecc36a610b3e24508861cdcf4655c064b;hpb=d2bca81ff63496bf1d879f4cbcd6a531f598e69c;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java b/org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java index c762b67ec..ca4b6f74d 100644 --- a/org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java +++ b/org.argeo.cms.ee/src/org/argeo/cms/servlet/internal/PkgServlet.java @@ -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()); } }