1 /******************************************************************************* 2 * Copyright 2013 André Rouél and Dominik Seichter 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 ******************************************************************************/ 16 package net.sf.qualitycheck.exception; 17 18 import javax.annotation.Nullable; 19 20 /** 21 * Thrown to indicate that a method has been passed with an argument that is not part of a collection but must be. 22 * 23 * @author Dominik Seichter 24 */ 25 public class IllegalArgumentNotContainedException extends RuntimeException { 26 27 private static final long serialVersionUID = 8389358566804494876L; 28 29 /** 30 * Default message to indicate that the a given argument be contained in a collection. 31 */ 32 protected static final String DEFAULT_MESSAGE = "The passed argument must be contained in a defined collection."; 33 34 /** 35 * Message to indicate that the the given argument with <em>name</em> must be contained in a defined collection. 36 */ 37 protected static final String MESSAGE_WITH_NAME = "The passed argument '%s' must be contained in a defined collection."; 38 39 /** 40 * Returns the formatted string {@link IllegalArgumentNotContainedException#MESSAGE_WITH_NAME} with the given 41 * {@code argumentName}. 42 * 43 * @param argumentName 44 * the name of the passed argument 45 * @return a formatted string of message with the given argument name 46 */ 47 private static String format(@Nullable final String argumentName) { 48 return String.format(MESSAGE_WITH_NAME, argumentName); 49 } 50 51 /** 52 * Constructs an {@code IllegalArgumentNotContainedException} with the default message 53 * {@link IllegalArgumentNotContainedException#DEFAULT_MESSAGE}. 54 */ 55 public IllegalArgumentNotContainedException() { 56 super(DEFAULT_MESSAGE); 57 } 58 59 /** 60 * Constructs an {@code IllegalArgumentNotContainedException} with the message 61 * {@link IllegalArgumentNotContainedException#MESSAGE_WITH_NAME} including the given name of the argument as string 62 * representation. 63 * 64 * @param argumentName 65 * the name of the passed argument 66 */ 67 public IllegalArgumentNotContainedException(@Nullable final String argumentName) { 68 super(format(argumentName)); 69 } 70 71 /** 72 * Constructs a new exception with the message {@link IllegalArgumentNotContainedException#MESSAGE_WITH_NAME} 73 * including the given name as string representation and cause. 74 * 75 * @param argumentName 76 * the name of the passed argument 77 * @param cause 78 * the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method). (A 79 * {@code null} value is permitted, and indicates that the cause is nonexistent or unknown.) 80 */ 81 public IllegalArgumentNotContainedException(@Nullable final String argumentName, @Nullable final Throwable cause) { 82 super(format(argumentName), cause); 83 } 84 85 /** 86 * Constructs a new exception with the default message {@link IllegalArgumentNotContainedException#DEFAULT_MESSAGE}. 87 * 88 * @param cause 89 * the cause (which is saved for later retrieval by the {@link Throwable#getCause()} method). (A 90 * {@code null} value is permitted, and indicates that the cause is nonexistent or unknown.) 91 */ 92 public IllegalArgumentNotContainedException(@Nullable final Throwable cause) { 93 super(DEFAULT_MESSAGE, cause); 94 } 95 96 }