Refactor XDocServlet: Move retrieval of revision into helper method

Change-Id: I567bc93450d862a38fb2b84c4f83217ac1661c73
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 fcdc08f..e6fa865 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -126,23 +126,7 @@
       }
 
       ProjectControl projectControl = projectControlFactory.validateFor(key.project);
-      String rev = key.revision;
-      if (rev == null) {
-        rev = cfg.getIndexRef();
-      }
-      if (Constants.HEAD.equals(rev)) {
-        rev = getHead.get().apply(new ProjectResource(projectControl));
-      } else  {
-        if (!ObjectId.isId(rev)) {
-          if (!rev.startsWith(Constants.R_REFS)) {
-            rev = Constants.R_HEADS + rev;
-          }
-          if (!projectControl.controlForRef(rev).isVisible()) {
-            Resource.NOT_FOUND.send(req, res);
-            return;
-          }
-        }
-      }
+      String rev = getRevision(cfg, key.revision, projectControl);
 
       Repository repo = repoManager.openRepository(key.project);
       try {
@@ -274,6 +258,28 @@
     return "image".equals(mimeType.getMediaType());
   }
 
+  private String getRevision(XDocProjectConfig cfg, String revision,
+      ProjectControl projectControl) throws ResourceNotFoundException,
+      AuthException, IOException {
+    String rev = revision;
+    if (rev == null) {
+      rev = cfg.getIndexRef();
+    }
+    if (Constants.HEAD.equals(rev)) {
+      rev = getHead.get().apply(new ProjectResource(projectControl));
+    } else {
+      if (!ObjectId.isId(rev)) {
+        if (!rev.startsWith(Constants.R_REFS)) {
+          rev = Constants.R_HEADS + rev;
+        }
+        if (!projectControl.controlForRef(rev).isVisible()) {
+          throw new ResourceNotFoundException();
+        }
+      }
+    }
+    return rev;
+  }
+
   private static String computeETag(Project.NameKey project, ObjectId revId,
       String file) {
     return Hashing.md5().newHasher()