org.apache.commons.lang.exception

Class NestableDelegate

Implemented Interfaces:
Serializable

public class NestableDelegate
extends java.lang.Object
implements Serializable

A shared implementation of the nestable exception functionality.

The code is shared between NestableError, NestableException and NestableRuntimeException.

Version:
$Id: NestableDelegate.java,v 1.20 2003/08/23 00:41:29 ggregory Exp $

Authors:
Rafal Krzewski
Daniel Rall
Kasper Nielsen
Steven Caswell
Sean C. Sullivan
Stephen Colebourne

Since:
1.0

Field Summary

static boolean
topDown
Whether to print the stack trace top-down.
static boolean
trimStackFrames
Whether to trim the repeated stack trace.

Constructor Summary

NestableDelegate(Nestable nestable)
Constructs a new NestableDelegate instance to manage the specified Nestable.

Method Summary

String
getMessage(String baseMsg)
Returns the full message contained by the Nestable and any nested Throwables.
String
getMessage(int index)
Returns the error message of the Throwable in the chain of Throwables at the specified index, numbererd from 0.
String[]
getMessages()
Returns the error message of this and any nested Throwables in an array of Strings, one element for each message.
protected String[]
getStackFrames(Throwable t)
Captures the stack trace associated with the specified Throwable object, decomposing it into a list of stack frames.
Throwable
getThrowable(int index)
Returns the Throwable in the chain of Throwables at the specified index, numbererd from 0.
int
getThrowableCount()
Returns the number of Throwables contained in the Nestable contained by this delegate.
Throwable[]
getThrowables()
Returns this delegate's Nestable and any nested Throwables in an array of Throwables, one element for each Throwable.
int
indexOfThrowable(Class type, int fromIndex)
Returns the index, numbered from 0, of the first Throwable that matches the specified type in the chain of Throwables held in this delegate's Nestable with an index greater than or equal to the specified index, or -1 if the type is not found.
void
printStackTrace()
Prints the stack trace of this exception the the standar error stream.
void
printStackTrace(PrintStream out)
Prints the stack trace of this exception to the specified stream.
void
printStackTrace(PrintWriter out)
Prints the stack trace of this exception to the specified writer.
protected void
trimStackFrames(List stacks)
Trims the stack frames.

Field Details

topDown

public static boolean topDown
Whether to print the stack trace top-down. This public flag may be set by calling code, typically in initialisation.

Since:
2.0


trimStackFrames

public static boolean trimStackFrames
Whether to trim the repeated stack trace. This public flag may be set by calling code, typically in initialisation.

Since:
2.0

Constructor Details

NestableDelegate

public NestableDelegate(Nestable nestable)
Constructs a new NestableDelegate instance to manage the specified Nestable. java.lang.Throwable)

Parameters:
nestable - the Nestable implementation (must extend

Since:
2.0

Method Details

getMessage

public String getMessage(String baseMsg)
Returns the full message contained by the Nestable and any nested Throwables.

Parameters:
baseMsg - the base message to use when creating the full message. Should be generally be called via nestableHelper.getMessage(super.getMessage()), where super is an instance of java.lang.Throwable.

Returns:
The concatenated message for this and all nested Throwables

Since:
2.0


getMessage

public String getMessage(int index)
Returns the error message of the Throwable in the chain of Throwables at the specified index, numbererd from 0.

Parameters:
index - the index of the Throwable in the chain of Throwables

Returns:
the error message, or null if the Throwable at the specified index in the chain does not contain a message

Since:
2.0


getMessages

public String[] getMessages()

Returns:
the error messages

Since:
2.0


getStackFrames

protected String[] getStackFrames(Throwable t)
Captures the stack trace associated with the specified Throwable object, decomposing it into a list of stack frames.

Parameters:
t - The Throwable.

Returns:
An array of strings describing each stack frame.

Since:
2.0


getThrowable

public Throwable getThrowable(int index)
Returns the Throwable in the chain of Throwables at the specified index, numbererd from 0.

Parameters:
index - the index, numbered from 0, of the Throwable in the chain of Throwables

Returns:
the Throwable

Since:
2.0


getThrowableCount

public int getThrowableCount()
Returns the number of Throwables contained in the Nestable contained by this delegate.

Returns:
the throwable count

Since:
2.0


getThrowables

public Throwable[] getThrowables()
Returns this delegate's Nestable and any nested Throwables in an array of Throwables, one element for each Throwable.

Returns:
the Throwables

Since:
2.0


indexOfThrowable

public int indexOfThrowable(Class type,
                            int fromIndex)
Returns the index, numbered from 0, of the first Throwable that matches the specified type in the chain of Throwables held in this delegate's Nestable with an index greater than or equal to the specified index, or -1 if the type is not found.

Parameters:
type - Class to be found
fromIndex - the index, numbered from 0, of the starting position in the chain to be searched

Returns:
index of the first occurrence of the type in the chain, or -1 if the type is not found

Since:
2.0


printStackTrace

public void printStackTrace()
Prints the stack trace of this exception the the standar error stream.


printStackTrace

public void printStackTrace(PrintStream out)
Prints the stack trace of this exception to the specified stream.

Parameters:
out - PrintStream to use for output.

See Also:
printStackTrace(PrintWriter)


printStackTrace

public void printStackTrace(PrintWriter out)
Prints the stack trace of this exception to the specified writer. If the Throwable class has a getCause method (i.e. running on jre1.4 or higher), this method just uses Throwable's printStackTrace() method. Otherwise, generates the stack-trace, by taking into account the 'topDown' and 'trimStackFrames' parameters. The topDown and trimStackFrames are set to 'true' by default (produces jre1.4-like stack trace).

Parameters:
out - PrintWriter to use for output.


trimStackFrames

protected void trimStackFrames(List stacks)
Trims the stack frames. The first set is left untouched. The rest of the frames are truncated from the bottom by comparing with one just on top.

Parameters:
stacks - The list containing String[] elements

Since:
2.0


Copyright © 2001-2003 - Apache Software Foundation