Refactor: Move formatter checks into getFormatter method This makes the service method in XDocServlet leaner and easier to read. Change-Id: I5f92a6c205aa15de05acc12fbf65ac42c6906d49 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java index 2b981cb..70f9598 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -126,21 +126,8 @@ MimeType mimeType = fileTypeRegistry.getMimeType(key.file, null); mimeType = new MimeType(FileContentUtil.resolveContentType( state, key.file, FileMode.FILE, mimeType.toString())); - FormatterProvider formatter = getFormatter(req, key); - if (isSafeImage(mimeType)) { - if (key.diffMode == DiffMode.NO_DIFF) { - // always return plain images when no diff is requested, - // use formatter on images only for diff mode - formatter = null; - } - } else { - if (formatter == null) { - throw new ResourceNotFoundException(); - } - } - if (formatter == null && !isSafeImage(mimeType)) { - throw new ResourceNotFoundException(); - } + FormatterProvider formatter = getFormatter(req, key, mimeType); + validateDiffMode(key, formatter, mimeType); @@ -262,13 +249,29 @@ return state; } - private FormatterProvider getFormatter(HttpServletRequest req, ResourceKey key) - throws ResourceNotFoundException { + private FormatterProvider getFormatter(HttpServletRequest req, + ResourceKey key, MimeType mimeType) throws ResourceNotFoundException { + FormatterProvider formatter; if (req.getParameter("raw") != null) { - return formatters.getRawFormatter(); + formatter = formatters.getRawFormatter(); } else { - return formatters.get(getProject(key), key.file); + formatter = formatters.get(getProject(key), key.file); } + if (isSafeImage(mimeType)) { + if (key.diffMode == DiffMode.NO_DIFF) { + // always return plain images when no diff is requested, + // use formatter on images only for diff mode + formatter = null; + } + } else { + if (formatter == null) { + throw new ResourceNotFoundException(); + } + } + if (formatter == null && !isSafeImage(mimeType)) { + throw new ResourceNotFoundException(); + } + return formatter; } private boolean isSafeImage(MimeType mimeType) {