Cleaning up display for stack traces with localized messages, too.
1.1 --- a/openide.util/src/org/openide/util/Exceptions.java Tue Nov 28 21:12:40 2006 +0000
1.2 +++ b/openide.util/src/org/openide/util/Exceptions.java Tue Nov 28 23:31:03 2006 +0000
1.3 @@ -43,6 +43,8 @@
1.4 public final class Exceptions extends Object {
1.5 private Exceptions() {
1.6 }
1.7 +
1.8 + private static final String LOC_MSG_PLACEHOLDER = "msg"; // NOI18N
1.9
1.10 /** Attaches additional message to given exception. This message will
1.11 * be visible when one does <code>e.printStackTrace()</code>.
1.12 @@ -67,10 +69,10 @@
1.13 */
1.14 public static <E extends Throwable> E attachLocalizedMessage(E e, final String localizedMessage) {
1.15 AnnException ae = AnnException.findOrCreate(e, true);
1.16 - LogRecord rec = new LogRecord(Level.ALL, "msg"); // NOI18N
1.17 + LogRecord rec = new LogRecord(Level.ALL, LOC_MSG_PLACEHOLDER);
1.18 ResourceBundle rb = new ResourceBundle() {
1.19 public Object handleGetObject(String key) {
1.20 - if ("msg".equals(key)) { // NOI18N
1.21 + if (LOC_MSG_PLACEHOLDER.equals(key)) {
1.22 return localizedMessage;
1.23 } else {
1.24 return null;
1.25 @@ -78,7 +80,7 @@
1.26 }
1.27
1.28 public Enumeration<String> getKeys() {
1.29 - return Enumerations.singleton("msg"); // NOI18N
1.30 + return Enumerations.singleton(LOC_MSG_PLACEHOLDER);
1.31 }
1.32 };
1.33 rec.setResourceBundle(rb);
1.34 @@ -168,9 +170,10 @@
1.35 StringBuilder sb = new StringBuilder();
1.36 String sep = "";
1.37 for (LogRecord r : records) {
1.38 - if (r.getMessage() != null) {
1.39 + String m = r.getMessage();
1.40 + if (m != null && !m.equals(LOC_MSG_PLACEHOLDER)) {
1.41 sb.append(sep);
1.42 - sb.append(r.getMessage());
1.43 + sb.append(m);
1.44 sep = "\n";
1.45 }
1.46 }
2.1 --- a/openide.util/test/unit/src/org/openide/util/ExceptionsTest.java Tue Nov 28 21:12:40 2006 +0000
2.2 +++ b/openide.util/test/unit/src/org/openide/util/ExceptionsTest.java Tue Nov 28 23:31:03 2006 +0000
2.3 @@ -34,6 +34,16 @@
2.4 super(testName);
2.5 }
2.6
2.7 + private void assertCleanStackTrace(Throwable t) {
2.8 + StringWriter w = new StringWriter();
2.9 + PrintWriter pw = new PrintWriter(w);
2.10 + t.printStackTrace(pw);
2.11 + pw.flush();
2.12 + String m = w.toString();
2.13 + assertFalse(m.replace("\n", "\\n").replace("\t", "\\t"), m.contains("AnnException"));
2.14 + assertFalse(m.replace("\n", "\\n").replace("\t", "\\t"), m.contains("msg"));
2.15 + }
2.16 +
2.17 public void testAttachMessage() {
2.18 Exception e = new Exception("Help");
2.19 String msg = "me please";
2.20 @@ -50,6 +60,8 @@
2.21 if (m.indexOf(msg) == -1) {
2.22 fail(msg + " shall be part of output:\n" + m);
2.23 }
2.24 +
2.25 + assertCleanStackTrace(e);
2.26 }
2.27
2.28 public void testAttachMessageForClassNotFound() {
2.29 @@ -68,6 +80,8 @@
2.30 if (m.indexOf(msg) == -1) {
2.31 fail(msg + " shall be part of output:\n" + m);
2.32 }
2.33 +
2.34 + assertCleanStackTrace(e);
2.35 }
2.36
2.37 public void testAttachLocalizedMessage() {
2.38 @@ -81,6 +95,8 @@
2.39 String fnd = Exceptions.findLocalizedMessage(e);
2.40
2.41 assertEquals("The same msg", msg, fnd);
2.42 +
2.43 + assertCleanStackTrace(e);
2.44 }
2.45
2.46 public void testAttachLocalizedMessageForClassNFE() {
2.47 @@ -94,6 +110,8 @@
2.48 String fnd = Exceptions.findLocalizedMessage(e);
2.49
2.50 assertEquals("The same msg", msg, fnd);
2.51 +
2.52 + assertCleanStackTrace(e);
2.53 }
2.54
2.55 public void testAttachLocalizedMessageForClassNFEIfNoMsg() {
2.56 @@ -107,6 +125,8 @@
2.57 String fnd = Exceptions.findLocalizedMessage(e);
2.58
2.59 assertEquals("No localized msg found", null, fnd);
2.60 +
2.61 + assertCleanStackTrace(e);
2.62 }
2.63
2.64 }