From 3551e443fc0a2a587911ee88ed905501cad8e59b Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Fri, 22 Mar 2019 09:07:03 -0700 Subject: Introduce a checkNotNull helper When using @NonNull annotations in new code, if I write public void setFrobber(@NonNull frobber) { this.frobber = frobber; } then consumers of the JGit library that do not have nullness checking enabled can easily pass in null by mistake. On the other hand, if I write public void setFrobber(@NonNull frobber) { if (frobber == null) { throw new NullPointerException(); } this.frobber = frobber; } then Eclipse JDT complains: Null comparison always yields false: The variable frobber is specified as @NonNull Add a checkNotNull helper that offers the best of both worlds: public void setFrobber(@NonNull frobber) { this.frobber = checkNotNull(frobber); } Briefer code, null check is intact, and no warning. Inspired by Guava's com.google.common.base.Preconditions.checkNotNull. Change-Id: If59588d13a1119e899657ed2296931ea18ed0e2a --- .../src/org/eclipse/jgit/lib/Constants.java | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/lib') diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java index 4c55196961..e724c1525c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java @@ -58,7 +58,7 @@ import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.util.MutableInteger; /** - * Misc. constants used throughout JGit. + * Misc. constants and helpers used throughout JGit. */ @SuppressWarnings("nls") public final class Constants { @@ -465,6 +465,30 @@ public final class Constants { */ public static final String ATTR_BUILTIN_BINARY_MERGER = "binary"; //$NON-NLS-1$ + /** + * Null checker for a {@code @NonNull} parameter. + * + *

This is a briefer equivalent to + *

+	 * if (arg == null) {
+	 *   throw new NullPointerException();
+	 * }
+	 * 
+ * with the added benefit that it does not trigger nullness warnings when + * {@code arg} is declared as {@code @NonNull}. + * + * @param arg a non-null object reference + * @return arg + * @throws NullPointerException if {@code arg} is null + * @since 5.4 + */ + public static T checkNotNull(T arg) { + if (arg == null) { + throw new NullPointerException(); + } + return arg; + } + /** * Create a new digest function for objects. * -- cgit v1.2.3