1 package org
.argeo
.slc
.web
.mvc
.provisioning
;
3 import java
.io
.IOException
;
4 import java
.util
.StringTokenizer
;
6 import javax
.servlet
.ServletException
;
7 import javax
.servlet
.http
.HttpServletRequest
;
8 import javax
.servlet
.http
.HttpServletResponse
;
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
;
15 public class PluginHandler
implements HttpRequestHandler
{
16 private final static Log log
= LogFactory
.getLog(PluginHandler
.class);
18 private FileProvider provider
;
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());
32 String path
= request
.getPathInfo();
34 if (log
.isDebugEnabled())
35 log
.debug("Request " + path
);
37 StringTokenizer stS
= new StringTokenizer(path
, "/");
38 String distribution
= stS
.nextToken();
39 stS
.nextToken();// plugins
40 String fileName
= stS
.nextToken();
42 int ind_
= fileName
.indexOf('_');
45 moduleName
= fileName
.substring(0, ind_
);
47 throw new SlcException("Cannot determine version for " + fileName
);
49 String versionAndExtension
= fileName
.substring(ind_
+ 1);
50 int indExt
= versionAndExtension
.lastIndexOf('.');
51 String moduleVersion
= versionAndExtension
.substring(0, indExt
);
53 provider
.read(distribution
, moduleName
, moduleVersion
, response
57 public void setProvider(FileProvider provider
) {
58 this.provider
= provider
;