From b3b16374d3de9f054f51199895bcb226f1f84819 Mon Sep 17 00:00:00 2001 From: Florian Heck <florian.heck@hotmail.de> Date: Thu, 20 Oct 2016 23:45:49 +0200 Subject: [PATCH] added additional check in status parsing --- .../uni_passau/fim/seibt/gitwrapper/repo/Repository.java | 4 ++-- src/de/uni_passau/fim/seibt/gitwrapper/repo/Status.java | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Repository.java b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Repository.java index 03b525f..5642588 100644 --- a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Repository.java +++ b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Repository.java @@ -552,7 +552,7 @@ public class Repository { */ public Optional<Status> getStatus() { Optional<ExecRes> output = git.exec(dir, "status", "-z"); - Function<ExecRes, Status> toStatus = execRes -> { + Function<ExecRes, Optional<Status>> toStatus = execRes -> { if (git.failed(execRes)) { LOG.warning(() -> String.format("Failed to get status information for repo %s", this)); @@ -562,7 +562,7 @@ public class Repository { return Status.parseStatus(this, execRes.stdOut); }; - return output.map(toStatus); + return output.flatMap(toStatus); } /** diff --git a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Status.java b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Status.java index 1249a81..04d8087 100644 --- a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Status.java +++ b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Status.java @@ -5,6 +5,7 @@ import java.nio.file.Paths; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -81,9 +82,9 @@ public class Status { * * @param repo the repo this status report is from * @param gitOutput the status report from git - * @return a {@link Status} object, representing the status read from the git output + * @return optionally a {@link Status} object, representing the status read from the git output */ - static Status parseStatus(Repository repo, String gitOutput) { + static Optional<Status> parseStatus(Repository repo, String gitOutput) { Map<Path, String> changed = new HashMap<>(); Map<Path, String> unmerged = new HashMap<>(); Matcher matcher = STATUS_ENTRY.matcher(gitOutput); @@ -98,6 +99,6 @@ public class Status { } } - return new Status(repo.getCurrentHEAD().get().getId(), changed, unmerged); + return repo.getCurrentHEAD().map(head -> new Status(head.id, changed, unmerged)); } } -- GitLab