aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/lib
diff options
context:
space:
mode:
authorJonathan Nieder <jrn@google.com>2019-03-22 09:07:03 -0700
committerJonathan Nieder <jrn@google.com>2019-03-22 09:10:24 -0700
commit3551e443fc0a2a587911ee88ed905501cad8e59b (patch)
treeb80fc3fb8a33ac0d38a36e4b4d7e7f67936f2ff0 /org.eclipse.jgit/src/org/eclipse/jgit/lib
parent5bcee1ef6920e056223543183e58b21299269435 (diff)
downloadjgit-3551e443fc0a2a587911ee88ed905501cad8e59b.tar.gz
jgit-3551e443fc0a2a587911ee88ed905501cad8e59b.zip
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
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/lib')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java26
1 files changed, 25 insertions, 1 deletions
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 {
@@ -466,6 +466,30 @@ public final class Constants {
public static final String ATTR_BUILTIN_BINARY_MERGER = "binary"; //$NON-NLS-1$
/**
+ * Null checker for a {@code @NonNull} parameter.
+ *
+ * <p>This is a briefer equivalent to
+ * <pre>
+ * if (arg == null) {
+ * throw new NullPointerException();
+ * }
+ * </pre>
+ * 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> T checkNotNull(T arg) {
+ if (arg == null) {
+ throw new NullPointerException();
+ }
+ return arg;
+ }
+
+ /**
* Create a new digest function for objects.
*
* @return a new digest object.