git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267888 13f79535-47bb-0310-9956-ffa450edef68master
@@ -32,7 +32,7 @@ | |||||
<property name="manifest" value="src/etc/manifest"/> | <property name="manifest" value="src/etc/manifest"/> | ||||
<property name="build.compiler" value="classic"/> | <property name="build.compiler" value="classic"/> | ||||
<property name="build.compiler.emacs" value="on"/> | |||||
<!-- <property name="build.compiler.emacs" value="on"/> --> | |||||
<!-- =================================================================== --> | <!-- =================================================================== --> | ||||
<!-- Check to see what optional dependencies are available --> | <!-- Check to see what optional dependencies are available --> | ||||
@@ -748,7 +748,7 @@ public class Javac extends MatchingTask { | |||||
JikesOutputParser jop = new JikesOutputParser(this, emacsMode); | JikesOutputParser jop = new JikesOutputParser(this, emacsMode); | ||||
Jikes compiler = new Jikes(jop,"jikes"); | |||||
Jikes compiler = new Jikes(jop, "jikes", project); | |||||
compiler.compile(args); | compiler.compile(args); | ||||
if (jop.getErrorFlag()) { | if (jop.getErrorFlag()) { | ||||
String msg = "Compile failed, messages should have been provided."; | String msg = "Compile failed, messages should have been provided."; | ||||
@@ -13,16 +13,18 @@ import java.util.Random; | |||||
public class Jikes { | public class Jikes { | ||||
protected JikesOutputParser jop; | protected JikesOutputParser jop; | ||||
protected String command; | protected String command; | ||||
protected Project project; | |||||
/** | /** | ||||
* Constructs a new Jikes obect. | * Constructs a new Jikes obect. | ||||
* @param jop - Parser to send jike's output to | * @param jop - Parser to send jike's output to | ||||
* @param command - name of jikes executeable | * @param command - name of jikes executeable | ||||
*/ | */ | ||||
protected Jikes(JikesOutputParser jop,String command) { | |||||
protected Jikes(JikesOutputParser jop,String command, Project project) { | |||||
super(); | super(); | ||||
this.jop = jop; | this.jop = jop; | ||||
this.command = command; | this.command = command; | ||||
this.project = project; | |||||
} | } | ||||
/** | /** | ||||
@@ -71,9 +73,11 @@ public class Jikes { | |||||
// -Xstdout that is given to Jikes in Javac.doJikesCompile() | // -Xstdout that is given to Jikes in Javac.doJikesCompile() | ||||
// should guarantee this. At least I hope so. :) | // should guarantee this. At least I hope so. :) | ||||
try { | try { | ||||
Process jikes = Runtime.getRuntime().exec(commandArray); | |||||
BufferedReader reader = new BufferedReader(new InputStreamReader(jikes.getInputStream())); | |||||
jop.parseOutput(reader); | |||||
Execute exe = new Execute(jop); | |||||
exe.setAntRun(project); | |||||
exe.setWorkingDirectory(project.getBaseDir()); | |||||
exe.setCommandline(commandArray); | |||||
exe.execute(); | |||||
} catch (IOException e) { | } catch (IOException e) { | ||||
throw new BuildException("Error running Jikes compiler", e); | throw new BuildException("Error running Jikes compiler", e); | ||||
} | } | ||||
@@ -13,13 +13,44 @@ import java.io.*; | |||||
* Parsing could be much better | * Parsing could be much better | ||||
* @author skanthak@muehlheim.de | * @author skanthak@muehlheim.de | ||||
*/ | */ | ||||
public class JikesOutputParser { | |||||
public class JikesOutputParser implements ExecuteStreamHandler { | |||||
protected Task task; | protected Task task; | ||||
protected boolean errorFlag = false; // no errors so far | protected boolean errorFlag = false; // no errors so far | ||||
protected int errors,warnings; | protected int errors,warnings; | ||||
protected boolean error = false; | protected boolean error = false; | ||||
protected boolean emacsMode; | protected boolean emacsMode; | ||||
protected BufferedReader br; | |||||
/** | |||||
* Ignore. | |||||
*/ | |||||
public void setProcessInputStream(OutputStream os) {} | |||||
/** | |||||
* Ignore. | |||||
*/ | |||||
public void setProcessErrorStream(InputStream is) {} | |||||
/** | |||||
* Set the inputstream | |||||
*/ | |||||
public void setProcessOutputStream(InputStream is) throws IOException { | |||||
br = new BufferedReader(new InputStreamReader(is)); | |||||
} | |||||
/** | |||||
* Invokes parseOutput. | |||||
*/ | |||||
public void start() throws IOException { | |||||
parseOutput(br); | |||||
} | |||||
/** | |||||
* Ignore. | |||||
*/ | |||||
public void stop() {} | |||||
/** | /** | ||||
* Construct a new Parser object | * Construct a new Parser object | ||||
* @param task - task in whichs context we are called | * @param task - task in whichs context we are called | ||||