diff --git a/src/java/org/apache/poi/util/POILogFactory.java b/src/java/org/apache/poi/util/POILogFactory.java
index 683608b23..2378ab86a 100644
--- a/src/java/org/apache/poi/util/POILogFactory.java
+++ b/src/java/org/apache/poi/util/POILogFactory.java
@@ -96,18 +96,32 @@ public class POILogFactory
*/
public static POILogger getLogger(final Class theclass)
+ {
+ return getLogger(theclass.getName());
+ }
+
+ /**
+ * Get a logger, based on a String
+ *
+ * @param cat the String that defines the log
+ *
+ * @return a POILogger for the specified class
+ */
+
+ public static POILogger getLogger(final String cat)
{
POILogger logger = null;
- if (_loggers.containsKey(theclass))
+ if (_loggers.containsKey(cat))
{
- logger = ( POILogger ) _loggers.get(theclass);
+ logger = ( POILogger ) _loggers.get(cat);
}
else
{
- logger = new POILogger(_creator.getInstance(theclass));
- _loggers.put(theclass, logger);
+ logger = new POILogger(_creator.getInstance(cat));
+ _loggers.put(cat, logger);
}
return logger;
}
+
} // end public class POILogFactory
diff --git a/src/testcases/org/apache/poi/util/TestPOILogFactory.java b/src/testcases/org/apache/poi/util/TestPOILogFactory.java
new file mode 100644
index 000000000..82aef5d5c
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestPOILogFactory.java
@@ -0,0 +1,125 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * .
+ */
+
+package org.apache.poi.util;
+
+import org.apache.log4j.Category;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Glen Stampoultzis (glens at apache.org)
+ * @author Nicola Ken Barozzi (nicolaken at apache.org)
+ */
+
+public class TestPOILogFactory
+ extends TestCase
+{
+ /**
+ * Creates new TestPOILogFactory
+ *
+ * @param name
+ */
+
+ public TestPOILogFactory(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test log creation
+ *
+ * @exception IOException
+ */
+
+ public void testLog()
+ throws IOException
+ {
+ //NKB Testing only that logging classes use gives no exception
+ // Since logging can be disabled, no checking of logging
+ // output is done.
+
+ POILogger l1 = POILogFactory.getLogger("org.apache.poi.hssf.test");
+ POILogger l2 = POILogFactory.getLogger("org.apache.poi.hdf.test");
+
+ l1.log(POILogger.FATAL, "testing cat org.apache.poi.hssf.*:FATAL");
+ l1.log(POILogger.ERROR, "testing cat org.apache.poi.hssf.*:ERROR");
+ l1.log(POILogger.WARN, "testing cat org.apache.poi.hssf.*:WARN");
+ l1.log(POILogger.INFO, "testing cat org.apache.poi.hssf.*:INFO");
+ l1.log(POILogger.DEBUG, "testing cat org.apache.poi.hssf.*:DEBUG");
+
+ l2.log(POILogger.FATAL, "testing cat org.apache.poi.hdf.*:FATAL");
+ l2.log(POILogger.ERROR, "testing cat org.apache.poi.hdf.*:ERROR");
+ l2.log(POILogger.WARN, "testing cat org.apache.poi.hdf.*:WARN");
+ l2.log(POILogger.INFO, "testing cat org.apache.poi.hdf.*:INFO");
+ l2.log(POILogger.DEBUG, "testing cat org.apache.poi.hdf.*:DEBUG");
+
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing basic util.POILogFactory functionality");
+ junit.textui.TestRunner.run(TestPOILogFactory.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestPOILogger.java b/src/testcases/org/apache/poi/util/TestPOILogger.java
new file mode 100644
index 000000000..62b47a24a
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestPOILogger.java
@@ -0,0 +1,131 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * .
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+/**
+ * Tests the log class.
+ *
+ * @author Glen Stampoultzis (glens at apache.org)
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Nicola Ken Barozzi (nicolaken at apache.org)
+ */
+
+public class TestPOILogger
+ extends TestCase
+{
+ /**
+ * Constructor TestPOILogger
+ *
+ *
+ * @param s
+ *
+ */
+
+ public TestPOILogger(String s)
+ {
+ super(s);
+ }
+
+ /**
+ * Method setUp
+ *
+ *
+ * @exception Exception
+ *
+ */
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ /**
+ * Test different types of log output.
+ *
+ * @exception Exception
+ */
+
+ public void testVariousLogTypes()
+ throws Exception
+ {
+ //NKB Testing only that logging classes use gives no exception
+ // Since logging can be disabled, no checking of logging
+ // output is done.
+
+ POILogger log = POILogFactory.getLogger("foo");
+
+ log.log(POILogger.WARN, "Test = ", new Integer(1));
+ log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %",
+ "2", new Integer(3));
+ log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %",
+ new int[]
+ {
+ 4, 5
+ });
+ log.logFormatted(POILogger.ERROR,
+ "Test param 1 = %1.1, param 2 = %0.1", new double[]
+ {
+ 4, 5.23
+ });
+
+ }
+}