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