MissingRequiredPropertyException.java |
/* * $Id: MissingRequiredPropertyException.java,v 1.23 2011/02/12 08:22:46 agoubard Exp $ * * See the COPYRIGHT file for redistribution and use restrictions. */ package org.xins.common.collections; import org.xins.common.text.TextUtils; /** * Exception thrown to indicate a required property has no value set for it. * * @version $Revision: 1.23 $ $Date: 2011/02/12 08:22:46 $ * @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a> * * @since XINS 1.0.0 * * @see InvalidPropertyValueException */ public final class MissingRequiredPropertyException extends PropertyException { /** * Detailed description of why this property is required in the current * context. Can be <code>null</code>. */ private final String _detail; /** * Constructs a new <code>MissingRequiredPropertyException</code>, with the * specified detail message. * * @param propertyName * the name of the required property, not <code>null</code>. * * @param detail * a more detailed description of why this property is required in this * context, can be <code>null</code>. * * @throws IllegalArgumentException * if <code>propertyName == null</code>. * * @since XINS 1.3.0 */ public MissingRequiredPropertyException(String propertyName, String detail) throws IllegalArgumentException { // Construct message and call superclass constructor super(propertyName, createMessage(propertyName, detail), null); // Store data _detail = TextUtils.trim(detail, null); } /** * Constructs a new <code>MissingRequiredPropertyException</code>. * * @param propertyName * the name of the required property, not <code>null</code>. * * @throws IllegalArgumentException * if <code>propertyName == null</code>. */ public MissingRequiredPropertyException(String propertyName) throws IllegalArgumentException { this(propertyName, null); } /** * Creates message based on the specified constructor argument. * * @param propertyName * the name of the property, cannot be <code>null</code>. * * @param detail * a more detailed description of why this property is required in this * context, can be <code>null</code>. * * @return * the message, never <code>null</code>. */ private static String createMessage(String propertyName, String detail) { // Construct the message String message = "No value is set for the required property \"" + propertyName; // Append the detail message, if any detail = TextUtils.trim(detail, null); if (detail != null) { message += "\": " + detail; } else { message += "\"."; } return message; } /** * Returns the detail message. * * @return * the trimmed detail message, can be <code>null</code>. * * @since XINS 1.3.0 */ public String getDetail() { return _detail; } }