001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.commons.proxy2.exception;
019
020/**
021 * {@link org.apache.commons.proxy2.ObjectProvider} implementations should throw this exception type to indicate that
022 * there was a problem creating/finding the object.
023 * 
024 * @since 1.0
025 */
026public class ObjectProviderException extends RuntimeException
027{
028    /** Serialization version */
029    private static final long serialVersionUID = -1L;
030
031    //******************************************************************************************************************
032    // Constructors
033    //******************************************************************************************************************
034
035    /**
036     * Create a new ObjectProviderException instance.
037     */
038    public ObjectProviderException()
039    {
040    }
041
042    /**
043     * Create a new ObjectProviderException instance.
044     * 
045     * @param message
046     */
047    public ObjectProviderException(String message)
048    {
049        super(message);
050    }
051
052    /**
053     * Create a new ObjectProviderException instance using {@link String#format(String, Object...)} for the message.
054     * 
055     * @param message
056     * @param arguments
057     */
058    public ObjectProviderException(String message, Object... arguments)
059    {
060        super(String.format(message, arguments));
061    }
062
063    /**
064     * Create a new ObjectProviderException instance.
065     * 
066     * @param cause
067     */
068    public ObjectProviderException(Throwable cause)
069    {
070        super(cause);
071    }
072
073    /**
074     * Create a new ObjectProviderException instance.
075     * 
076     * @param message
077     * @param cause
078     */
079    public ObjectProviderException(String message, Throwable cause)
080    {
081        super(message, cause);
082    }
083
084    /**
085     * Create a new ObjectProviderException instance using {@link String#format(String, Object...)} for the message.
086     * 
087     * @param cause
088     * @param message
089     * @param arguments
090     */
091    public ObjectProviderException(Throwable cause, String message, Object... arguments)
092    {
093        super(String.format(message, arguments), cause);
094    }
095}