Tag | Date | Blame | Line | Source |
---|---|---|---|---|
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 63 | /** |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 64 | * Please note that this tests make assumptions about the environment. It assumes |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 65 | * that user "root" exists and that the current user is not a "sudoer" already. |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 66 | */ |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 67 | @Test(expected = ExecuteException.class, timeout = 2*TIMEOUT) |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 68 | public void testExec65WithSudoUsingShellScript() throws Exception |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 69 | { |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 70 | if(OS.isFamilyUnix()) |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 71 | { |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 72 | final DefaultExecutor executor = new DefaultExecutor(); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 73 | executor.setStreamHandler(new PumpStreamHandler(System.out, System.err, System.in)); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 74 | final ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 75 | executor.setWatchdog(watchdog); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 76 | final CommandLine command = new CommandLine(TestUtil.resolveScriptForOS(testDir + "/issues/exec-65")); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 77 | |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 78 | executor.execute(command); |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 79 | } |
latest | Wed Jan 06 19:07:02 JST 2016 | 058dc9 | 80 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 83 | public ExecuteWatchdog(final long timeout) { |
sandbox | Tue Dec 04 21:11:05 JST 2007 | e90575 | 84 | this.killedProcess = false; |
sandbox | Tue Dec 04 21:11:05 JST 2007 | e90575 | 85 | this.watch = false; |
1.2-RC1 | Sat Dec 28 23:18:57 JST 2013 | 01bfe9 | 86 | this.hasWatchdog = timeout != INFINITE_TIMEOUT; |
1.2-RC1 | Wed Nov 30 16:57:29 JST 2011 | 5166ed | 87 | this.processStarted = false; |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 88 | if (this.hasWatchdog) { |
COMMONS_EXEC_1_1_RC1 | Tue Jun 01 06:33:22 JST 2010 | 616599 | 89 | this.watchdog = new Watchdog(timeout); |
COMMONS_EXEC_1_1_RC1 | Tue Jun 01 06:33:22 JST 2010 | 616599 | 90 | this.watchdog.addTimeoutObserver(this); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 95 | } |
1.2-RC1 | Sun Dec 29 01:09:26 JST 2013 | 6e1dd7 | 107 | if (processToMonitor == null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 110 | if (this.process != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 113 | this.caught = null; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 114 | this.killedProcess = false; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 115 | this.watch = true; |
1.2-RC1 | Sun Dec 29 01:09:26 JST 2013 | 6e1dd7 | 116 | this.process = processToMonitor; |
1.2-RC1 | Wed Nov 30 16:57:29 JST 2011 | 5166ed | 117 | this.processStarted = true; |
1.2-RC1 | Wed Nov 30 16:57:29 JST 2011 | 5166ed | 118 | this.notifyAll(); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 119 | if (this.hasWatchdog) { |
COMMONS_EXEC_1_1_RC1 | Tue Jun 01 06:33:22 JST 2010 | 616599 | 120 | watchdog.start(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 122 | } |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 141 | if (hasWatchdog) { |
COMMONS_EXEC_1_1_RC1 | Tue Jun 01 06:33:22 JST 2010 | 616599 | 142 | watchdog.stop(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 144 | watch = false; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 145 | process = null; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 146 | } |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 165 | if (process != null) { |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 168 | } catch (final IllegalThreadStateException itse) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 171 | if (watch) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 172 | killedProcess = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 173 | process.destroy(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 180 | cleanUp(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 181 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 182 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 196 | if (caught != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 199 | } |
sandbox | Tue Dec 04 21:11:05 JST 2007 | e90575 | 226 | watch = false; |
sandbox | Tue Dec 04 21:11:05 JST 2007 | e90575 | 227 | process = null; |
1.2-RC1 | Wed Nov 30 16:57:29 JST 2011 | 5166ed | 228 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 60 | final boolean closeWhenExhausted) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 61 | this.is = is; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 62 | this.os = os; |
sandbox | Sat Feb 09 02:02:37 JST 2008 | 76aa29 | 63 | this.size = DEFAULT_SIZE; |
sandbox | Sat Feb 09 02:02:37 JST 2008 | 76aa29 | 64 | this.closeWhenExhausted = closeWhenExhausted; |
sandbox | Sat Feb 09 02:02:37 JST 2008 | 76aa29 | 65 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 98 | synchronized (this) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 100 | finished = false; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 101 | } |
sandbox | Sat Feb 09 02:02:37 JST 2008 | 76aa29 | 103 | final byte[] buf = new byte[this.size]; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 107 | while ((length = is.read(buf)) > 0) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 108 | os.write(buf, 0, length); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 113 | if (closeWhenExhausted) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 121 | synchronized (this) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 122 | finished = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 123 | notifyAll(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 124 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 125 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 126 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 57 | private IOException caught = null; |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 63 | this(System.out, System.err); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 64 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 82 | this(out, err, null); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 83 | } |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 92 | public PumpStreamHandler(final OutputStream out, final OutputStream err, final InputStream input) { |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 93 | this.out = out; |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 94 | this.err = err; |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 95 | this.input = input; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 96 | } |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 115 | if (out != null) { |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 116 | createProcessOutputPump(is, out); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 118 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 127 | if (err != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 128 | createProcessErrorPump(is, err); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 130 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 139 | if (input != null) { |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 140 | if (input == System.in) { |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 141 | inputThread = createSystemInPump(input, os); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 147 | os.close(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 151 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 153 | } |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 159 | if (outputThread != null) { |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 160 | outputThread.start(); |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 162 | if (errorThread != null) { |
EXEC_1_0_0 | Mon Feb 02 06:18:31 JST 2009 | 6ad70c | 163 | errorThread.start(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 165 | if (inputThread != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 166 | inputThread.start(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 168 | } |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 176 | if (inputStreamPumper != null) { |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 177 | inputStreamPumper.stopProcessing(); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 180 | stopThread(outputThread, stopTimeout); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 181 | stopThread(errorThread, stopTimeout); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 182 | stopThread(inputThread, stopTimeout); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 184 | if (err != null && err != out) { |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 186 | err.flush(); |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:08:25 JST 2010 | 527529 | 190 | } |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 193 | if (out != null) { |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 195 | out.flush(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 199 | } |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 202 | if (caught != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 205 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 232 | outputThread = createPump(is, os); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 233 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 242 | errorThread = createPump(is, os); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 243 | } |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 255 | final boolean closeWhenExhausted = os instanceof PipedOutputStream ? true : false; |
1.2-RC1 | Sat Nov 06 04:07:57 JST 2010 | 4f20b7 | 256 | return createPump(is, os, closeWhenExhausted); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 269 | final Thread result = new Thread(new StreamPumper(is, os, closeWhenExhausted), "Exec Stream Pumper"); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 270 | result.setDaemon(true); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 271 | return result; |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 285 | if (thread != null) { |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 287 | if (timeout == 0) { |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 288 | thread.join(); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 300 | } |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 302 | } |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 313 | inputStreamPumper = new InputStreamPumper(is, os); |
1.2-RC1 | Mon Feb 21 16:30:50 JST 2011 | c266aa | 314 | final Thread result = new Thread(inputStreamPumper, "Exec Input Stream Pumper"); |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 315 | result.setDaemon(true); |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 316 | return result; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
COMMONS_EXEC_1_1_RC1 | Fri Jun 04 17:53:38 JST 2010 | bc7ca7 | 53 | super(message + " (Exit value: " + exitValue + ")"); |
EXEC_1_0_0 | Tue Feb 24 01:03:17 JST 2009 | 7c5d81 | 54 | this.cause = null; |
sandbox | Sun Jan 29 09:15:04 JST 2006 | 801c0e | 55 | this.exitValue = exitValue; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 56 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 51 | public InputStreamPumper(final InputStream is, final OutputStream os) { |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 52 | this.is = is; |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 53 | this.os = os; |
EXEC_1_0_1_RC4 | Fri Sep 25 23:25:59 JST 2009 | 730ca6 | 54 | this.stop = false; |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 55 | } |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 64 | while (!stop) { |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 65 | while (is.available() > 0 && !stop) { |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 68 | os.flush(); |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 69 | Thread.sleep(SLEEPING_TIME); |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 75 | } |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 76 | } |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 80 | stop = true; |
EXEC_1_0_1_RC1 | Fri May 01 06:57:03 JST 2009 | ebbbf4 | 81 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Aug 19 13:07:50 JST 2005 | 1ef5f9 | 35 | public abstract class CommandLauncherImpl implements CommandLauncher { |
sandbox | Tue Apr 22 05:32:43 JST 2008 | 223467 | 50 | return exitValue != 0; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 430 | { |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 431 | this.value = value.trim(); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 432 | this.handleQuoting = handleQuoting; |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 433 | } |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 437 | return value; |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 442 | return handleQuoting; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
1.3-RC1 | Sat Jan 11 01:11:40 JST 2014 | c01912 | 41 | PROCESSING_ENVIRONMENT_IMPLEMENTATION = new DefaultProcessingEnvironment(); |
1.3-RC1 | Sat Jan 11 01:11:40 JST 2014 | c01912 | 43 | } |
EXEC_1_0_0_RC1 | Mon Nov 17 08:07:06 JST 2008 | 765387 | 60 | if (environment == null) { |
sandbox | Sun Jan 29 08:15:24 JST 2006 | 0d1dbf | 61 | return null; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 84 | public DefaultExecutor() { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 85 | this.streamHandler = new PumpStreamHandler(); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 86 | this.launcher = CommandLauncherFactory.createVMLauncher(); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 87 | this.exitValues = new int[0]; |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 20:08:38 JST 2010 | 189459 | 88 | this.workingDirectory = new File("."); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 89 | this.exceptionCaught = null; |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 90 | } |
sandbox | Thu May 25 05:29:38 JST 2006 | 33fe5d | 103 | this.streamHandler = streamHandler; |
sandbox | Thu May 25 05:29:38 JST 2006 | 33fe5d | 104 | } |
sandbox | Thu Mar 15 20:56:12 JST 2007 | 45264b | 117 | this.watchdog = watchDog; |
sandbox | Thu May 25 05:29:38 JST 2006 | 33fe5d | 118 | } |
sandbox | Wed Jan 02 07:50:59 JST 2008 | aa0cd6 | 124 | return this.processDestroyer; |
sandbox | Mon Jul 10 05:32:36 JST 2006 | 13fdc8 | 162 | if (workingDirectory != null && !workingDirectory.exists()) { |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 228 | if (this.exitValues == null) { |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 231 | else if (this.exitValues.length == 0) { |
sandbox | Tue Apr 22 05:32:43 JST 2008 | 223467 | 232 | return this.launcher.isFailure(exitValue); |
sandbox | Thu Apr 24 05:42:39 JST 2008 | 5e9951 | 272 | if (this.launcher == null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 276 | if (dir != null && !dir.exists()) { |
sandbox | Thu Apr 24 05:42:39 JST 2008 | 5e9951 | 279 | return this.launcher.exec(command, env, dir); |
sandbox | Thu Jan 03 03:20:58 JST 2008 | 6f2747 | 299 | process.getInputStream().close(); |
sandbox | Thu Jan 24 06:22:59 JST 2008 | c9e47e | 303 | } |
sandbox | Thu Jan 03 03:20:58 JST 2008 | 6f2747 | 306 | process.getOutputStream().close(); |
sandbox | Thu Jan 24 06:22:59 JST 2008 | c9e47e | 310 | } |
sandbox | Thu Jan 03 03:20:58 JST 2008 | 6f2747 | 313 | process.getErrorStream().close(); |
sandbox | Thu Jan 03 03:20:58 JST 2008 | 6f2747 | 317 | } |
sandbox | Thu Jan 03 03:20:58 JST 2008 | 6f2747 | 318 | } |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 348 | streams.setProcessInputStream(process.getOutputStream()); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 349 | streams.setProcessOutputStream(process.getInputStream()); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 350 | streams.setProcessErrorStream(process.getErrorStream()); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 357 | } |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 359 | streams.start(); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 364 | if (this.getProcessDestroyer() != null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 369 | if (watchdog != null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 370 | watchdog.start(process); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 373 | int exitValue = Executor.INVALID_EXITVALUE; |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 376 | exitValue = process.waitFor(); |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:12:00 JST 2010 | 810be9 | 385 | Thread.interrupted(); |
COMMONS_EXEC_1_1_RC1 | Fri Aug 13 03:12:00 JST 2010 | 810be9 | 386 | } |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 388 | if (watchdog != null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 389 | watchdog.stop(); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 393 | streams.stop(); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 397 | } |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 399 | closeProcessStreams(process); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 401 | if (getExceptionCaught() != null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 405 | if (watchdog != null) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 407 | watchdog.checkException(); |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 412 | } |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 415 | if (this.isFailure(exitValue)) { |
sandbox | Fri Nov 30 08:20:34 JST 2007 | a9c1a6 | 416 | throw new ExecuteException("Process exited with an error: " + exitValue, exitValue); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 422 | if (this.getProcessDestroyer() != null) { |
sandbox | Wed Jan 02 07:50:59 JST 2008 | aa0cd6 | 423 | this.getProcessDestroyer().remove(process); |
1.2-RC1 | Tue Oct 11 06:33:07 JST 2011 | 6e795c | 445 | return this.exceptionCaught; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 72 | final StringBuffer argBuf = new StringBuffer(); |
EXEC_1_0_0_RC1 | Sat Jul 19 04:39:05 JST 2008 | dcbad9 | 74 | if (argStr == null || argStr.length() == 0) { |
EXEC_1_0_0_RC1 | Sat Jul 19 04:39:05 JST 2008 | dcbad9 | 78 | if (vars == null || vars.size() == 0) { |
EXEC_1_0_0_RC1 | Sat Jul 19 04:39:05 JST 2008 | dcbad9 | 79 | return argBuf.append(argStr); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 188 | return arg.replace(SLASH_CHAR, File.separatorChar).replace( |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 224 | String cleanedArgument = argument.trim(); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 227 | while (cleanedArgument.startsWith(SINGLE_QUOTE) || cleanedArgument.startsWith(DOUBLE_QUOTE)) { |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 231 | while (cleanedArgument.endsWith(SINGLE_QUOTE) || cleanedArgument.endsWith(DOUBLE_QUOTE)) { |
1.3-RC1 | Sat Jan 11 22:10:49 JST 2014 | 14624a | 235 | final StringBuilder buf = new StringBuilder(); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 236 | if (cleanedArgument.indexOf(DOUBLE_QUOTE) > -1) { |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 243 | } else if (cleanedArgument.indexOf(SINGLE_QUOTE) > -1 |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 244 | || cleanedArgument.indexOf(" ") > -1) { |
EXEC_1_0_0_RC1 | Sat Jul 19 05:25:50 JST 2008 | 963a84 | 248 | return cleanedArgument; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Sep 23 23:09:14 JST 2005 | 245019 | 42 | if (OS.isFamilyOpenVms()) { |
sandbox | Fri Sep 23 23:09:14 JST 2005 | 245019 | 45 | launcher = new Java13CommandLauncher(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 48 | return launcher; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
1.3-RC1 | Sat Jan 11 19:34:22 JST 2014 | 2e1280 | 33 | private final Vector |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 37 | private boolean stopped = false; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 39 | public Watchdog(final long timeout) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 40 | if (timeout < 1) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 43 | this.timeout = timeout; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 44 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 47 | observers.addElement(to); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 48 | } |
1.3-RC1 | Sat Jan 11 19:34:22 JST 2014 | 2e1280 | 55 | final Enumeration |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 56 | while (e.hasMoreElements()) { |
1.3-RC1 | Sat Jan 11 19:34:22 JST 2014 | 2e1280 | 57 | e.nextElement().timeoutOccured(this); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 59 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 62 | stopped = false; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 63 | final Thread t = new Thread(this, "WATCHDOG"); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 64 | t.setDaemon(true); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 65 | t.start(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 66 | } |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 69 | stopped = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 70 | notifyAll(); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 71 | } |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 74 | final long startTime = System.currentTimeMillis(); |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 76 | synchronized (this) { |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 77 | long timeLeft = timeout - (System.currentTimeMillis() - startTime); |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 78 | isWaiting = timeLeft > 0; |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 79 | while (!stopped && isWaiting) { |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 81 | wait(timeLeft); |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 83 | } |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 84 | timeLeft = timeout - (System.currentTimeMillis() - startTime); |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 85 | isWaiting = timeLeft > 0; |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 87 | } |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 90 | if (!isWaiting) { |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 91 | fireTimeoutOccured(); |
1.2-RC1 | Tue Oct 23 04:14:08 JST 2012 | 16ca2c | 93 | } |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Sun Jan 07 00:42:23 JST 2007 | d4c6f1 | 39 | public class DefaultProcessingEnvironment { |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Dec 07 07:32:34 JST 2007 | a9f0f5 | 39 | public Java13CommandLauncher() { |
1.3-RC1 | Fri Jan 10 01:22:43 JST 2014 | 434ab3 | 40 | } |
1.3-RC1 | Fri Jan 10 01:22:43 JST 2014 | 434ab3 | 59 | final String[] envVars = EnvironmentUtils.toStrings(env); |
1.3-RC1 | Fri Jan 10 01:22:43 JST 2014 | 434ab3 | 61 | return Runtime.getRuntime().exec(cmd.toStrings(), |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 51 | private static final String OS_NAME = System.getProperty("os.name") |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 52 | .toLowerCase(Locale.US); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 54 | private static final String OS_ARCH = System.getProperty("os.arch") |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 55 | .toLowerCase(Locale.US); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 57 | private static final String OS_VERSION = System.getProperty("os.version") |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 58 | .toLowerCase(Locale.US); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 60 | private static final String PATH_SEP = System.getProperty("path.separator"); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 89 | return isOs(family, null, null, null); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 113 | return isFamily(FAMILY_UNIX); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 117 | return isFamily(FAMILY_WINDOWS); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 133 | return isFamily(FAMILY_OPENVMS); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 187 | boolean retValue = false; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 189 | if (family != null || name != null || arch != null || version != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 191 | boolean isFamily = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 192 | boolean isName = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 193 | boolean isArch = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 194 | boolean isVersion = true; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 196 | if (family != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 197 | if (family.equals(FAMILY_WINDOWS)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 198 | isFamily = OS_NAME.indexOf(FAMILY_WINDOWS) > -1; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 199 | } else if (family.equals(FAMILY_OS_2)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 201 | } else if (family.equals(FAMILY_NETWARE)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 203 | } else if (family.equals(FAMILY_DOS)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 206 | } else if (family.equals(FAMILY_MAC)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 207 | isFamily = OS_NAME.indexOf(FAMILY_MAC) > -1; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 208 | } else if (family.equals(FAMILY_TANDEM)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 210 | } else if (family.equals(FAMILY_UNIX)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 211 | isFamily = PATH_SEP.equals(":") |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 212 | && !isFamily(FAMILY_OPENVMS) |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 213 | && (!isFamily(FAMILY_MAC) || OS_NAME.endsWith("x")); |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 214 | } else if (family.equals(FAMILY_WIN9X)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 220 | } else if (family.equals(FAMILY_Z_OS)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 223 | } else if (family.equals(FAMILY_OS_400)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 225 | } else if (family.equals(FAMILY_OPENVMS)) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 226 | isFamily = OS_NAME.indexOf(FAMILY_OPENVMS) > -1; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 233 | if (name != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 236 | if (arch != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 239 | if (version != null) { |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 242 | retValue = isFamily && isName && isArch && isVersion; |
sandbox | Fri Aug 05 21:21:46 JST 2005 | 94b6fa | 244 | return retValue; |
Tag | Date | Blame | Line | Source |
---|---|---|---|---|
1.3-RC1 | Sat Jan 11 20:49:27 JST 2014 | 594812 | 42 | private final Vector |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 102 | public CommandLine(final String executable) { |
sandbox | Sat Apr 12 01:37:11 JST 2008 | 7aa110 | 103 | this.isFile=false; |
1.3-RC1 | Thu Jul 24 20:52:06 JST 2014 | 0bf316 | 104 | this.executable=toCleanExecutable(executable); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 105 | } |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 112 | public CommandLine(final File executable) { |
sandbox | Sat Apr 12 01:37:11 JST 2008 | 7aa110 | 113 | this.isFile=true; |
1.3-RC1 | Thu Jul 24 20:52:06 JST 2014 | 0bf316 | 114 | this.executable=toCleanExecutable(executable.getAbsolutePath()); |
sandbox | Mon Jul 10 05:32:36 JST 2006 | 13fdc8 | 115 | } |
EXEC_1_0_0_RC1 | Sat Jul 19 05:40:44 JST 2008 | b95e06 | 150 | return StringUtils.fixFileSeparatorChar(expandArgument(executable)); |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 227 | return this.addArgument(argument, true); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 239 | if (argument == null) |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 246 | if (handleQuoting) |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 248 | StringUtils.quoteArgument(argument); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 251 | arguments.add(new Argument(argument, handleQuoting)); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 252 | return this; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 264 | final String[] result = new String[arguments.size()]; |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 266 | for (int i=0; i |
1.3-RC1 | Sat Jan 11 20:49:27 JST 2014 | 594812 | 267 | currArgument = arguments.get(i); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 268 | expandedArgument = expandArgument(currArgument.getValue()); |
1.2-RC1 | Sat Dec 28 23:18:57 JST 2013 | 01bfe9 | 269 | result[i] = currArgument.isHandleQuoting() ? StringUtils.quoteArgument(expandedArgument) : expandedArgument; |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 272 | return result; |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 279 | return substitutionMap; |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 298 | final String[] result = new String[arguments.size() + 1]; |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 299 | result[0] = this.getExecutable(); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 300 | System.arraycopy(getArguments(), 0, result, 1, result.length-1); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 301 | return result; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 325 | final StringBuffer stringBuffer = StringUtils.stringSubstitution(argument, this.getSubstitutionMap(), true); |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 326 | return stringBuffer.toString(); |
1.3-RC1 | Thu Jul 24 20:52:06 JST 2014 | 0bf316 | 412 | if (dirtyExecutable == null) { |
1.3-RC1 | Thu Jul 24 20:52:06 JST 2014 | 0bf316 | 414 | } else if (dirtyExecutable.trim().length() == 0) { |
1.3-RC1 | Thu Jul 24 20:52:06 JST 2014 | 0bf316 | 417 | return StringUtils.fixFileSeparatorChar(dirtyExecutable); |