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) {