From 964f2eab2ed2f3cd3749e8114e80fa9e2ff10a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 28 Sep 2018 11:18:36 +0200 Subject: [PATCH] Remove duplication --- .../java/sonia/scm/repository/GitUtil.java | 95 ++++++------------- 1 file changed, 31 insertions(+), 64 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java index ed698ef00e..d317f07445 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitUtil.java @@ -63,8 +63,12 @@ import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.Map; +import java.util.Optional; import java.util.concurrent.TimeUnit; +import static java.util.Optional.of; +import static java.util.Optional.ofNullable; + //~--- JDK imports ------------------------------------------------------------ /** @@ -500,76 +504,16 @@ public final class GitUtil } public static String getRepositoryHeadBranchName(org.eclipse.jgit.lib.Repository repo) { - Map refs = repo.getAllRefs(); - Ref lastHeadRef = null; - - for (Map.Entry e : refs.entrySet()) { - String key = e.getKey(); - - if (REF_HEAD.equals(key)) { - if (e.getValue().isSymbolic() && isBranch(e.getValue().getTarget().getName())) { - return getBranch(e.getValue().getTarget()); - } - } else if (key.startsWith(REF_HEAD_PREFIX)) { - if (REF_MASTER.equals(key.substring(REF_HEAD_PREFIX.length()))) { - return REF_MASTER; - } else { - lastHeadRef = e.getValue(); - } - } - } - - if (lastHeadRef == null) { - return null; - } else { - return getBranch(lastHeadRef); - } + return getRepositoryHeadRef(repo).map(GitUtil::getBranch).orElse(null); } - /** - * Method description - * - * - * @param repo - * - * @return - * - * @throws IOException - */ public static ObjectId getRepositoryHead(org.eclipse.jgit.lib.Repository repo) throws IOException { - ObjectId id = null; - String head = null; - Map refs = repo.getAllRefs(); + Optional headRef = getRepositoryHeadRef(repo); - for (Map.Entry e : refs.entrySet()) - { - String key = e.getKey(); - - if (REF_HEAD.equals(key)) - { - head = REF_HEAD; - id = e.getValue().getObjectId(); - - break; - } - else if (key.startsWith(REF_HEAD_PREFIX)) - { - id = e.getValue().getObjectId(); - head = key.substring(REF_HEAD_PREFIX.length()); - - if (REF_MASTER.equals(head)) - { - break; - } - } - } - - if (id == null) - { - id = repo.resolve(Constants.HEAD); - } + String head = headRef.map(GitUtil::getBranch).orElse(null); + ObjectId id = headRef.map(Ref::getObjectId).orElse(repo.resolve(Constants.HEAD)); if (logger.isDebugEnabled()) { @@ -590,6 +534,29 @@ public final class GitUtil return id; } + public static Optional getRepositoryHeadRef(org.eclipse.jgit.lib.Repository repo) { + Map refs = repo.getAllRefs(); + Ref lastHeadRef = null; + + for (Map.Entry e : refs.entrySet()) { + String key = e.getKey(); + + if (REF_HEAD.equals(key)) { + if (e.getValue().isSymbolic() && isBranch(e.getValue().getTarget().getName())) { + return of(e.getValue().getTarget()); + } + } else if (key.startsWith(REF_HEAD_PREFIX)) { + if (REF_MASTER.equals(key.substring(REF_HEAD_PREFIX.length()))) { + return of(e.getValue()); + } else { + lastHeadRef = e.getValue(); + } + } + } + + return ofNullable(lastHeadRef); + } + /** * Method description *