/*
* Copyright 2014 The Netty Project
*
* The Netty Project 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 io.netty.util.internal;
import java.util.
Collection;
/**
* A grab-bag of useful utility methods.
*/
public final class
ObjectUtil {
private
ObjectUtil() {
}
/**
* Checks that the given argument is not null. If it is, throws {@link NullPointerException}.
* Otherwise, returns the argument.
*/
public static <T> T
checkNotNull(T
arg,
String text) {
if (
arg == null) {
throw new
NullPointerException(
text);
}
return
arg;
}
/**
* Checks that the given argument is strictly positive. If it is not, throws {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static int
checkPositive(int
i,
String name) {
if (
i <= 0) {
throw new
IllegalArgumentException(
name + ": " +
i + " (expected: > 0)");
}
return
i;
}
/**
* Checks that the given argument is strictly positive. If it is not, throws {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static long
checkPositive(long
i,
String name) {
if (
i <= 0) {
throw new
IllegalArgumentException(
name + ": " +
i + " (expected: > 0)");
}
return
i;
}
/**
* Checks that the given argument is positive or zero. If it is not , throws {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static int
checkPositiveOrZero(int
i,
String name) {
if (
i < 0) {
throw new
IllegalArgumentException(
name + ": " +
i + " (expected: >= 0)");
}
return
i;
}
/**
* Checks that the given argument is positive or zero. If it is not, throws {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static long
checkPositiveOrZero(long
i,
String name) {
if (
i < 0) {
throw new
IllegalArgumentException(
name + ": " +
i + " (expected: >= 0)");
}
return
i;
}
/**
* Checks that the given argument is neither null nor empty.
* If it is, throws {@link NullPointerException} or {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static <T> T[]
checkNonEmpty(T[]
array,
String name) {
checkNotNull(
array,
name);
checkPositive(
array.length,
name + ".length");
return
array;
}
/**
* Checks that the given argument is neither null nor empty.
* If it is, throws {@link NullPointerException} or {@link IllegalArgumentException}.
* Otherwise, returns the argument.
*/
public static <T extends
Collection<?>> T
checkNonEmpty(T
collection,
String name) {
checkNotNull(
collection,
name);
checkPositive(
collection.
size(),
name + ".size");
return
collection;
}
/**
* Resolves a possibly null Integer to a primitive int, using a default value.
* @param wrapper the wrapper
* @param defaultValue the default value
* @return the primitive value
*/
public static int
intValue(
Integer wrapper, int
defaultValue) {
return
wrapper != null ?
wrapper :
defaultValue;
}
/**
* Resolves a possibly null Long to a primitive long, using a default value.
* @param wrapper the wrapper
* @param defaultValue the default value
* @return the primitive value
*/
public static long
longValue(
Long wrapper, long
defaultValue) {
return
wrapper != null ?
wrapper :
defaultValue;
}
}