~codescore-dev/codescore/version-1.0

« back to all changes in this revision

Viewing changes to doc/java_doc/src-html/net/codescore/exe/ProcessResult.html

  • Committer: Adam Cornett
  • Date: 2008-03-17 15:08:45 UTC
  • Revision ID: adam.cornett@gmail.com-20080317150845-u96dd3go8d5c1gej
Javadoc updates post-refactoring

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<HTML>
 
2
<BODY BGCOLOR="white">
 
3
<PRE>
 
4
<FONT color="green">001</FONT>    /*<a name="line.1"></a>
 
5
<FONT color="green">002</FONT>     * Copyright (C) 2008 Adam Cornett This program is free software; you can<a name="line.2"></a>
 
6
<FONT color="green">003</FONT>     * redistribute it and/or modify it under the terms of the GNU General Public<a name="line.3"></a>
 
7
<FONT color="green">004</FONT>     * License as published by the Free Software Foundation; either version 3 of the<a name="line.4"></a>
 
8
<FONT color="green">005</FONT>     * License, or (at your option) any later version. This program is distributed<a name="line.5"></a>
 
9
<FONT color="green">006</FONT>     * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even<a name="line.6"></a>
 
10
<FONT color="green">007</FONT>     * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<a name="line.7"></a>
 
11
<FONT color="green">008</FONT>     * See the GNU General Public License for more details. You should have received<a name="line.8"></a>
 
12
<FONT color="green">009</FONT>     * a copy of the GNU General Public License along with this program; if not, see<a name="line.9"></a>
 
13
<FONT color="green">010</FONT>     * &lt;http://www.gnu.org/licenses&gt;.<a name="line.10"></a>
 
14
<FONT color="green">011</FONT>     */<a name="line.11"></a>
 
15
<FONT color="green">012</FONT>    <a name="line.12"></a>
 
16
<FONT color="green">013</FONT>    package net.codescore.exe;<a name="line.13"></a>
 
17
<FONT color="green">014</FONT>    <a name="line.14"></a>
 
18
<FONT color="green">015</FONT>    import java.io.IOException;<a name="line.15"></a>
 
19
<FONT color="green">016</FONT>    import java.io.InputStream;<a name="line.16"></a>
 
20
<FONT color="green">017</FONT>    import java.io.OutputStream;<a name="line.17"></a>
 
21
<FONT color="green">018</FONT>    <a name="line.18"></a>
 
22
<FONT color="green">019</FONT>    import org.apache.commons.logging.Log;<a name="line.19"></a>
 
23
<FONT color="green">020</FONT>    import org.apache.commons.logging.LogFactory;<a name="line.20"></a>
 
24
<FONT color="green">021</FONT>    <a name="line.21"></a>
 
25
<FONT color="green">022</FONT>    import net.codescore.dbo.Submission;<a name="line.22"></a>
 
26
<FONT color="green">023</FONT>    <a name="line.23"></a>
 
27
<FONT color="green">024</FONT>    /**<a name="line.24"></a>
 
28
<FONT color="green">025</FONT>     * Represents the result of spawning a new external process.<a name="line.25"></a>
 
29
<FONT color="green">026</FONT>     * <a name="line.26"></a>
 
30
<FONT color="green">027</FONT>     * @author Adam Cornett<a name="line.27"></a>
 
31
<FONT color="green">028</FONT>     */<a name="line.28"></a>
 
