001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.application;
017
018 /**
019 * Indicates that the initialization of an object has not set a required
020 * property.
021 *
022 * @author Kevin Stembridge
023 * @since 0.3
024 *
025 */
026 public class PropertyNotSetException extends ConfigurationException {
027
028 private static final long serialVersionUID = 6848949416219396182L;
029
030 /**
031 * Throws an instance of this exception if the given {@code propertyValue}
032 * is null.
033 *
034 * @param propertyValue The value of the property.
035 * @param propertyName The name of the property.
036 * @param beanClass The class on which the property is supposed to be set.
037 *
038 * @throws PropertyNotSetException if {@code propertyValue} is null.
039 */
040 public static void throwIfNull(Object propertyValue, String propertyName, Class beanClass) {
041
042 if (propertyValue == null) {
043 throw new PropertyNotSetException(beanClass, propertyName);
044 }
045
046 }
047
048 private final Class beanClass;
049
050 private final String propertyName;
051
052 /**
053 * Creates a new {@code PropertyNotSetException} with the specified bean
054 * class and property name.
055 *
056 * @param beanClass The class of the JavaBean that has an uninitialized
057 * property.
058 * @param propertyName The name of the property that has not been set.
059 */
060 public PropertyNotSetException(Class beanClass, String propertyName) {
061 this("The [" + propertyName + "] property of class [" + beanClass + "] has not been initialized.", beanClass,
062 propertyName);
063
064 }
065
066 private PropertyNotSetException(String message, Class beanClass, String propertyName) {
067 super(message);
068 this.beanClass = beanClass;
069 this.propertyName = propertyName;
070
071 }
072
073 /**
074 * Returns the class of the JavaBean that has the uninitialized property.
075 * @return Returns the value of the beanClass field.
076 */
077 public Class getBeanClass() {
078 return this.beanClass;
079 }
080
081 /**
082 * Returns the name of the property that has not been set.
083 * @return Returns the value of the propertyName field.
084 */
085 public String getPropertyName() {
086 return this.propertyName;
087 }
088
089 }