]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/provisioning/PluginHandler.java
7f44d0d20d6e7c038f4050ce8656d3a20a3e49b6
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / provisioning / PluginHandler.java
1 package org.argeo.slc.web.mvc.provisioning;
2
3 import java.io.IOException;
4 import java.util.StringTokenizer;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.argeo.slc.SlcException;
13 import org.springframework.web.HttpRequestHandler;
14
15 public class PluginHandler implements HttpRequestHandler {
16 private final static Log log = LogFactory.getLog(PluginHandler.class);
17
18 private FileProvider provider;
19
20 public void handleRequest(HttpServletRequest request,
21 HttpServletResponse response) throws ServletException, IOException {
22 // log.debug(request.getContextPath());
23 // log.debug(request.getServletPath());
24 // log.debug(request.getPathInfo());
25 // log.debug(request.getPathTranslated());
26 // log.debug(request.getLocalName());
27 // log.debug(request.getLocalAddr());
28 // log.debug(request.getQueryString());
29 // log.debug(request.getRequestURL());
30 // log.debug(request.getRequestURI());
31
32 String path = request.getPathInfo();
33
34 if (log.isDebugEnabled())
35 log.debug("Request " + path);
36
37 StringTokenizer stS = new StringTokenizer(path, "/");
38 String distribution = stS.nextToken();
39 stS.nextToken();// plugins
40 String fileName = stS.nextToken();
41
42 int ind_ = fileName.indexOf('_');
43 String moduleName;
44 if (ind_ > -1)
45 moduleName = fileName.substring(0, ind_);
46 else
47 throw new SlcException("Cannot determine version for " + fileName);
48
49 String versionAndExtension = fileName.substring(ind_ + 1);
50 int indExt = versionAndExtension.lastIndexOf('.');
51 String moduleVersion = versionAndExtension.substring(0, indExt);
52
53 provider.read(distribution, moduleName, moduleVersion, response
54 .getOutputStream());
55 }
56
57 public void setProvider(FileProvider provider) {
58 this.provider = provider;
59 }
60
61 }