James Moger
2013-11-18 cacf8bff097fbb66a7be1bfe267b5da2605145f8
src/main/java/com/gitblit/LogoServlet.java
@@ -21,45 +21,54 @@
import java.io.InputStream;
import java.io.OutputStream;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gitblit.manager.IRuntimeManager;
/**
 * Handles requests for logo.png
 *
 *
 * @author James Moger
 *
 *
 */
@Singleton
public class LogoServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;
   private static final long lastModified = System.currentTimeMillis();
   public LogoServlet() {
   private final IRuntimeManager runtimeManager;
   @Inject
   public LogoServlet(IRuntimeManager runtimeManager) {
      super();
      this.runtimeManager = runtimeManager;
   }
   @Override
   protected long getLastModified(HttpServletRequest req) {
      File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
      File file = runtimeManager.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
      if (file.exists()) {
         return Math.max(lastModified, file.lastModified());
      } else {
         return lastModified;
      }
   }
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
      InputStream is = null;
      try {
         String contentType = null;
         File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
         File file = runtimeManager.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
         if (file.exists()) {
            // custom logo
            ServletContext context = request.getSession().getServletContext();
@@ -71,11 +80,12 @@
            // default logo
            response.setDateHeader("Last-Modified", lastModified);
            is = getClass().getResourceAsStream("/logo.png");
         }
         }
         if (contentType == null) {
            contentType = "image/png";
         }
         response.setContentType(contentType);
         response.setHeader("Cache-Control", "public, max-age=3600, must-revalidate");
         OutputStream os = response.getOutputStream();
         byte[] buf = new byte[4096];
         int bytesRead = is.read(buf);
@@ -87,7 +97,7 @@
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         if(is != null) {
         if (is != null) {
            is.close();
         }
      }