diff options
author | Jonathan Nieder <jrn@google.com> | 2019-03-22 09:07:03 -0700 |
---|---|---|
committer | Jonathan Nieder <jrn@google.com> | 2019-03-22 09:10:24 -0700 |
commit | 3551e443fc0a2a587911ee88ed905501cad8e59b (patch) | |
tree | b80fc3fb8a33ac0d38a36e4b4d7e7f67936f2ff0 /org.eclipse.jgit/src/org/eclipse/jgit/lib | |
parent | 5bcee1ef6920e056223543183e58b21299269435 (diff) | |
download | jgit-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.java | 26 |
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. |