32
<FONT color="green">029</FONT>    public abstract class ProcessResult {<a name="line.29"></a>
 
33
<FONT color="green">030</FONT>            protected Log log = LogFactory.getLog(ProcessResult.class);<a name="line.30"></a>
 
34
<FONT color="green">031</FONT>            protected final Process myProcess;<a name="line.31"></a>
 
35
<FONT color="green">032</FONT>            protected StreamWriter outWriter, errWriter;<a name="line.32"></a>
 
36
<FONT color="green">033</FONT>            protected OutputStream stdIn;<a name="line.33"></a>
 
37
<FONT color="green">034</FONT>            protected InputStream stdOut, stdErr;<a name="line.34"></a>
 
38
<FONT color="green">035</FONT>    <a name="line.35"></a>
 
39
<FONT color="green">036</FONT>            protected final Submission sub;<a name="line.36"></a>
 
40
<FONT color="green">037</FONT>    <a name="line.37"></a>
 
41
<FONT color="green">038</FONT>            public ProcessResult(final Process p, final Submission s) {<a name="line.38"></a>
 
42
<FONT color="green">039</FONT>                    sub = s;<a name="line.39"></a>
 
43
<FONT color="green">040</FONT>                    myProcess = p;<a name="line.40"></a>
 
44
<FONT color="green">041</FONT>                    stdOut = p.getInputStream();<a name="line.41"></a>
 
45
<FONT color="green">042</FONT>                    stdErr = p.getErrorStream();<a name="line.42"></a>
 
46
<FONT color="green">043</FONT>                    stdIn = p.getOutputStream();<a name="line.43"></a>
 
47
<FONT color="green">044</FONT>                    initWriters();<a name="line.44"></a>
 
48
<FONT color="green">045</FONT>            }<a name="line.45"></a>
 
49
<FONT color="green">046</FONT>    <a name="line.46"></a>
 
50
<FONT color="green">047</FONT>            public Submission getSub() {<a name="line.47"></a>
 
51
<FONT color="green">048</FONT>                    return sub;<a name="line.48"></a>
 
52
<FONT color="green">049</FONT>            }<a name="line.49"></a>
 
53
<FONT color="green">050</FONT>    <a name="line.50"></a>
 
54
<FONT color="green">051</FONT>            /**<a name="line.51"></a>
 
55
<FONT color="green">052</FONT>             * Wait for the process to end, and return the exit code<a name="line.52"></a>
 
56
<FONT color="green">053</FONT>             * <a name="line.53"></a>
 
57
<FONT color="green">054</FONT>             * @see Process#waitFor()<a name="line.54"></a>
 
58
<FONT color="green">055</FONT>             * @return<a name="line.55"></a>
 
59
<FONT color="green">056</FONT>             */<a name="line.56"></a>
 
60
<FONT color="green">057</FONT>            public int waitForExit() {<a name="line.57"></a>
 
61
<FONT color="green">058</FONT>                    try {<a name="line.58"></a>
 
62
<FONT color="green">059</FONT>                            return myProcess.waitFor();<a name="line.59"></a>
 
63
<FONT color="green">060</FONT>                    } catch (final InterruptedException e) {<a name="line.60"></a>
 
64
<FONT color="green">061</FONT>                            log.error("Interrupted while waiting for exit", e);<a name="line.61"></a>
 
65
<FONT color="green">062</FONT>                            return Integer.MIN_VALUE;<a name="line.62"></a>
 
66
<FONT color="green">063</FONT>                    }<a name="line.63"></a>
 
67
<FONT color="green">064</FONT>            }<a name="line.64"></a>
 
68
<FONT color="green">065</FONT>    <a name="line.65"></a>
 
69
<FONT color="green">066</FONT>            /**<a name="line.66"></a>
 
70
<FONT color="green">067</FONT>             * Cleans up all of the streams<a name="line.67"></a>
 
71
<FONT color="green">068</FONT>             * <a name="line.68"></a>
 
72
<FONT color="green">069</FONT>             * @throws IOException<a name="line.69"></a>
 
73
<FONT color="green">070</FONT>             */<a name="line.70"></a>
 
74
<FONT color="green">071</FONT>            protected void cleanup() throws IOException {<a name="line.71"></a>
 
75
<FONT color="green">072</FONT>                    log.debug("Closing process streams");<a name="line.72"></a>
 
76
<FONT color="green">073</FONT>                    stdIn.close();<a name="line.73"></a>
 
77
<FONT color="green">074</FONT>                    stdOut.close();<a name="line.74"></a>
 
78
<FONT color="green">075</FONT>                    stdErr.close();<a name="line.75"></a>
 
79
<FONT color="green">076</FONT>                    outWriter.cleanup();<a name="line.76"></a>
 
80
<FONT color="green">077</FONT>                    errWriter.cleanup();<a name="line.77"></a>
 
81
<FONT color="green">078</FONT>            }<a name="line.78"></a>
 
82
<FONT color="green">079</FONT>    <a name="line.79"></a>
 
83
<FONT color="green">080</FONT>            /**<a name="line.80"></a>
 
84
<FONT color="green">081</FONT>             * Setup the {@link StreamWriter}s for the process.<a name="line.81"></a>
 
85
<FONT color="green">082</FONT>             */<a name="line.82"></a>
 
86
<FONT color="green">083</FONT>            protected abstract void initWriters();<a name="line.83"></a>
 
87
<FONT color="green">084</FONT>    }<a name="line.84"></a>
 
88
 
 
89
 
 
90
 
 
91
 
 
92
 
 
93
 
 
94
 
 
95
 
 
96
 
 
97
 
 
98
 
 
99
 
 
100
 
 
101
 
 
102
 
 
103
 
 
104
 
 
105
 
 
106
 
 
107
 
 
108
 
 
109
 
 
110
 
 
111
 
 
112
 
 
113
 
 
114
 
 
115
 
 
116
 
 
117
 
 
118
 
 
119
 
 
120
 
 
121
 
 
122
 
 
123
 
 
124
 
 
125
 
 
126
 
 
127
 
 
128
 
 
129
 
 
130
 
 
131
 
 
132
 
 
133
 
 
134
 
 
135
 
 
136
 
 
137
 
 
138
 
 
139
 
 
140
 
 
141
 
 
142
 
 
143
 
 
144
 
 
145
 
 
146
 
 
147
 
 
148
</PRE>
 
149
</BODY>
 
150
</HTML>