01: /*
02: * Copyright 2005-2006 The Kuali Foundation.
03: *
04: *
05: * Licensed under the Educational Community License, Version 1.0 (the "License");
06: * you may not use this file except in compliance with the License.
07: * You may obtain a copy of the License at
08: *
09: * http://www.opensource.org/licenses/ecl1.php
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.kuali.rice.util;
18:
19: import java.lang.reflect.InvocationTargetException;
20:
21: /**
22: * Provides some Utilities for handling common Exception scenarios.
23: *
24: * @author Kuali Rice Team (kuali-rice@googlegroups.com)
25: */
26: public abstract class ExceptionUtils {
27:
28: /**
29: * Unwraps the appropriate Throwable from the given Throwable. More specifically, this handles
30: * unwrapping causes from InvocationTargetException.
31: * @param throwable
32: * @return
33: */
34: public static Throwable unwrapActualCause(Throwable throwable) {
35: Throwable unwrappedThrowable = null;
36: if (throwable instanceof InvocationTargetException) {
37: InvocationTargetException ite = (InvocationTargetException) throwable;
38: if (ite.getCause() != null && ite.getCause() != ite) {
39: unwrappedThrowable = ite.getCause();
40: }
41: }
42: if (unwrappedThrowable != null
43: && unwrappedThrowable != throwable) {
44: return unwrapActualCause(unwrappedThrowable);
45: }
46: return throwable;
47: }
48:
49: }
|