From ac1170c7559cbcf3be5d8c468c2821d265b0b749 Mon Sep 17 00:00:00 2001 From: "us@thomas-daily.de" Date: Tue, 1 Mar 2011 13:05:56 +0000 Subject: [PATCH] issue 237 git-svn-id: http://morphia.googlecode.com/svn/trunk@1692 7223e496-fac8-11de-aa3c-59de0406b4f5 --- .../logging/slf4j/TestSLF4JLogrTest.java | 4 +- .../morphia/logging/MorphiaLoggerFactory.java | 6 +- .../morphia/logging/MorphiaLogrFactory.java | 57 -------- .../code/morphia/logging/SilentLogr.java | 29 ---- .../logging/MorphiaLogrFactoryTest.java | 133 ++++++++++++++++++ 5 files changed, 140 insertions(+), 89 deletions(-) delete mode 100644 morphia/src/main/java/com/google/code/morphia/logging/MorphiaLogrFactory.java delete mode 100644 morphia/src/main/java/com/google/code/morphia/logging/SilentLogr.java create mode 100644 morphia/src/test/java/com/google/code/morphia/logging/MorphiaLogrFactoryTest.java diff --git a/logging-slf4j/src/test/java/com/google/code/morphia/logging/slf4j/TestSLF4JLogrTest.java b/logging-slf4j/src/test/java/com/google/code/morphia/logging/slf4j/TestSLF4JLogrTest.java index ff05fba..1c256df 100644 --- a/logging-slf4j/src/test/java/com/google/code/morphia/logging/slf4j/TestSLF4JLogrTest.java +++ b/logging-slf4j/src/test/java/com/google/code/morphia/logging/slf4j/TestSLF4JLogrTest.java @@ -15,7 +15,7 @@ import com.google.code.morphia.Key; import com.google.code.morphia.annotations.Id; -import com.google.code.morphia.logging.MorphiaLogrFactory; +import com.google.code.morphia.logging.MorphiaLoggerFactory; /** * @author us@thomas-daily.de @@ -41,7 +41,7 @@ public void setUp() this.baos = new ByteArrayOutputStream(); System.setErr(new PrintStream(this.baos)); - MorphiaLogrFactory.registerLogger(SLF4JLogrImplFactory.class); + MorphiaLoggerFactory.registerLogger(SLF4JLogrImplFactory.class); super.setUp(); } diff --git a/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLoggerFactory.java b/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLoggerFactory.java index 1574651..205ed66 100644 --- a/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLoggerFactory.java +++ b/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLoggerFactory.java @@ -50,8 +50,12 @@ public static final Logr get(Class c) { /** Register a LoggerFactory; last one registered is used. **/ public static void registerLogger(Class factoryClass) { if (MorphiaLoggerFactory.loggerFactory == null) - MorphiaLoggerFactory.factories.add(0, factoryClass.getName()); + MorphiaLoggerFactory.factories.add(factoryClass.getName()); else throw new IllegalStateException("LoggerImplFactory must be registered before logging is initialized."); } + + public static void reset() { + loggerFactory = null; + } } diff --git a/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLogrFactory.java b/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLogrFactory.java deleted file mode 100644 index fa13f7d..0000000 --- a/morphia/src/main/java/com/google/code/morphia/logging/MorphiaLogrFactory.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.google.code.morphia.logging; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import com.google.code.morphia.logging.jdk.JDKLoggerFactory; - -@SuppressWarnings({ "unchecked", "rawtypes" }) -public class MorphiaLogrFactory { - private static LogrFactory loggerFactory = null; - - private static List factories = new ArrayList(Arrays.asList(JDKLoggerFactory.class.getName(), - "com.google.code.morphia.logging.slf4j.SLF4JLogrImplFactory")); - - private static synchronized void init() { - if (MorphiaLogrFactory.loggerFactory == null) { - chooseLoggerFactory(); - } - } - - private static void chooseLoggerFactory() { - Collections.reverse(MorphiaLogrFactory.factories); - for (String f : MorphiaLogrFactory.factories) { - MorphiaLogrFactory.loggerFactory = newInstance(f); - if (MorphiaLogrFactory.loggerFactory != null) { - loggerFactory.get(MorphiaLogrFactory.class).info( - "LoggerImplFactory set to " + loggerFactory.getClass().getName()); - return; - } - } - throw new IllegalStateException("Cannot instanciate any MorphiaLoggerFactory"); - } - - private static LogrFactory newInstance(String f) { - try { - Class c = Class.forName(f); - return (LogrFactory) c.newInstance(); - } catch (Throwable ignore) { - } - return null; - } - - public static final Logr get(Class c) { - init(); - return MorphiaLogrFactory.loggerFactory.get(c); - } - - /** Register a LoggerFactory; last one registered is used. **/ - public static void registerLogger(Class factoryClass) { - if (MorphiaLogrFactory.loggerFactory == null) - MorphiaLogrFactory.factories.add(0, factoryClass.getName()); - else - throw new IllegalStateException("LoggerImplFactory must be registered before logging is initialized."); - } -} diff --git a/morphia/src/main/java/com/google/code/morphia/logging/SilentLogr.java b/morphia/src/main/java/com/google/code/morphia/logging/SilentLogr.java deleted file mode 100644 index a3de4c2..0000000 --- a/morphia/src/main/java/com/google/code/morphia/logging/SilentLogr.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.google.code.morphia.logging; - -import java.io.Serializable; - -/** Silent logger; it doesn't do anything! */ -public class SilentLogr implements Logr, Serializable{ - private static final long serialVersionUID = 1L; - - public boolean isTraceEnabled() { return false; } - public void trace(String msg) {} - public void trace(String format, Object... arg) {} - public void trace(String msg, Throwable t) {} - public boolean isDebugEnabled() { return false; } - public void debug(String msg) {} - public void debug(String format, Object... arg) {} - public void debug(String msg, Throwable t) {} - public boolean isInfoEnabled() {return false;} - public void info(String msg) {} - public void info(String format, Object... arg) {} - public void info(String msg, Throwable t) {} - public boolean isWarningEnabled() { return false; } - public void warning(String msg) { } - public void warning(String format, Object... arg) { } - public void warning(String msg, Throwable t) { } - public boolean isErrorEnabled() { return false; } - public void error(String msg) { } - public void error(String format, Object... arg) {} - public void error(String msg, Throwable t) {} -} diff --git a/morphia/src/test/java/com/google/code/morphia/logging/MorphiaLogrFactoryTest.java b/morphia/src/test/java/com/google/code/morphia/logging/MorphiaLogrFactoryTest.java new file mode 100644 index 0000000..c58fa7a --- /dev/null +++ b/morphia/src/test/java/com/google/code/morphia/logging/MorphiaLogrFactoryTest.java @@ -0,0 +1,133 @@ +/** + * + */ +package com.google.code.morphia.logging; + +import junit.framework.Assert; + +import org.junit.Test; + +import com.google.code.morphia.TestBase; + +/** + * @author us@thomas-daily.de + * + */ +public class MorphiaLogrFactoryTest extends TestBase { + + static { + + MorphiaLoggerFactory.reset(); + MorphiaLoggerFactory.registerLogger(TestLoggerFactory.class); + } + + public MorphiaLogrFactoryTest() { + + } + + @Test + public void testChoice() throws Exception { + Logr logr = MorphiaLoggerFactory.get(Object.class); + String className = logr.getClass().getName(); + Assert.assertTrue(className.startsWith(TestLoggerFactory.class.getName() + "$")); + } + + @Override + public void tearDown() { + MorphiaLoggerFactory.reset(); + super.tearDown(); + } + + static class TestLoggerFactory implements LogrFactory { + public Logr get(Class c) { + return new Logr() { + + public void warning(String msg, Throwable t) { + + } + + public void warning(String format, Object... arg) { + + } + + public void warning(String msg) { + + } + + public void trace(String msg, Throwable t) { + + } + + public void trace(String format, Object... arg) { + + } + + public void trace(String msg) { + + } + + public boolean isWarningEnabled() { + + return false; + } + + public boolean isTraceEnabled() { + + return false; + } + + public boolean isInfoEnabled() { + + return false; + } + + public boolean isErrorEnabled() { + + return false; + } + + public boolean isDebugEnabled() { + + return false; + } + + public void info(String msg, Throwable t) { + + } + + public void info(String format, Object... arg) { + + } + + public void info(String msg) { + + } + + public void error(String msg, Throwable t) { + + } + + public void error(String format, Object... arg) { + + } + + public void error(String msg) { + + } + + public void debug(String msg, Throwable t) { + + } + + public void debug(String format, Object... arg) { + + } + + public void debug(String msg) { + + } + }; + } + + } +}