| @@ -48,6 +48,7 @@ public class DefaultInputHandler implements InputHandler { | |||
| public void handleInput(InputRequest request) throws BuildException { | |||
| String prompt = getPrompt(request); | |||
| BufferedReader r = null; | |||
| boolean success = false; | |||
| try { | |||
| r = new BufferedReader(new InputStreamReader(getInputStream())); | |||
| do { | |||
| @@ -61,12 +62,15 @@ public class DefaultInputHandler implements InputHandler { | |||
| + " Console.", e); | |||
| } | |||
| } while (!request.isInputValid()); | |||
| success = true; | |||
| } finally { | |||
| if (r != null) { | |||
| try { | |||
| r.close(); | |||
| } catch (IOException e) { | |||
| throw new BuildException("Failed to close input.", e); | |||
| if (success) { // don't hide inner exception | |||
| throw new BuildException("Failed to close input.", e); //NOSONAR | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -117,4 +121,4 @@ public class DefaultInputHandler implements InputHandler { | |||
| protected InputStream getInputStream() { | |||
| return KeepAliveInputStream.wrapSystemIn(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1279,8 +1279,10 @@ public class JUnitTask extends Task { | |||
| checkForkedPath(cmd); | |||
| final TestResultHolder result = new TestResultHolder(); | |||
| boolean success = false; | |||
| try { | |||
| result.exitCode = execute.execute(); | |||
| success = true; | |||
| } catch (final IOException e) { | |||
| throw new BuildException("Process fork failed.", e, getLocation()); | |||
| } finally { | |||
| @@ -1322,9 +1324,13 @@ public class JUnitTask extends Task { | |||
| } | |||
| if (!FILE_UTILS.tryHardToDelete(propsFile)) { | |||
| throw new BuildException("Could not delete temporary " | |||
| + "properties file '" | |||
| + propsFile.getAbsolutePath() + "'."); | |||
| String msg = "Could not delete temporary properties file '" | |||
| + propsFile.getAbsolutePath() + "'."; | |||
| if (success) { | |||
| throw new BuildException(msg); //NOSONAR | |||
| } else { // don't hide inner exception | |||
| log(msg, Project.MSG_ERR); | |||
| } | |||
| } | |||
| } | |||
| @@ -117,6 +117,7 @@ public class PlainJUnitResultFormatter implements JUnitResultFormatter, IgnoredT | |||
| * @throws BuildException if unable to write the output | |||
| */ | |||
| public void endTestSuite(JUnitTest suite) throws BuildException { | |||
| boolean success = false; | |||
| try { | |||
| StringBuffer sb = new StringBuffer("Tests run: "); | |||
| sb.append(suite.runCount()); | |||
| @@ -158,12 +159,15 @@ public class PlainJUnitResultFormatter implements JUnitResultFormatter, IgnoredT | |||
| throw new BuildException("Unable to write output", ioex); | |||
| } | |||
| } | |||
| success = true; | |||
| } finally { | |||
| if (out != null) { | |||
| try { | |||
| wri.close(); | |||
| } catch (IOException ioex) { | |||
| throw new BuildException("Unable to flush output", ioex); | |||
| if (success) { | |||
| throw new BuildException("Unable to flush output", ioex); //NOSONAR | |||
| } | |||
| } finally { | |||
| if (out != System.out && out != System.err) { | |||
| FileUtils.close(out); | |||
| @@ -354,6 +354,7 @@ public class RExecTask extends Task { | |||
| /** Create the telnet client object */ | |||
| AntRExecClient rexec = null; | |||
| boolean success = false; | |||
| try { | |||
| rexec = new AntRExecClient(); | |||
| try { | |||
| @@ -372,6 +373,7 @@ public class RExecTask extends Task { | |||
| /** Keep reading input stream until end of it or time-out */ | |||
| rexec.waitForEOF(defaultTimeout); | |||
| success = true; | |||
| } catch (IOException e) { | |||
| throw new BuildException("Error r-executing command", e); | |||
| } finally { | |||
| @@ -379,8 +381,12 @@ public class RExecTask extends Task { | |||
| try { | |||
| rexec.disconnect(); | |||
| } catch (IOException e) { | |||
| throw new BuildException("Error disconnecting from " | |||
| + server); | |||
| String msg = "Error disconnecting from " + server; | |||
| if (success) { | |||
| throw new BuildException(msg); //NOSONAR | |||
| } else { // don't hide inner exception | |||
| log(msg, Project.MSG_ERR); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -98,6 +98,7 @@ public class TelnetTask extends Task { | |||
| /** Create the telnet client object */ | |||
| AntTelnetClient telnet = null; | |||
| boolean success = false; | |||
| try { | |||
| telnet = new AntTelnetClient(); | |||
| try { | |||
| @@ -118,13 +119,18 @@ public class TelnetTask extends Task { | |||
| } | |||
| task.execute(telnet); | |||
| } | |||
| success = true; | |||
| } finally { | |||
| if (telnet != null && telnet.isConnected()) { | |||
| try { | |||
| telnet.disconnect(); | |||
| } catch (IOException e) { | |||
| throw new BuildException("Error disconnecting from " | |||
| + server); | |||
| String msg = "Error disconnecting from " + server; | |||
| if (success) { | |||
| throw new BuildException(msg); //NOSONAR | |||
| } else { // don't hide inner exception | |||
| log(msg, Project.MSG_ERR); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -75,6 +75,7 @@ public class SunRmic extends DefaultRmicAdapter { | |||
| LogOutputStream logstr = new LogOutputStream(getRmic(), | |||
| Project.MSG_WARN); | |||
| boolean success = false; | |||
| try { | |||
| Class c = Class.forName(RMIC_CLASSNAME); | |||
| Constructor cons | |||
| @@ -86,6 +87,7 @@ public class SunRmic extends DefaultRmicAdapter { | |||
| Boolean ok = | |||
| (Boolean) doRmic.invoke(rmic, | |||
| (new Object[] {cmd.getArguments()})); | |||
| success = true; | |||
| return ok.booleanValue(); | |||
| } catch (ClassNotFoundException ex) { | |||
| if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) { | |||
| @@ -105,7 +107,11 @@ public class SunRmic extends DefaultRmicAdapter { | |||
| try { | |||
| logstr.close(); | |||
| } catch (IOException e) { | |||
| throw new BuildException(e); | |||
| // swallow if there was an error before so that | |||
| // original error will be passed up | |||
| if (success) { | |||
| throw new BuildException(e); //NOSONAR | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -189,6 +189,7 @@ public class ContainsRegexpSelector extends BaseExtendSelector | |||
| throw new BuildException("Could not get InputStream from " | |||
| + r.toLongString(), e); | |||
| } | |||
| boolean success = false; | |||
| try { | |||
| teststr = in.readLine(); | |||
| @@ -202,7 +203,7 @@ public class ContainsRegexpSelector extends BaseExtendSelector | |||
| } | |||
| teststr = in.readLine(); | |||
| } | |||
| success = true; | |||
| return false; | |||
| } catch (IOException ioe) { | |||
| throw new BuildException("Could not read " + r.toLongString()); | |||
| @@ -210,8 +211,10 @@ public class ContainsRegexpSelector extends BaseExtendSelector | |||
| try { | |||
| in.close(); | |||
| } catch (Exception e) { | |||
| throw new BuildException("Could not close " | |||
| + r.toLongString()); | |||
| if (success) { | |||
| throw new BuildException("Could not close " //NOSONAR | |||
| + r.toLongString()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -254,6 +254,7 @@ public class SymbolicLinkUtils { | |||
| } | |||
| boolean renamedTarget = false; | |||
| boolean success = false; | |||
| try { | |||
| try { | |||
| FILE_UTILS.rename(target, temp); | |||
| @@ -270,20 +271,26 @@ public class SymbolicLinkUtils { | |||
| + " (was it a real file? is this " | |||
| + "not a UNIX system?)"); | |||
| } | |||
| success = true; | |||
| } finally { | |||
| if (renamedTarget) { | |||
| // return the resource to its original name: | |||
| try { | |||
| FILE_UTILS.rename(temp, target); | |||
| } catch (final IOException e) { | |||
| throw new IOException("Couldn't return resource " | |||
| + temp | |||
| + " to its original name: " | |||
| + target.getAbsolutePath() | |||
| + ". Reason: " + e.getMessage() | |||
| + "\n THE RESOURCE'S NAME ON DISK" | |||
| + " HAS BEEN CHANGED BY THIS" | |||
| + " ERROR!\n"); | |||
| String msg = "Couldn't return resource " | |||
| + temp | |||
| + " to its original name: " | |||
| + target.getAbsolutePath() | |||
| + ". Reason: " + e.getMessage() | |||
| + "\n THE RESOURCE'S NAME ON DISK" | |||
| + " HAS BEEN CHANGED BY THIS" | |||
| + " ERROR!\n"; | |||
| if (success) { | |||
| throw new IOException(msg); //NOSONAR | |||
| } else { | |||
| System.err.println(msg); | |||
| } | |||
| } | |||
| } | |||
| } | |||