001/*
002 * Copyright 2002-2012 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *      https://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,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017package org.springframework.beans;
018
019import org.springframework.core.NestedRuntimeException;
020import org.springframework.util.ObjectUtils;
021
022/**
023 * Abstract superclass for all exceptions thrown in the beans package
024 * and subpackages.
025 *
026 * <p>Note that this is a runtime (unchecked) exception. Beans exceptions
027 * are usually fatal; there is no reason for them to be checked.
028 *
029 * @author Rod Johnson
030 * @author Juergen Hoeller
031 */
032@SuppressWarnings("serial")
033public abstract class BeansException extends NestedRuntimeException {
034
035        /**
036         * Create a new BeansException with the specified message.
037         * @param msg the detail message
038         */
039        public BeansException(String msg) {
040                super(msg);
041        }
042
043        /**
044         * Create a new BeansException with the specified message
045         * and root cause.
046         * @param msg the detail message
047         * @param cause the root cause
048         */
049        public BeansException(String msg, Throwable cause) {
050                super(msg, cause);
051        }
052
053
054        @Override
055        public boolean equals(Object other) {
056                if (this == other) {
057                        return true;
058                }
059                if (!(other instanceof BeansException)) {
060                        return false;
061                }
062                BeansException otherBe = (BeansException) other;
063                return (getMessage().equals(otherBe.getMessage()) &&
064                                ObjectUtils.nullSafeEquals(getCause(), otherBe.getCause()));
065        }
066
067        @Override
068        public int hashCode() {
069                return getMessage().hashCode();
070        }
071
072}