From 407caaec82be3f506c9ab026179bf8b583bdfbcf Mon Sep 17 00:00:00 2001 From: Ben Bader Date: Thu, 2 Oct 2014 14:35:31 -0700 Subject: [PATCH 1/3] Replacing calls to `Exception#printStackTrace()` with Java logging. This will keep output cleaner, especially in Android where logging and stdout are mixed. --- .../builder/JavassistTemplateBuilder.java | 7 +++++-- .../template/builder/TemplateBuilderChain.java | 9 ++++++++- src/main/java/org/msgpack/util/Exceptions.java | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/msgpack/util/Exceptions.java diff --git a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java index be423c512..9efccec8b 100644 --- a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java +++ b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java @@ -31,6 +31,7 @@ import org.msgpack.template.Template; import org.msgpack.template.AbstractTemplate; import org.msgpack.template.TemplateRegistry; +import org.msgpack.util.Exceptions; @SuppressWarnings({ "rawtypes", "unchecked" }) public class JavassistTemplateBuilder extends AbstractTemplateBuilder { @@ -73,8 +74,10 @@ public JavassistTemplateBuilder(TemplateRegistry registry, ClassLoader cl) { appended = true; } } catch (SecurityException e) { - LOG.fine("Cannot append a search path of classloader"); - e.printStackTrace(); + if (LOG.isLoggable(Level.FINE)) { + LOG.fine("Cannot append a search path of classloader"); + LOG.fine(Exceptions.getStackTraceAsString(e)); + } } if (!appended) { pool.appendSystemPath(); diff --git a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java index a544a7f2d..f3941cb59 100644 --- a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java +++ b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java @@ -22,11 +22,16 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import org.msgpack.template.TemplateRegistry; +import org.msgpack.util.Exceptions; import org.msgpack.util.android.DalvikVmChecker; public class TemplateBuilderChain { + private static final Logger LOG = Logger.getLogger(TemplateBuilderChain.class.getName()); + private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME = "org.msgpack.template.builder.JavassistTemplateBuilder"; private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME = @@ -82,7 +87,9 @@ private static TemplateBuilder createForceTemplateBuilder(String className, ClassLoader.class); return (TemplateBuilder) cons.newInstance(registry, cl); } catch (Exception e) { - e.printStackTrace(); + if (LOG.isLoggable(Level.FINE)) { + LOG.fine(Exceptions.getStackTraceAsString(e)); + } } return new ReflectionTemplateBuilder(registry, cl); } diff --git a/src/main/java/org/msgpack/util/Exceptions.java b/src/main/java/org/msgpack/util/Exceptions.java new file mode 100644 index 000000000..74d1489b7 --- /dev/null +++ b/src/main/java/org/msgpack/util/Exceptions.java @@ -0,0 +1,18 @@ +package org.msgpack.util; + +import java.io.PrintWriter; +import java.io.StringWriter; + +public class Exceptions { + /** + * Prints an exception as a {@link String} suitable for logging. + * + * @param e the exception to print + * @return the exception formatted as a string + */ + public static String getStackTraceAsString(Exception e) { + StringWriter writer = new StringWriter(); + e.printStackTrace(new PrintWriter(writer)); + return writer.toString(); + } +} From d952d287b1477b5b82626e506c968b810dcbbd0e Mon Sep 17 00:00:00 2001 From: Ben Bader Date: Thu, 2 Oct 2014 15:23:19 -0700 Subject: [PATCH 2/3] Replacing some tabs with spaces for consistency. --- .../builder/TemplateBuilderChain.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java index f3941cb59..bce527498 100644 --- a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java +++ b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java @@ -30,12 +30,12 @@ import org.msgpack.util.android.DalvikVmChecker; public class TemplateBuilderChain { - private static final Logger LOG = Logger.getLogger(TemplateBuilderChain.class.getName()); + private static final Logger LOG = Logger.getLogger(TemplateBuilderChain.class.getName()); - private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME = - "org.msgpack.template.builder.JavassistTemplateBuilder"; - private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME = - "org.msgpack.template.builder.ReflectionTemplateBuilder"; + private static final String JAVASSIST_TEMPLATE_BUILDER_CLASS_NAME = + "org.msgpack.template.builder.JavassistTemplateBuilder"; + private static final String REFLECTION_TEMPLATE_BUILDER_CLASS_NAME = + "org.msgpack.template.builder.ReflectionTemplateBuilder"; private static boolean enableDynamicCodeGeneration() { return !DalvikVmChecker.isDalvikVm() && @@ -79,18 +79,18 @@ protected void reset(final TemplateRegistry registry, final ClassLoader cl) { templateBuilders.add(new ReflectionBeansTemplateBuilder(registry)); } - private static TemplateBuilder createForceTemplateBuilder(String className, - TemplateRegistry registry, ClassLoader cl) { - try { - Class c = (Class) Class.forName(className); - Constructor cons = c.getConstructor(TemplateRegistry.class, - ClassLoader.class); - return (TemplateBuilder) cons.newInstance(registry, cl); - } catch (Exception e) { - if (LOG.isLoggable(Level.FINE)) { - LOG.fine(Exceptions.getStackTraceAsString(e)); - } - } + private static TemplateBuilder createForceTemplateBuilder(String className, + TemplateRegistry registry, ClassLoader cl) { + try { + Class c = (Class) Class.forName(className); + Constructor cons = c.getConstructor(TemplateRegistry.class, + ClassLoader.class); + return (TemplateBuilder) cons.newInstance(registry, cl); + } catch (Exception e) { + if (LOG.isLoggable(Level.FINE)) { + LOG.fine(Exceptions.getStackTraceAsString(e)); + } + } return new ReflectionTemplateBuilder(registry, cl); } From ec4eb62a815f7ae0b80871e67f72d716f236a5bb Mon Sep 17 00:00:00 2001 From: Ben Bader Date: Mon, 13 Oct 2014 11:22:17 -0700 Subject: [PATCH 3/3] Use Log#log(Level, String, Throwable). Additionaly, increase log level of exceptions from FINE to WARNING. --- .../builder/JavassistTemplateBuilder.java | 6 ++---- .../template/builder/TemplateBuilderChain.java | 5 ++--- src/main/java/org/msgpack/util/Exceptions.java | 18 ------------------ 3 files changed, 4 insertions(+), 25 deletions(-) delete mode 100644 src/main/java/org/msgpack/util/Exceptions.java diff --git a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java index 9efccec8b..23bcb8716 100644 --- a/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java +++ b/src/main/java/org/msgpack/template/builder/JavassistTemplateBuilder.java @@ -31,7 +31,6 @@ import org.msgpack.template.Template; import org.msgpack.template.AbstractTemplate; import org.msgpack.template.TemplateRegistry; -import org.msgpack.util.Exceptions; @SuppressWarnings({ "rawtypes", "unchecked" }) public class JavassistTemplateBuilder extends AbstractTemplateBuilder { @@ -74,9 +73,8 @@ public JavassistTemplateBuilder(TemplateRegistry registry, ClassLoader cl) { appended = true; } } catch (SecurityException e) { - if (LOG.isLoggable(Level.FINE)) { - LOG.fine("Cannot append a search path of classloader"); - LOG.fine(Exceptions.getStackTraceAsString(e)); + if (LOG.isLoggable(Level.WARNING)) { + LOG.log(Level.WARNING, "Cannot append a search path of classloader", e); } } if (!appended) { diff --git a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java index bce527498..b870b2539 100644 --- a/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java +++ b/src/main/java/org/msgpack/template/builder/TemplateBuilderChain.java @@ -26,7 +26,6 @@ import java.util.logging.Logger; import org.msgpack.template.TemplateRegistry; -import org.msgpack.util.Exceptions; import org.msgpack.util.android.DalvikVmChecker; public class TemplateBuilderChain { @@ -87,8 +86,8 @@ private static TemplateBuilder createForceTemplateBuilder(String className, ClassLoader.class); return (TemplateBuilder) cons.newInstance(registry, cl); } catch (Exception e) { - if (LOG.isLoggable(Level.FINE)) { - LOG.fine(Exceptions.getStackTraceAsString(e)); + if (LOG.isLoggable(Level.WARNING)) { + LOG.log(Level.WARNING, "Failed to create a TemplateBuilder reflectively", e); } } return new ReflectionTemplateBuilder(registry, cl); diff --git a/src/main/java/org/msgpack/util/Exceptions.java b/src/main/java/org/msgpack/util/Exceptions.java deleted file mode 100644 index 74d1489b7..000000000 --- a/src/main/java/org/msgpack/util/Exceptions.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.msgpack.util; - -import java.io.PrintWriter; -import java.io.StringWriter; - -public class Exceptions { - /** - * Prints an exception as a {@link String} suitable for logging. - * - * @param e the exception to print - * @return the exception formatted as a string - */ - public static String getStackTraceAsString(Exception e) { - StringWriter writer = new StringWriter(); - e.printStackTrace(new PrintWriter(writer)); - return writer.toString(); - } -}