JAL-3048 test updated for AlignExportSettings changes
[jalview.git] / srcjar / org / apache / log4j / DefaultThrowableRenderer.java
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.log4j;
18
19 import org.apache.log4j.spi.ThrowableRenderer;
20
21 import java.io.StringWriter;
22 import java.io.PrintWriter;
23 import java.io.LineNumberReader;
24 import java.io.StringReader;
25 import java.io.IOException;
26 import java.io.InterruptedIOException;
27 import java.util.ArrayList;
28
29 /**
30  * Default implementation of ThrowableRenderer using
31  * Throwable.printStackTrace.
32  *
33  * @since 1.2.16
34  */
35 public final class DefaultThrowableRenderer implements ThrowableRenderer {
36     /**
37      * Construct new instance.
38      */
39     public DefaultThrowableRenderer() {
40
41     }
42
43
44     /**
45      * {@inheritDoc}
46      */
47     public String[] doRender(final Throwable throwable) {
48         return render(throwable);
49     }
50
51     /**
52      * Render throwable using Throwable.printStackTrace.
53      * @param throwable throwable, may not be null.
54      * @return string representation.
55      */
56     public static String[] render(final Throwable throwable) {
57         StringWriter sw = new StringWriter();
58         PrintWriter pw = new PrintWriter(sw);
59         try {
60             throwable.printStackTrace(pw);
61         } catch(RuntimeException ex) {
62         }
63         pw.flush();
64         LineNumberReader reader = new LineNumberReader(
65                 new StringReader(sw.toString()));
66         ArrayList lines = new ArrayList();
67         try {
68           String line = reader.readLine();
69           while(line != null) {
70             lines.add(line);
71             line = reader.readLine();
72           }
73         } catch(IOException ex) {
74             if (ex instanceof InterruptedIOException) {
75                 Thread.currentThread().interrupt();
76             }
77             lines.add(ex.toString());
78         }
79         String[] tempRep = new String[lines.size()];
80         lines.toArray(tempRep);
81         return tempRep;
82     }
83 }