Java tutorial
/* * Copyright 2008 JRimum Project * * 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. * * Created at: 30/03/2008 - 18:02:40 * * ================================================================================ * * Direitos autorais 2008 JRimum Project * * Licenciado sob a Licena Apache, Verso 2.0 ("LICENA"); voc no pode usar * esse arquivo exceto em conformidade com a esta LICENA. Voc pode obter uma * cpia desta LICENA em http://www.apache.org/licenses/LICENSE-2.0 A menos que * haja exigncia legal ou acordo por escrito, a distribuio de software sob * esta LICENA se dar COMO EST??, SEM GARANTIAS OU CONDIES DE QUALQUER * TIPO, sejam expressas ou tcitas. Veja a LICENA para a redao especfica a * reger permisses e limitaes sob esta LICENA. * * Criado em: 30/03/2008 - 18:02:40 * */ package org.jrimum.utilix; import org.apache.commons.lang.builder.ToStringBuilder; /** * <p> * Classe utilitria para validaes de objetos em geral, como verificaes de * objetos nulos, com e sem excees. * </p> * * <p> * Fornece mtodos booleanos e mtodos que verificam se o valor do objeto est * de acordo com o desejado e, caso no estejam, lanam exceo. * </p> * * @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a> * @author <a href="mailto:romulomail@gmail.com">Rmulo Augusto</a> * * @since 0.2 * * @version 0.2 */ public final class Objects { /** * Utility class pattern: classe no instancivel * * @throws IllegalStateException * Caso haja alguma tentativa de utilizao deste construtor. */ private Objects() { checkState(false, "Instanciao no permitida!"); } /** * <p> * Verifica se o objeto passado por parmetro {@code null}. * </p> * * @param object * - Objeto analisado * * @return (object == null) * * @since 0.2 */ public static boolean isNull(Object object) { return (object == null); } /** * <p> * Verifica se o objeto passado por parmetro <strong>no</strong> * {@code null}. * </p> * <p> * o mesmo que usar o mtodo {@code isNull} da forma * {@code !isNull(obj)}, porm de forma mais legvel. * </p> * * @param object * - Objeto analisado * * @return (object != null) * * @see #isNull(Object) * * @since 0.2 */ public static boolean isNotNull(Object object) { return (object != null); } /** * <p> * Verifica se existe uma referncia ao objeto dado. * </p> * * @param object * - Objeto analisado * * @return (object != null); * * @see #isNotNull(Object) * * @since 0.2 */ public static boolean exists(Object object) { return (object != null); } /** * Verifica a verdade de uma expresso e lana uma * {@code IllegalArgumentException}, caso a expresso seja * <strong>false</strong>. * * @param expression * - Qualquer expresso booleana * @throws IllegalArgumentException * se {@code expression == false} * * @since 0.2 */ public static void checkArgument(boolean expression) { if (!expression) { throw new IllegalArgumentException(); } } /** * Verifica a verdade de uma expresso e lana uma * {@code IllegalArgumentException}, com a mensagem iformada, caso a * expresso seja <strong>false</strong>. * * @param expression * - Qualquer expresso booleana * @param message * - Mensagem utilizada na exceo * @throws IllegalArgumentException * se {@code expression == false} * * @since 0.2 */ public static void checkArgument(boolean expression, String message) { if (!expression) { throw new IllegalArgumentException(message); } } /** * Verifica a verdade de uma expresso e lana uma * {@code IllegalStateException}, caso a expresso seja * <strong>false</strong>. * * @param expression * - Qualquer expresso booleana * @throws IllegalStateException * se {@code expression == false} * * @since 0.2 */ public static void checkState(boolean expression) { if (!expression) { throw new IllegalStateException(); } } /** * Verifica a verdade de uma expresso e lana uma * {@code IllegalStateException}, com a mensagem iformada, caso a * expresso seja <strong>false</strong>. * * @param expression * - Qualquer expresso booleana * @param message * - Mensagem utilizada na exceo * @throws IllegalStateException * se {@code expression == false} * * @since 0.2 */ public static void checkState(boolean expression, String message) { if (!expression) { throw new IllegalStateException(message); } } /** * <p> * Verifica se o objeto nulo e lana {@code IllegalArgumentException} * , com a mensagem informada, caso <strong>no</strong> seja. * </p> * * @thows IllegalArgumentException - Caso o objeto <strong>no</strong> seja * {@code null}. * * @see #isNull(Object) * @see #isNotNull(Object) * * @since 0.2 * * @param object * - Objeto analisado * @param message * - Mensagem utilizada na exceo */ public static void checkNull(Object object, String message) { if (object != null) { throw new IllegalArgumentException(message); } } /** * <p> * Verifica se o objeto nulo e lana {@code IllegalArgumentException} * caso <strong>no</strong> seja. * </p> * * @param object * - Objeto analisado * * @thows IllegalArgumentException - Caso o objeto <strong>no</strong> seja * {@code null}. * * @see #checkNull(Object, String) * @see #isNull(Object) * @see #isNotNull(Object) * * @since 0.2 */ public static void checkNull(Object object) { checkNull(object, new StringBuilder("Objeto no nulo! Valor [ ").append(object).append(" ].").toString()); } /** * <p> * Verifica se o objeto <strong>no</strong> nulo e lana * {@code IllegalArgumentException}, com a mensagem informada, caso * seja. * </p> * * @param object * - Objeto analisado * @param message * - Mensagem utilizada na exceo * * @thows IllegalArgumentException - Caso o objeto seja {@code null}. * * @see #isNull(Object) * @see #isNotNull(Object) * * @since 0.2 */ public static void checkNotNull(Object object, String message) { if (object == null) { throw new IllegalArgumentException(message); } } /** * <p> * Verifica se o objeto <strong>no</strong> nulo e lana * {@code IllegalArgumentException} caso seja. * </p> * * @param object * - Objeto analisado * * @thows IllegalArgumentException - Caso o objeto seja {@code null}. * * @see #checkNotNull(Object, String) * @see #isNull(Object) * @see #isNotNull(Object) * * @since 0.2 */ public static void checkNotNull(Object object) { checkNotNull(object, "Objeto nulo!"); } /** * <p> * Retorna um dado valor padro quando o determinado objeto for nulo. * </p> * * <pre> * whenNull(null, null) = null * whenNull(null, "") = "" * whenNull(null, "ex") = "ex" * whenNull("abc", *) = "abc" * whenNull(Boolean.TRUE, *) = Boolean.TRUE * </pre> * * @param <T> * tipo do objeto pretendido * @param object * - O {@code objeto} a testar, pode ser {@code null} * @param defaultValue * - O valor padro retornado, pode ser {@code null} * @return {@code object} - Se no nulo, caso contrrio * {@code defaultValue} * * @since 0.2 */ @SuppressWarnings("unchecked") public static <T> T whenNull(Object object, Object defaultValue) { return (T) (object != null ? object : defaultValue); } /** * <p> * Retorna um dado valor padro quando o determinado objeto for nulo e outro * valor quando contrrio. * </p> * * <pre> * whenNull(null, null, null) = null * whenNull(null, "1", "2") = "1" * whenNull("ok", "1", "2") = "2" * </pre> * * @param <T> * tipo do objeto pretendido * @param object * - O {@code objeto} a testar, pode ser {@code null} * @param defaultValue * - O valor padro retornado, pode ser {@code null} * @param notDefaultValue * - O valor quando {@code object} nulo, pode ser * {@code null} * @return {@code defaultValue} - Se no nulo, caso contrrio * {@code notDefaultValue} * * @since 0.2 */ @SuppressWarnings("unchecked") public static <T> T whenNull(Object object, Object defaultValue, Object notDefaultValue) { return (T) (object == null ? defaultValue : notDefaultValue); } /** * Exibe os valores de instncia para um objeto JRimum. * * @see org.apache.commons.lang.builder.ToStringBuilder#reflectionToString * * @since 0.2 * * @see java.lang.Object#toString() */ public static String toString(Object obj) { return "JRimumObject: " + ToStringBuilder.reflectionToString(obj); } }