/*
* @{#}IdiotsAtSunStdErrRedirect.java
*/
package com.xsltformation.core;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.PrintStream;
/**
*
* @author Matt
*/
public class IdiotsAtSunStdErrRedirect {
private PrintStream old;
private final File f = new File("c:/tempStdErr.txt");
/**
* Instantiate this thing.
*/
public IdiotsAtSunStdErrRedirect() {
//Keep reference so we don't break System.
old = System.err;
try {
System.setErr(new PrintStream(f));
} catch (Exception e) {
//The file does not exist, which is impossible,IMPOSSIBLE I TELL YA!
}
}
/**
* Destroy this bad boy.
*/
public void destroy() {
f.delete();
System.setErr(old);
}
/**
* Since the retards who coded Xalan thought it would be great to
* output things in the err stdout without giving the programmer
* implementing the API a chance to manipulate the message, we need
* this work around to fetch it.
*
* @return The first line of the System.err when the stack dump occurs.
*/
public String getFirstLineOfStdErr() {
try {
BufferedReader br = new BufferedReader(new FileReader(f));
final String line = br.readLine();
br.close();
f.delete();
return line;
} catch (Exception e) {
e.printStackTrace();
//If it fucks up to this point, return null and screw it.
return null;
}
}
}