Refactor XDocServlet: Move ETag check into helper method Change-Id: If893c54a1463e54e13d52b551b3c66d87b6199d5 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 2e83484..78520f7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -136,14 +136,9 @@ validateCanReadCommit(repo, projectControl, revId); } - String eTag = null; - String receivedETag = req.getHeader(HttpHeaders.IF_NONE_MATCH); - if (receivedETag != null) { - eTag = computeETag(key.project, revId, key.file); - if (eTag.equals(receivedETag)) { - res.sendError(SC_NOT_MODIFIED); - return; - } + if (isResourceNotModified(req, key, revId)) { + res.sendError(SC_NOT_MODIFIED); + return; } Resource rsc; @@ -156,10 +151,8 @@ } if (rsc != Resource.NOT_FOUND) { - res.setHeader( - HttpHeaders.ETAG, - MoreObjects.firstNonNull(eTag, - computeETag(key.project, revId, key.file))); + res.setHeader(HttpHeaders.ETAG, + computeETag(key.project, revId, key.file)); } CacheHeaders.setCacheablePrivate(res, 7, TimeUnit.DAYS, false); rsc.send(req, res); @@ -290,6 +283,15 @@ } } + private static boolean isResourceNotModified(HttpServletRequest req, + ResourceKey key, ObjectId revId) { + String receivedETag = req.getHeader(HttpHeaders.IF_NONE_MATCH); + if (receivedETag != null) { + return receivedETag.equals(computeETag(key.project, revId, key.file)); + } + return false; + } + private static String computeETag(Project.NameKey project, ObjectId revId, String file) { return Hashing.md5().newHasher()