]> source.dussan.org Git - gitblit.git/commitdiff
Fixed some null pointer bugs in the pages servlet
authorJames Moger <james.moger@gitblit.com>
Wed, 11 Jan 2012 21:18:25 +0000 (16:18 -0500)
committerJames Moger <james.moger@gitblit.com>
Wed, 11 Jan 2012 21:18:25 +0000 (16:18 -0500)
src/com/gitblit/PagesServlet.java

index 58d67b0e15bf6b605ea89539599ca73bb850c51b..d6304f70a6639fa7d82dacd1121816a0a97132ab 100644 (file)
@@ -159,27 +159,47 @@ public class PagesServlet extends HttpServlet {
                                }\r
                        } else {\r
                                // specific resource\r
-                               String contentType = context.getMimeType(resource);\r
-                               if (contentType.startsWith("text")) {\r
-                                       content = JGitUtils.getStringContent(r, tree, resource).getBytes(\r
-                                                       Constants.ENCODING);\r
-                               } else {\r
-                                       content = JGitUtils.getByteContent(r, tree, resource);\r
+                               try {\r
+                                       String contentType = context.getMimeType(resource);\r
+                                       if (contentType == null) {\r
+                                               contentType = "text/plain";\r
+                                       }\r
+                                       if (contentType.startsWith("text")) {\r
+                                               content = JGitUtils.getStringContent(r, tree, resource).getBytes(\r
+                                                               Constants.ENCODING);\r
+                                       } else {\r
+                                               content = JGitUtils.getByteContent(r, tree, resource);\r
+                                       }\r
+                                       response.setContentType(contentType);\r
+                               } catch (Exception e) {\r
                                }\r
-                               response.setContentType(contentType);\r
                        }\r
 \r
                        // no content, try custom 404 page\r
                        if (ArrayUtils.isEmpty(content)) {\r
-                               content = JGitUtils.getStringContent(r, tree, "404.html").getBytes(\r
-                                               Constants.ENCODING);\r
+                               String custom404 = JGitUtils.getStringContent(r, tree, "404.html");\r
+                               if (!StringUtils.isEmpty(custom404)) {\r
+                                       content = custom404.getBytes(Constants.ENCODING);\r
+                               }\r
+\r
                                // still no content\r
                                if (ArrayUtils.isEmpty(content)) {\r
-                                       content = (MessageFormat.format(\r
+                                       String str = MessageFormat.format(\r
                                                        "# Error\nSorry, the requested resource **{0}** was not found.",\r
-                                                       resource)).getBytes(Constants.ENCODING);\r
-                                       resource = "404.mkd";\r
+                                                       resource);\r
+                                       content = MarkdownUtils.transformMarkdown(str).getBytes(Constants.ENCODING);\r
                                }\r
+\r
+                               try {\r
+                                       // output the content\r
+                                       logger.warn("Pages 404: " + resource);\r
+                                       response.setStatus(HttpServletResponse.SC_NOT_FOUND);\r
+                                       response.getOutputStream().write(content);\r
+                                       response.flushBuffer();\r
+                               } catch (Throwable t) {\r
+                                       logger.error("Failed to write page to client", t);\r
+                               }\r
+                               return;\r
                        }\r
 \r
                        // check to see if we should transform markdown files\r