1 /* Copyright (c) 2008 Sascha Kohlmann 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU Affero General Public License as published by 5 * the Free Software Foundation, either version 3 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Affero General Public License for more details. 12 * 13 * You should have received a copy of the GNU Affero General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 package net.sf.eos.util; 17 18 /** 19 * Provides static methods to simpler condition handling. This implies less 20 * code. 21 * <p><strong>Example</strong></p> 22 * <pre> 23 * if (reference == null) { 24 * throw new IllegalArgumentException("reference is null"); 25 * } 26 * this.value = reference; 27 * </pre> 28 * <p>will change to a simple single line:</p> 29 * <pre> 30 * this.value = <em>checkArgumentNotNull</em>(reference, "reference is null"); 31 * </pre> 32 * @author Sascha Kohlmann 33 */ 34 public final class Conditions { 35 36 private Conditions() { } 37 38 /** 39 * Checks that the given reference is {@code null} and throws an 40 * {@code IllegalArgumentException} if so. 41 * 42 * @param ref an object reference 43 * @return the non-{@code null} reference 44 * @throws IllegalArgumentException if {@code ref} is {@code null} 45 */ 46 public static <T> T checkArgumentNotNull(final T ref) { 47 if (ref == null) { 48 throw new IllegalArgumentException(); 49 } 50 return ref; 51 } 52 53 /** 54 * Checks that the given reference is {@code null} and throws an 55 * {@code IllegalArgumentException} if so. 56 * 57 * @param ref an object reference 58 * @return the non-{@code null} reference 59 * @throws IllegalArgumentException if {@code ref} is {@code null} 60 */ 61 public static <T> T checkArgumentNotNull(final T ref, 62 final Object errorMessage) { 63 if (ref == null) { 64 throw new IllegalArgumentException("" + errorMessage); 65 } 66 return ref; 67 } 68 69 /** 70 * Checks the expression of an argument and throws an 71 * {@code IllegalArgumentException} if the expression is {@code false}. 72 * 73 * @param expr the expression to test 74 * @throws IllegalArgumentException if {@code expr} is {@code false} 75 */ 76 public static void checkArgument(final boolean expr) { 77 if (! expr) { 78 throw new IllegalArgumentException(); 79 } 80 } 81 82 /** 83 * Checks the expression of an argument and throws an 84 * {@code IllegalArgumentException} if the expression is {@code false}. 85 * 86 * @param expr the expression to test 87 * @throws IllegalArgumentException if {@code expr} is {@code false} 88 */ 89 public static void checkArgument(final boolean expr, 90 final Object errorMessage) { 91 if (! expr) { 92 throw new IllegalArgumentException("" + errorMessage); 93 } 94 } 95 96 /** 97 * Checks the expression of an argument and throws an 98 * {@code IllegalStateException} if the expression is {@code false}. 99 * 100 * @param expr the expression to test 101 * @throws IllegalStateException if {@code expr} is {@code false} 102 */ 103 public static void checkState(final boolean expr) { 104 if (! expr) { 105 throw new IllegalStateException(); 106 } 107 } 108 109 /** 110 * Checks the expression of an argument and throws an 111 * {@code IllegalStateException} if the expression is {@code false}. 112 * 113 * @param expr the expression to test 114 * @throws IllegalStateException if {@code expr} is {@code false} 115 */ 116 public static void checkState(final boolean expr, 117 final Object errorMessage) { 118 if (! expr) { 119 throw new IllegalStateException("" + errorMessage); 120 } 121 } 122 }