]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/provisioning/BundleHandler.java
Improve modular distributions ordering
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / provisioning / BundleHandler.java
1 package org.argeo.slc.web.mvc.provisioning;
2
3 import java.io.IOException;
4
5 import javax.servlet.ServletException;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.apache.commons.io.IOUtils;
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.argeo.slc.StreamReadable;
13 import org.argeo.slc.UnsupportedException;
14 import org.argeo.slc.build.Distribution;
15 import org.argeo.slc.build.ModularDistribution;
16 import org.springframework.web.HttpRequestHandler;
17
18 public class BundleHandler implements HttpRequestHandler {
19 private final static Log log = LogFactory.getLog(BundleHandler.class);
20
21 public void handleRequest(HttpServletRequest request,
22 HttpServletResponse response) throws ServletException, IOException {
23 String path = request.getPathInfo();
24
25 if (log.isDebugEnabled())
26 log.debug("Bundle jar Requested: " + path);
27 response.setContentType("application/java-archive");
28
29 String moduleName = request.getParameter("moduleName");
30 if (moduleName == null)
31 moduleName = request.getAttribute("moduleName").toString();
32 String moduleVersion = request.getParameter("moduleVersion");
33 if (moduleVersion == null)
34 moduleVersion = request.getAttribute("moduleVersion").toString();
35
36 ModularDistribution modularDistribution = (ModularDistribution) request
37 .getAttribute("modularDistribution");
38 Distribution distribution = modularDistribution.getModuleDistribution(
39 moduleName, moduleVersion);
40 if (distribution instanceof StreamReadable)
41 IOUtils.copy(((StreamReadable) distribution).getInputStream(),
42 response.getOutputStream());
43 else
44 throw new UnsupportedException("distribution", distribution);
45 }
46 }