001/**
002 *
003 * Copyright 2019 Florian Schmaus
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.jxmpp.util;
018
019public class Objects {
020
021        /**
022         * Checks that the specified object reference is not <code>null</code> and
023         * throws a customized {@link IllegalArgumentException} if it is.
024         * <p>
025         * Note that unlike <code>java.util.Objects</code>, this method throws an
026         * {@link IllegalArgumentException} instead of an {@link NullPointerException}.
027         * </p>
028         *
029         * @param <T>           the type of the reference.
030         * @param obj           the object reference to check for nullity.
031         * @param parameterName the name of the parameter which is null
032         * @return <code>obj</code> if not null.
033         * @throws IllegalArgumentException in case <code>obj</code> is
034         *                                  <code>null</code>.
035         */
036        public static <T> T requireNonNull(T obj, String parameterName) throws IllegalArgumentException {
037                if (obj == null) {
038                        throw new IllegalArgumentException("Argument '" + parameterName + "' must not be null");
039                }
040                return obj;
041        }
042}