All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.commons.lang.NotImplementedException Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.lang;

import java.io.PrintStream;
import java.io.PrintWriter;

import org.apache.commons.lang.exception.Nestable;
import org.apache.commons.lang.exception.NestableDelegate;

/**
 * 

Thrown to indicate that a block of code has not been implemented. * This exception supplements UnsupportedOperationException * by providing a more semantically rich description of the problem.

* *

NotImplementedException represents the case where the * author has yet to implement the logic at this point in the program. * This can act as an exception based TODO tag. * Because this logic might be within a catch block, this exception * suports exception chaining.

* *
 * public void foo() {
 *   try {
 *     // do something that throws an Exception
 *   } catch (Exception ex) {
 *     // don't know what to do here yet
 *     throw new NotImplementedException("TODO", ex);
 *   }
 * }
 * 
* * @author Apache Software Foundation * @author Matthew Hawthorne * @since 2.0 * @version $Id: NotImplementedException.java 905636 2010-02-02 14:03:32Z niallp $ */ public class NotImplementedException extends UnsupportedOperationException implements Nestable { private static final String DEFAULT_MESSAGE = "Code is not implemented"; /** * Required for serialization support. * * @see java.io.Serializable */ private static final long serialVersionUID = -6894122266938754088L; /** * The exception helper to delegate nested exception handling to. */ private NestableDelegate delegate = new NestableDelegate(this); /** * Holds the reference to the exception or error that caused * this exception to be thrown. */ private Throwable cause; //----------------------------------------------------------------------- /** * Constructs a new NotImplementedException with default message. * * @since 2.1 */ public NotImplementedException() { super(DEFAULT_MESSAGE); } /** * Constructs a new NotImplementedException with specified * detail message. * * @param msg the error message. */ public NotImplementedException(String msg) { super(msg == null ? DEFAULT_MESSAGE : msg); } /** * Constructs a new NotImplementedException with specified * nested Throwable and default message. * * @param cause the exception that caused this exception to be thrown * @since 2.1 */ public NotImplementedException(Throwable cause) { super(DEFAULT_MESSAGE); this.cause = cause; } /** * Constructs a new NotImplementedException with specified * detail message and nested Throwable. * * @param msg the error message * @param cause the exception that caused this exception to be thrown * @since 2.1 */ public NotImplementedException(String msg, Throwable cause) { super(msg == null ? DEFAULT_MESSAGE : msg); this.cause = cause; } /** * Constructs a new NotImplementedException referencing the specified class. * * @param clazz * the Class that has not implemented the method */ public NotImplementedException(Class clazz) { super(clazz == null ? DEFAULT_MESSAGE : DEFAULT_MESSAGE + " in " + clazz); } // ----------------------------------------------------------------------- /** * Gets the root cause of this exception. * @return the root cause of this exception. * * @since 2.1 */ public Throwable getCause() { return cause; } /** * Gets the combined the error message of this and any nested errors. * * @return the error message * @since 2.1 */ public String getMessage() { if (super.getMessage() != null) { return super.getMessage(); } else if (cause != null) { return cause.toString(); } else { return null; } } /** * Returns the error message of the Throwable in the chain * of Throwables at the specified index, numbered from 0. * * @param index the index of the Throwable in the chain * @return the error message, or null if the Throwable at the * specified index in the chain does not contain a message * @throws IndexOutOfBoundsException if the index argument is * negative or not less than the count of Throwables in the chain * @since 2.1 */ public String getMessage(int index) { if (index == 0) { return super.getMessage(); } return delegate.getMessage(index); } /** * Returns the error message of this and any nested Throwable objects. * Each throwable returns a message, a null string is included in the array if * there is no message for a particular Throwable. * * @return the error messages * @since 2.1 */ public String[] getMessages() { return delegate.getMessages(); } /** * Returns the Throwable in the chain by index. * * @param index the index to retrieve * @return the Throwable * @throws IndexOutOfBoundsException if the index argument is * negative or not less than the count of Throwables in the chain * @since 2.1 */ public Throwable getThrowable(int index) { return delegate.getThrowable(index); } /** * Returns the number of nested Throwables represented by * this Nestable, including this Nestable. * * @return the throwable count * @since 2.1 */ public int getThrowableCount() { return delegate.getThrowableCount(); } /** * Returns this Nestable and any nested Throwables * in an array of Throwables, one element for each * Throwable. * * @return the Throwables * @since 2.1 */ public Throwable[] getThrowables() { return delegate.getThrowables(); } /** * Returns the index of the first occurrence of the specified type. * If there is no match, -1 is returned. * * @param type the type to search for * @return index of the first occurrence of the type in the chain, or -1 if * the type is not found * @since 2.1 */ public int indexOfThrowable(Class type) { return delegate.indexOfThrowable(type, 0); } /** * Returns the index of the first occurrence of the specified type starting * from the specified index. If there is no match, -1 is returned. * * @param type the type to search for * @param fromIndex the index of the starting position in the chain to be searched * @return index of the first occurrence of the type in the chain, or -1 if * the type is not found * @throws IndexOutOfBoundsException if the fromIndex argument * is negative or not less than the count of Throwables in the chain * @since 2.1 */ public int indexOfThrowable(Class type, int fromIndex) { return delegate.indexOfThrowable(type, fromIndex); } /** * Prints the stack trace of this exception. * Includes information from the exception, if any, which caused this exception. * * @since 2.1 */ public void printStackTrace() { delegate.printStackTrace(); } /** * Prints the stack trace of this exception to the specified stream. * Includes information from the exception, if any, which caused this exception. * * @param out the stream to write to * @since 2.1 */ public void printStackTrace(PrintStream out) { delegate.printStackTrace(out); } /** * Prints the stack trace of this exception to the specified writer. * Includes information from the exception, if any, which caused this exception. * * @param out the writer to write to * @since 2.1 */ public void printStackTrace(PrintWriter out) { delegate.printStackTrace(out); } /** * Prints the stack trace for this exception only (root cause not included) * using the specified writer. * * @param out the writer to write to * @since 2.1 */ public final void printPartialStackTrace(PrintWriter out) { super.printStackTrace(out); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy