All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.hadoop.fs.impl.prefetch.Validate Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you 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 org.apache.hadoop.fs.impl.prefetch;

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collection;

import static org.apache.hadoop.util.Preconditions.checkArgument;

/**
 * A superset of Validate class in Apache commons lang3.
 * 

* It provides consistent message strings for frequently encountered checks. * That simplifies callers because they have to supply only the name of the argument * that failed a check instead of having to supply the entire message. */ public final class Validate { private Validate() { } /** * Validates that the given reference argument is not null. * @param obj the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNull(Object obj, String argName) { checkArgument(obj != null, "'%s' must not be null.", argName); } /** * Validates that the given integer argument is not zero or negative. * @param value the argument value to validate * @param argName the name of the argument being validated. */ public static void checkPositiveInteger(long value, String argName) { checkArgument(value > 0, "'%s' must be a positive integer.", argName); } /** * Validates that the given integer argument is not negative. * @param value the argument value to validate * @param argName the name of the argument being validated. */ public static void checkNotNegative(long value, String argName) { checkArgument(value >= 0, "'%s' must not be negative.", argName); } /** * Validates that the expression (that checks a required field is present) is true. * @param isPresent indicates whether the given argument is present. * @param argName the name of the argument being validated. */ public static void checkRequired(boolean isPresent, String argName) { checkArgument(isPresent, "'%s' is required.", argName); } /** * Validates that the expression (that checks a field is valid) is true. * @param isValid indicates whether the given argument is valid. * @param argName the name of the argument being validated. */ public static void checkValid(boolean isValid, String argName) { checkArgument(isValid, "'%s' is invalid.", argName); } /** * Validates that the expression (that checks a field is valid) is true. * @param isValid indicates whether the given argument is valid. * @param argName the name of the argument being validated. * @param validValues the list of values that are allowed. */ public static void checkValid(boolean isValid, String argName, String validValues) { checkArgument(isValid, "'%s' is invalid. Valid values are: %s.", argName, validValues); } /** * Validates that the given string is not null and has non-zero length. * @param arg the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(String arg, String argName) { checkNotNull(arg, argName); checkArgument( !arg.isEmpty(), "'%s' must not be empty.", argName); } /** * Validates that the given array is not null and has at least one element. * @param the type of array's elements. * @param array the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(T[] array, String argName) { checkNotNull(array, argName); checkNotEmpty(array.length, argName); } /** * Validates that the given array is not null and has at least one element. * @param array the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(byte[] array, String argName) { checkNotNull(array, argName); checkNotEmpty(array.length, argName); } /** * Validates that the given array is not null and has at least one element. * @param array the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(short[] array, String argName) { checkNotNull(array, argName); checkNotEmpty(array.length, argName); } /** * Validates that the given array is not null and has at least one element. * @param array the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(int[] array, String argName) { checkNotNull(array, argName); checkNotEmpty(array.length, argName); } /** * Validates that the given array is not null and has at least one element. * @param array the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(long[] array, String argName) { checkNotNull(array, argName); checkNotEmpty(array.length, argName); } /** * Validates that the given buffer is not null and has non-zero capacity. * @param the type of iterable's elements. * @param iter the argument reference to validate. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNotEmpty(Iterable iter, String argName) { checkNotNull(iter, argName); int minNumElements = iter.iterator().hasNext() ? 1 : 0; checkNotEmpty(minNumElements, argName); } /** * Validates that the given set is not null and has an exact number of items. * @param the type of collection's elements. * @param collection the argument reference to validate. * @param numElements the expected number of elements in the collection. * @param argName the name of the argument being validated. */ public static void checkNotNullAndNumberOfElements( Collection collection, int numElements, String argName) { checkNotNull(collection, argName); checkArgument( collection.size() == numElements, "Number of elements in '%s' must be exactly %s, %s given.", argName, numElements, collection.size() ); } /** * Validates that the given two values are equal. * @param value1 the first value to check. * @param value1Name the name of the first argument. * @param value2 the second value to check. * @param value2Name the name of the second argument. */ public static void checkValuesEqual( long value1, String value1Name, long value2, String value2Name) { checkArgument( value1 == value2, "'%s' (%s) must equal '%s' (%s).", value1Name, value1, value2Name, value2); } /** * Validates that the first value is an integer multiple of the second value. * @param value1 the first value to check. * @param value1Name the name of the first argument. * @param value2 the second value to check. * @param value2Name the name of the second argument. */ public static void checkIntegerMultiple( long value1, String value1Name, long value2, String value2Name) { checkArgument( (value1 % value2) == 0, "'%s' (%s) must be an integer multiple of '%s' (%s).", value1Name, value1, value2Name, value2); } /** * Validates that the first value is greater than the second value. * @param value1 the first value to check. * @param value1Name the name of the first argument. * @param value2 the second value to check. * @param value2Name the name of the second argument. */ public static void checkGreater( long value1, String value1Name, long value2, String value2Name) { checkArgument( value1 > value2, "'%s' (%s) must be greater than '%s' (%s).", value1Name, value1, value2Name, value2); } /** * Validates that the first value is greater than or equal to the second value. * @param value1 the first value to check. * @param value1Name the name of the first argument. * @param value2 the second value to check. * @param value2Name the name of the second argument. */ public static void checkGreaterOrEqual( long value1, String value1Name, long value2, String value2Name) { checkArgument( value1 >= value2, "'%s' (%s) must be greater than or equal to '%s' (%s).", value1Name, value1, value2Name, value2); } /** * Validates that the first value is less than or equal to the second value. * @param value1 the first value to check. * @param value1Name the name of the first argument. * @param value2 the second value to check. * @param value2Name the name of the second argument. */ public static void checkLessOrEqual( long value1, String value1Name, long value2, String value2Name) { checkArgument( value1 <= value2, "'%s' (%s) must be less than or equal to '%s' (%s).", value1Name, value1, value2Name, value2); } /** * Validates that the given value is within the given range of values. * @param value the value to check. * @param valueName the name of the argument. * @param minValueInclusive inclusive lower limit for the value. * @param maxValueInclusive inclusive upper limit for the value. */ public static void checkWithinRange( long value, String valueName, long minValueInclusive, long maxValueInclusive) { checkArgument( (value >= minValueInclusive) && (value <= maxValueInclusive), "'%s' (%s) must be within the range [%s, %s].", valueName, value, minValueInclusive, maxValueInclusive); } /** * Validates that the given value is within the given range of values. * @param value the value to check. * @param valueName the name of the argument. * @param minValueInclusive inclusive lower limit for the value. * @param maxValueInclusive inclusive upper limit for the value. */ public static void checkWithinRange( double value, String valueName, double minValueInclusive, double maxValueInclusive) { checkArgument( (value >= minValueInclusive) && (value <= maxValueInclusive), "'%s' (%s) must be within the range [%s, %s].", valueName, value, minValueInclusive, maxValueInclusive); } /** * Validates that the given path exists. * @param path the path to check. * @param argName the name of the argument being validated. */ public static void checkPathExists(Path path, String argName) { checkNotNull(path, argName); checkArgument(Files.exists(path), "Path %s (%s) does not exist.", argName, path); } /** * Validates that the given path exists and is a directory. * @param path the path to check. * @param argName the name of the argument being validated. */ public static void checkPathExistsAsDir(Path path, String argName) { checkPathExists(path, argName); checkArgument( Files.isDirectory(path), "Path %s (%s) must point to a directory.", argName, path); } /** * Validates that the given path exists and is a file. * @param path the path to check. * @param argName the name of the argument being validated. */ public static void checkPathExistsAsFile(Path path, String argName) { checkPathExists(path, argName); checkArgument(Files.isRegularFile(path), "Path %s (%s) must point to a file.", argName, path); } /** * Check state. * @param expression expression which must hold. * @param format format string * @param args arguments for the error string * @throws IllegalStateException if the state is not valid. */ public static void checkState(boolean expression, String format, Object... args) { if (!expression) { throw new IllegalStateException(String.format(format, args)); } } private static void checkNotEmpty(int arraySize, String argName) { checkArgument( arraySize > 0, "'%s' must have at least one element.", argName); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy