View Javadoc

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  }