1 package com.atlassian.plugin.servlet;
2
3 import com.atlassian.plugin.Plugin;
4 import com.atlassian.plugin.elements.ResourceLocation;
5 import org.apache.commons.logging.Log;
6 import org.apache.commons.logging.LogFactory;
7
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10 import java.io.IOException;
11 import java.io.InputStream;
12
13 public class DownloadableClasspathResource extends AbstractDownloadableResource
14 {
15 private static final Log log = LogFactory.getLog(DownloadableClasspathResource.class);
16
17 public DownloadableClasspathResource(BaseFileServerServlet servlet, Plugin plugin, ResourceLocation resourceDescriptor, String extraPath)
18 {
19 super(servlet, plugin, resourceDescriptor, extraPath);
20 }
21
22
23 public void serveResource(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException
24 {
25 if (checkResourceNotModified(httpServletRequest, httpServletResponse))
26 return;
27
28 log.debug("Serving: " + this);
29 InputStream resourceStream = plugin.getResourceAsStream(getLocation());
30 if (resourceStream != null)
31 {
32 httpServletResponse.setContentType(getContentType());
33 ResourceDownloadUtils.serveFileImpl(httpServletResponse, resourceStream);
34
35 try
36 {
37 resourceStream.close();
38 }
39 catch (IOException e)
40 {
41 log.error("Could not close input stream on resource:", e);
42 }
43
44 }
45 else
46 {
47 log.info("Resource not found: " + this);
48 }
49 }
50
51
52 }