aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mark Schaller <mschaller@google.com>2015-12-10 16:02:09 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-12-10 20:15:44 +0000
commit729652ed0a52ca0e103cb987aaae80a93fafa544 (patch)
tree9c119891ba33a412ac1df44dea04a2fb935d9762
parente8a8624f9f33f3f98122d6134635ed3cc0d5b517 (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.java481
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;
+ }
+}