diff options
author | Mark Schaller <mschaller@google.com> | 2015-12-10 16:02:09 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2015-12-10 20:15:44 +0000 |
commit | 729652ed0a52ca0e103cb987aaae80a93fafa544 (patch) | |
tree | 9c119891ba33a412ac1df44dea04a2fb935d9762 | |
parent | e8a8624f9f33f3f98122d6134635ed3cc0d5b517 (diff) |
Add Preconditions variant that avoids varargs array creation
Reduces garbage.
--
MOS_MIGRATED_REVID=109898521
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/util/Preconditions.java | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/Preconditions.java b/src/main/java/com/google/devtools/build/lib/util/Preconditions.java new file mode 100644 index 0000000000..3ee2a3014a --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/util/Preconditions.java @@ -0,0 +1,481 @@ +// Copyright 2015 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.util; + +import javax.annotation.Nullable; + +/** + * Like {@link com.google.common.base.Preconditions}, but with overloads that avoid varargs-based + * array creation in {@link #checkArgument}, {@link #checkState}, and {@link #checkNotNull} for + * calls that list up to seven error message arguments when {@code expression} is {@code true} (or + * {@code reference} is non-{@code null}). + * + * <p>Throughout this file, functions delegate to {@link com.google.common.base.Preconditions} + * methods of the same name for the purpose of readability and obvious semantics. + */ +public final class Preconditions { + private Preconditions() {} + + /** See {@link com.google.common.base.Preconditions#checkArgument(boolean)}. */ + public static void checkArgument(boolean expression) { + com.google.common.base.Preconditions.checkArgument(expression); + } + + /** See {@link com.google.common.base.Preconditions#checkArgument(boolean, Object)}. */ + public static void checkArgument(boolean expression, @Nullable Object errorMessage) { + com.google.common.base.Preconditions.checkArgument(expression, errorMessage); + } + + /** + * See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object... errorMessageArgs) { + com.google.common.base.Preconditions.checkArgument( + expression, errorMessageTemplate, errorMessageArgs); + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, @Nullable String errorMessageTemplate, @Nullable Object arg0) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument(false, errorMessageTemplate, arg0); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument(false, errorMessageTemplate, arg0, arg1); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument( + false, errorMessageTemplate, arg0, arg1, arg2); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument( + false, errorMessageTemplate, arg0, arg1, arg2, arg3); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkArgument(boolean, String, Object...)}. + */ + public static void checkArgument( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5, + @Nullable Object arg6) { + if (!expression) { + com.google.common.base.Preconditions.checkArgument( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } + } + + /** See {@link com.google.common.base.Preconditions#checkState(boolean)}. */ + public static void checkState(boolean expression) { + com.google.common.base.Preconditions.checkState(expression); + } + + /** See {@link com.google.common.base.Preconditions#checkState(boolean, Object)}. */ + public static void checkState(boolean expression, @Nullable Object errorMessage) { + com.google.common.base.Preconditions.checkState(expression, errorMessage); + } + + /** See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object... errorMessageArgs) { + com.google.common.base.Preconditions.checkState( + expression, errorMessageTemplate, errorMessageArgs); + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, @Nullable String errorMessageTemplate, @Nullable Object arg0) { + if (!expression) { + com.google.common.base.Preconditions.checkState(false, errorMessageTemplate, arg0); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1) { + if (!expression) { + com.google.common.base.Preconditions.checkState(false, errorMessageTemplate, arg0, arg1); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2) { + if (!expression) { + com.google.common.base.Preconditions.checkState( + false, errorMessageTemplate, arg0, arg1, arg2); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3) { + if (!expression) { + com.google.common.base.Preconditions.checkState( + false, errorMessageTemplate, arg0, arg1, arg2, arg3); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4) { + if (!expression) { + com.google.common.base.Preconditions.checkState( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5) { + if (!expression) { + com.google.common.base.Preconditions.checkState( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5); + } + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkState(boolean, String, Object...)}. + */ + public static void checkState( + boolean expression, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5, + @Nullable Object arg6) { + if (!expression) { + com.google.common.base.Preconditions.checkState( + false, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } + } + + /** See {@link com.google.common.base.Preconditions#checkNotNull(Object)}. */ + public static <T> T checkNotNull(T reference) { + return com.google.common.base.Preconditions.checkNotNull(reference); + } + + /** See {@link com.google.common.base.Preconditions#checkNotNull(Object, Object)}. */ + public static <T> T checkNotNull(T reference, @Nullable Object errorMessage) { + return com.google.common.base.Preconditions.checkNotNull(reference, errorMessage); + } + + /** See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. */ + public static <T> T checkNotNull( + T reference, @Nullable String errorMessageTemplate, @Nullable Object... errorMessageArgs) { + return com.google.common.base.Preconditions.checkNotNull( + reference, errorMessageTemplate, errorMessageArgs); + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, @Nullable String errorMessageTemplate, @Nullable Object arg0) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull(null, errorMessageTemplate, arg0); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull(null, errorMessageTemplate, arg0, arg1); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull( + null, errorMessageTemplate, arg0, arg1, arg2); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull( + null, errorMessageTemplate, arg0, arg1, arg2, arg3); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull( + null, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull( + null, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5); + } + return reference; + } + + /** + * Conditionally forwards to the {@link com.google.common.base.Preconditions} method of the same + * name, avoiding varargs-based array creation in the unexceptional case. + * + * <p>See {@link com.google.common.base.Preconditions#checkNotNull(Object, String, Object...)}. + */ + public static <T> T checkNotNull( + T reference, + @Nullable String errorMessageTemplate, + @Nullable Object arg0, + @Nullable Object arg1, + @Nullable Object arg2, + @Nullable Object arg3, + @Nullable Object arg4, + @Nullable Object arg5, + @Nullable Object arg6) { + if (reference == null) { + com.google.common.base.Preconditions.checkNotNull( + null, errorMessageTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } + return reference; + } +} |