You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2016/12/21 06:25:56 UTC
[2/3] ant git commit: don't hide original exception by throwing a new
one from finally
don't hide original exception by throwing a new one from finally
Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/6c8b3542
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/6c8b3542
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/6c8b3542
Branch: refs/heads/master
Commit: 6c8b3542fdfd2a43e9ca9de9191b5df8bd846160
Parents: 7ffc097
Author: Stefan Bodewig <bo...@apache.org>
Authored: Wed Dec 21 07:25:00 2016 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Wed Dec 21 07:25:00 2016 +0100
----------------------------------------------------------------------
.../tools/ant/input/DefaultInputHandler.java | 8 +++++--
.../ant/taskdefs/optional/junit/JUnitTask.java | 12 +++++++---
.../junit/PlainJUnitResultFormatter.java | 6 ++++-
.../ant/taskdefs/optional/net/RExecTask.java | 10 +++++++--
.../ant/taskdefs/optional/net/TelnetTask.java | 10 +++++++--
.../apache/tools/ant/taskdefs/rmic/SunRmic.java | 8 ++++++-
.../types/selectors/ContainsRegexpSelector.java | 9 +++++---
.../tools/ant/util/SymbolicLinkUtils.java | 23 +++++++++++++-------
8 files changed, 64 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/input/DefaultInputHandler.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/input/DefaultInputHandler.java b/src/main/org/apache/tools/ant/input/DefaultInputHandler.java
index 548ebff..164505f 100644
--- a/src/main/org/apache/tools/ant/input/DefaultInputHandler.java
+++ b/src/main/org/apache/tools/ant/input/DefaultInputHandler.java
@@ -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();
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index 5c78115..a9e1662 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -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);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
index 3386ee5..07264b7 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
@@ -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);
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
index 01cb4ba..61d6e3d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
@@ -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);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
index 82625fa..2bd2205 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/TelnetTask.java
@@ -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);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
index 1b5e67d..7281252 100644
--- a/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
+++ b/src/main/org/apache/tools/ant/taskdefs/rmic/SunRmic.java
@@ -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
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java
index 334f37e..7140b97 100644
--- a/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java
+++ b/src/main/org/apache/tools/ant/types/selectors/ContainsRegexpSelector.java
@@ -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());
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/6c8b3542/src/main/org/apache/tools/ant/util/SymbolicLinkUtils.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/util/SymbolicLinkUtils.java b/src/main/org/apache/tools/ant/util/SymbolicLinkUtils.java
index 3bc9918..62b7a3f 100644
--- a/src/main/org/apache/tools/ant/util/SymbolicLinkUtils.java
+++ b/src/main/org/apache/tools/ant/util/SymbolicLinkUtils.java
@@ -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);
+ }
}
}
}