KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > system > main > ExceptionUtil


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
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.apache.geronimo.system.main;
18
19 import java.util.ArrayList JavaDoc;
20
21 /**
22  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
23  */

24 public class ExceptionUtil {
25
26     private static final String JavaDoc[] excludedPackages = {
27         "org.apache.geronimo.gbean.jmx.", "mx4j.", "net.sf.cglib.reflect.", "sun.reflect."
28     };
29
30     private static final String JavaDoc[] excludedStrings = {
31         "$$EnhancerByCGLIB$$","$$FastClassByCGLIB$$"
32     };
33
34     public static void trimStackTrace(Throwable JavaDoc t) {
35         if (t == null) {
36             return;
37         }
38
39         StackTraceElement JavaDoc[] trace = t.getStackTrace();
40         ArrayList JavaDoc list = new ArrayList JavaDoc();
41
42         boolean skip = true;
43
44         int i = 0;
45
46         // If the start of the stack trace is something
47
// on the exclude list, don't exclude it.
48
for (; i < trace.length && skip; i++) {
49             skip = skip && isExcluded(trace[i].getClassName());
50         }
51         list.add(trace[i-1]);
52
53
54         for (; i < trace.length; i++) {
55             if ( !isExcluded(trace[i].getClassName()) ){
56                 list.add(trace[i]);
57             }
58         }
59
60         t.setStackTrace((StackTraceElement JavaDoc[]) list.toArray(new StackTraceElement JavaDoc[0]));
61         trimStackTrace(t.getCause());
62     }
63
64     private static boolean isExcluded(String JavaDoc className) {
65         for (int j = 0; j < excludedPackages.length; j++) {
66             if (className.startsWith(excludedPackages[j])) {
67                 return true;
68             }
69         }
70         for (int j = 0; j < excludedStrings.length; j++) {
71             if (className.indexOf(excludedStrings[j]) != -1) {
72                 return true;
73             }
74         }
75         return false;
76     }
77 }
78
Popular Tags