diff options
author | Ivan Frade <ifrade@google.com> | 2024-11-20 14:06:46 -0800 |
---|---|---|
committer | Ivan Frade <ifrade@google.com> | 2024-11-20 14:13:56 -0800 |
commit | 4618d19629f2097f7a5c706c109284d6466596be (patch) | |
tree | 3f2b2351ad9ce375a74b52c27da46ca8ae6a4ccf /org.eclipse.jgit | |
parent | ee8a4149135284e2319cb5c64de8387a3334bcdd (diff) | |
download | jgit-4618d19629f2097f7a5c706c109284d6466596be.tar.gz jgit-4618d19629f2097f7a5c706c109284d6466596be.zip |
GitTimeParser: Fix multiple errorprone and style comments
This code came from GitDateParser and inherited these issues. It is a
good time to fix them:
* Use always {} in if and fors (eclipse guide)
* Use the more efficient EnumMap for the formatters
* variable.equals(CONSTANT) instead of CONSTANT.equals(var)
https://errorprone.info/bugpattern/YodaCondition
* private constructor to prevent instantiations of a utility classes
https://errorprone.info/bugpattern/PrivateConstructorForUtilityClass
* methods named in camelCase
* Use string.split(..., int)
https://errorprone.info/bugpattern/StringSplitter
* Initialize variable in first use
Change-Id: I0ae70ad9befc66fa9c057af135f2b0b2dab3869a
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/util/GitTimeParser.java | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitTimeParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitTimeParser.java index e238e3e92e..7d00fcd5ed 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/GitTimeParser.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/GitTimeParser.java @@ -17,9 +17,10 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; -import java.util.HashMap; +import java.util.EnumMap; import java.util.Map; +import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.internal.JGitText; /** @@ -35,7 +36,8 @@ import org.eclipse.jgit.internal.JGitText; */ public class GitTimeParser { - private static final Map<ParseableSimpleDateFormat, DateTimeFormatter> formatCache = new HashMap<>(); + private static final Map<ParseableSimpleDateFormat, DateTimeFormatter> formatCache = new EnumMap<>( + ParseableSimpleDateFormat.class); // An enum of all those formats which this parser can parse with the help of // a DateTimeFormatter. There are other formats (e.g. the relative formats @@ -59,6 +61,10 @@ public class GitTimeParser { } } + private GitTimeParser() { + // This class is not supposed to be instantiated + } + /** * Parses a string into a {@link java.time.LocalDateTime} using the default * locale. Since this parser also supports relative formats (e.g. @@ -95,16 +101,17 @@ public class GitTimeParser { static LocalDateTime parse(String dateStr, LocalDateTime now) throws ParseException { dateStr = dateStr.trim(); - LocalDateTime ret; - if ("never".equalsIgnoreCase(dateStr)) //$NON-NLS-1$ + if (dateStr.equalsIgnoreCase("never")) { //$NON-NLS-1$ return LocalDateTime.MAX; - ret = parse_relative(dateStr, now); - if (ret != null) + } + LocalDateTime ret = parseRelative(dateStr, now); + if (ret != null) { return ret; + } for (ParseableSimpleDateFormat f : ParseableSimpleDateFormat.values()) { try { - return parse_simple(dateStr, f); + return parseSimple(dateStr, f); } catch (DateTimeParseException e) { // simply proceed with the next parser } @@ -112,8 +119,9 @@ public class GitTimeParser { ParseableSimpleDateFormat[] values = ParseableSimpleDateFormat.values(); StringBuilder allFormats = new StringBuilder("\"") //$NON-NLS-1$ .append(values[0].formatStr); - for (int i = 1; i < values.length; i++) + for (int i = 1; i < values.length; i++) { allFormats.append("\", \"").append(values[i].formatStr); //$NON-NLS-1$ + } allFormats.append("\""); //$NON-NLS-1$ throw new ParseException( MessageFormat.format(JGitText.get().cannotParseDate, dateStr, @@ -122,10 +130,11 @@ public class GitTimeParser { } // tries to parse a string with the formats supported by DateTimeFormatter - private static LocalDateTime parse_simple(String dateStr, + private static LocalDateTime parseSimple(String dateStr, ParseableSimpleDateFormat f) throws DateTimeParseException { DateTimeFormatter dateFormat = formatCache.computeIfAbsent(f, - format -> DateTimeFormatter.ofPattern(f.formatStr) + format -> DateTimeFormatter + .ofPattern(f.formatStr) .withLocale(SystemReader.getInstance().getLocale())); TemporalAccessor parsed = dateFormat.parse(dateStr); return parsed.isSupported(ChronoField.HOUR_OF_DAY) @@ -135,25 +144,27 @@ public class GitTimeParser { // tries to parse a string with a relative time specification @SuppressWarnings("nls") - private static LocalDateTime parse_relative(String dateStr, + @Nullable + private static LocalDateTime parseRelative(String dateStr, LocalDateTime now) { // check for the static words "yesterday" or "now" - if ("now".equals(dateStr)) { + if (dateStr.equals("now")) { return now; } - if ("yesterday".equals(dateStr)) { + if (dateStr.equals("yesterday")) { return now.minusDays(1); } // parse constructs like "3 days ago", "5.week.2.day.ago" - String[] parts = dateStr.split("\\.| "); + String[] parts = dateStr.split("\\.| ", -1); int partsLength = parts.length; // check we have an odd number of parts (at least 3) and that the last // part is "ago" if (partsLength < 3 || (partsLength & 1) == 0 - || !"ago".equals(parts[parts.length - 1])) + || !parts[parts.length - 1].equals("ago")) { return null; + } int number; for (int i = 0; i < parts.length - 2; i += 2) { try { |