Cleaning up display for stack traces with localized messages, too. version-2-3-79 version-2-3-80
authorjglick@netbeans.org
Tue, 28 Nov 2006 23:31:03 +0000
changeset 240f7055896abfd
parent 239 0946c39b21b9
child 241 99e6a01ac3e1
Cleaning up display for stack traces with localized messages, too.
openide.util/src/org/openide/util/Exceptions.java
openide.util/test/unit/src/org/openide/util/ExceptionsTest.java
     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  }