package tests.testPersistence.test;
/*Generated by MPS */
import java.io.PrintStream;
import java.io.ByteArrayOutputStream;
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
import java.util.Enumeration;
import org.apache.log4j.Appender;
import org.apache.log4j.Logger;
import java.util.Scanner;
import java.io.ByteArrayInputStream;
public class TestOutputFilter {
private PrintStream myOldOut;
private PrintStream myOldErr;
private ByteArrayOutputStream myOut = new ByteArrayOutputStream();
private ByteArrayOutputStream myErr = new ByteArrayOutputStream();
private Filter myFilter = new Filter() {
@Override
public int decide(LoggingEvent event) {
return (isEventOK(event) ? Filter.NEUTRAL : Filter.DENY);
}
};
public void start() {
myOldOut = System.out;
myOldErr = System.err;
for (Enumeration<Appender> en = Logger.getRootLogger().getAllAppenders(); en.hasMoreElements();) {
en.nextElement().addFilter(myFilter);
}
System.err.flush();
System.setErr(new PrintStream(myErr));
System.out.flush();
System.setOut(new PrintStream(myOut));
}
public void stop() {
for (Enumeration<Appender> en = Logger.getRootLogger().getAllAppenders(); en.hasMoreElements();) {
Appender ap = en.nextElement();
Filter f = ap.getFilter();
ap.clearFilters();
for (; f != null; f = f.next) {
if (f != myFilter) {
ap.addFilter(f);
}
}
}
System.err.flush();
if (myOldErr != null) {
System.setErr(myOldErr);
}
for (Scanner s = new Scanner(new ByteArrayInputStream(myErr.toByteArray())); s.hasNextLine();) {
String line = s.nextLine();
if (isErrLineOK(line)) {
System.err.println(line);
}
}
System.out.flush();
if (myOldOut != null) {
System.setOut(myOldOut);
}
for (Scanner s = new Scanner(new ByteArrayInputStream(myOut.toByteArray())); s.hasNextLine();) {
String line = s.nextLine();
if (isOutLineOK(line)) {
System.out.println(line);
}
}
}
protected boolean isLineOK(String line) {
return false;
}
protected boolean isOutLineOK(String line) {
return isLineOK(line);
}
protected boolean isErrLineOK(String line) {
return isLineOK(line);
}
protected boolean isEventOK(LoggingEvent event) {
return isLineOK(event.getRenderedMessage());
}
}