Author: nbubna
Date: Fri Sep 19 12:39:05 2008
New Revision: 697209
URL: http://svn.apache.org/viewvc?rev=697209&view=rev
Log:
make SystemLogChute serve as base for a more flexible TestLogChute
Modified:
velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/SystemLogChute.java
velocity/engine/trunk/src/test/org/apache/velocity/test/BaseEvalTestCase.java
velocity/engine/trunk/src/test/org/apache/velocity/test/misc/TestLogChute.java
Modified:
velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/SystemLogChute.java
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/SystemLogChute.java?rev=697209&r1=697208&r2=697209&view=diff
==============================================================================
---
velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/SystemLogChute.java
(original)
+++
velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/SystemLogChute.java
Fri Sep 19 12:39:05 2008
@@ -19,6 +19,7 @@
* under the License.
*/
+import java.io.PrintStream;
import org.apache.velocity.runtime.RuntimeServices;
/**
@@ -135,23 +136,22 @@
String prefix = getPrefix(level);
if (level >= this.errLevel)
{
- System.err.print(prefix);
- System.err.println(message);
- if (t != null)
- {
- System.err.println(t.getMessage());
- t.printStackTrace();
- }
+ write(System.err, prefix, message, t);
}
else
{
- System.out.print(prefix);
- System.out.println(message);
- if (t != null)
- {
- System.out.println(t.getMessage());
- t.printStackTrace(System.out);
- }
+ write(System.out, prefix, message, t);
+ }
+ }
+
+ protected void write(PrintStream stream, String prefix, String message,
Throwable t)
+ {
+ stream.print(prefix);
+ stream.println(message);
+ if (t != null)
+ {
+ stream.println(t.getMessage());
+ t.printStackTrace(stream);
}
}
Modified:
velocity/engine/trunk/src/test/org/apache/velocity/test/BaseEvalTestCase.java
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/src/test/org/apache/velocity/test/BaseEvalTestCase.java?rev=697209&r1=697208&r2=697209&view=diff
==============================================================================
---
velocity/engine/trunk/src/test/org/apache/velocity/test/BaseEvalTestCase.java
(original)
+++
velocity/engine/trunk/src/test/org/apache/velocity/test/BaseEvalTestCase.java
Fri Sep 19 12:39:05 2008
@@ -27,7 +27,7 @@
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
-import org.apache.velocity.runtime.log.SystemLogChute;
+import org.apache.velocity.test.misc.TestLogChute;
/**
* Base for test cases that use evaluate, instead of going
@@ -38,6 +38,7 @@
protected VelocityEngine engine;
protected VelocityContext context;
protected boolean DEBUG = false;
+ protected TestLogChute log;
public BaseEvalTestCase(String name)
{
@@ -49,9 +50,9 @@
engine = new VelocityEngine();
//by default, make the engine's log output go to the test-report
- SystemLogChute log = new SystemLogChute();
- log.setEnabledLevel(SystemLogChute.INFO_ID);
- log.setSystemErrLevel(SystemLogChute.WARN_ID);
+ log = new TestLogChute(false, false);
+ log.setEnabledLevel(TestLogChute.INFO_ID);
+ log.setSystemErrLevel(TestLogChute.WARN_ID);
engine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, log);
context = new VelocityContext();
Modified:
velocity/engine/trunk/src/test/org/apache/velocity/test/misc/TestLogChute.java
URL:
http://svn.apache.org/viewvc/velocity/engine/trunk/src/test/org/apache/velocity/test/misc/TestLogChute.java?rev=697209&r1=697208&r2=697209&view=diff
==============================================================================
---
velocity/engine/trunk/src/test/org/apache/velocity/test/misc/TestLogChute.java
(original)
+++
velocity/engine/trunk/src/test/org/apache/velocity/test/misc/TestLogChute.java
Fri Sep 19 12:39:05 2008
@@ -19,153 +19,96 @@
* under the License.
*/
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
import org.apache.velocity.runtime.RuntimeServices;
-import org.apache.velocity.runtime.log.LogChute;
+import org.apache.velocity.runtime.log.SystemLogChute;
/**
- * LogChute implementation that creates a String in memory. Used to test
- * log information.
+ * LogChute implementation that can easily capture output
+ * or suppress it entirely. By default, both capture and suppress
+ * are on. To have this behave like a normal SystemLogChute,
+ * you must turn it on() and stopCapture().
*
* @author <a href="mailto:[EMAIL PROTECTED]">Will Glass-Husain</a>
+ * @author Nathan Bubna
* @version $Id$
*/
-public class TestLogChute implements LogChute
+public class TestLogChute extends SystemLogChute
{
public static final String TEST_LOGGER_LEVEL =
"runtime.log.logsystem.test.level";
- private StringBuffer log = new StringBuffer();
+ private ByteArrayOutputStream log;
+ private PrintStream systemDotIn;
+ private boolean suppress = true;
+ private boolean capture = true;
- private int logLevel;
- private boolean on;
+ public TestLogChute()
+ {
+ log = new ByteArrayOutputStream();
+ systemDotIn = new PrintStream(log, true);
+ }
+
+ public TestLogChute(boolean suppress, boolean capture)
+ {
+ this();
+ this.suppress = suppress;
+ this.capture = capture;
+ }
public void init(RuntimeServices rs) throws Exception
{
+ super.init(rs);
+
String level = rs.getString(TEST_LOGGER_LEVEL, "debug");
- logLevel = getLevelNumber(level, LogChute.DEBUG_ID);
+ setEnabledLevel(toLevel(level));
}
public void on()
{
- on = true;
+ suppress = false;
}
public void off()
{
- on = false;
+ suppress = true;
}
- public void log(int level, String message)
+ public void startCapture()
{
- if (on && level >= logLevel)
- {
- String levelName;
- levelName = getLevelName(level);
- log.append(" [").append(levelName).append("] ");
- log.append(message);
- log.append("\n");
- }
+ capture = true;
}
-
- /**
- * Return the stored log messages to date.
- * @return log messages
- */
- public String getLog()
+
+ public void stopCapture()
{
- return log.toString();
+ capture = false;
}
- /**
- * Return the name corresponding to each level
- * @param level integer level
- * @return String level name
- */
- private String getLevelName(int level)
+ public boolean isLevelEnabled(int level)
{
- String levelName;
- if (level == LogChute.DEBUG_ID)
- {
- levelName = "debug";
- }
- else if (level == LogChute.INFO_ID)
- {
- levelName = "info";
- }
- else if (level == LogChute.TRACE_ID)
- {
- levelName = "trace";
- }
- else if (level == LogChute.WARN_ID)
- {
- levelName = "warn";
- }
- else if (level == LogChute.ERROR_ID)
- {
- levelName = "error";
- }
- else
- {
- levelName = "";
- }
-
- return levelName;
+ return !suppress && super.isLevelEnabled(level);
}
+
- /**
- * Return the integer level correspoding to the string number, or use the
default
- * @param level name
- * @param defaultLevel the default if the name does not exist
- * @return integer level
- */
- private int getLevelNumber(String level, int defaultLevel)
+ protected void write(PrintStream ps, String prefix, String message,
Throwable t)
{
- if (level == null)
- {
- return defaultLevel;
- }
- else if (level.equalsIgnoreCase("DEBUG"))
- {
- return LogChute.DEBUG_ID;
- }
- else if (level.equalsIgnoreCase("ERROR"))
- {
- return LogChute.ERROR_ID;
- }
- else if (level.equalsIgnoreCase("INFO"))
- {
- return LogChute.INFO_ID;
- }
- else if (level.equalsIgnoreCase("TRACE"))
+ if (capture)
{
- return LogChute.TRACE_ID;
+ super.write(systemDotIn, prefix, message, t);
}
- else if (level.equalsIgnoreCase("WARN"))
+ else
{
- return LogChute.WARN_ID;
- }
- else
- {
- return defaultLevel;
- }
- }
-
- public void log(int level, String message, Throwable t)
- {
- if (on && level >= logLevel)
- {
- String levelName;
- levelName = getLevelName(level);
- log.append(" [").append(levelName).append("] ");
- log.append(message);
- log.append("\n");
- log.append(t.toString());
- log.append("\n");
+ super.write(ps, prefix, message, t);
}
}
- public boolean isLevelEnabled(int level)
+ /**
+ * Return the captured log messages to date.
+ * @return log messages
+ */
+ public String getLog()
{
- return level >= logLevel;
+ return log.toString();
}
}