The exception is caught in Main and System.exit() is called. Bug: 413522 Change-Id: Ibe68f7104d4fd55b832000a7840c07a169e7dd58 Signed-off-by: Guillaume Nodet <gnodet@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v3.4.0.201405051725-m7
@@ -54,6 +54,8 @@ package org.eclipse.jgit.pgm; | |||
public class Die extends RuntimeException { | |||
private static final long serialVersionUID = 1L; | |||
private boolean aborted; | |||
/** | |||
* Construct a new message explaining what has gone wrong. | |||
* | |||
@@ -75,4 +77,25 @@ public class Die extends RuntimeException { | |||
public Die(final String why, final Throwable cause) { | |||
super(why, cause); | |||
} | |||
/** | |||
* Construct a new exception reflecting the fact that the | |||
* command execution has been aborted before running. | |||
* | |||
* @param aborted boolean indicating the fact the execution has been aborted | |||
* @since 3.4 | |||
*/ | |||
public Die(boolean aborted) { | |||
this.aborted = aborted; | |||
} | |||
/** | |||
* Check if this exception should cause the execution to be aborted. | |||
* | |||
* @return boolean indicating that the execution should be aborted | |||
* @since 3.4 | |||
*/ | |||
public boolean isAborted() { | |||
return aborted; | |||
} | |||
} |
@@ -123,6 +123,8 @@ public class Main { | |||
configureHttpProxy(); | |||
execute(argv); | |||
} catch (Die err) { | |||
if (err.isAborted()) | |||
System.exit(1); | |||
System.err.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage())); | |||
if (showStackTrace) | |||
err.printStackTrace(); |
@@ -227,7 +227,7 @@ public abstract class TextBuiltin { | |||
} catch (CmdLineException err) { | |||
if (!help) { | |||
this.errw.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage())); | |||
System.exit(1); | |||
throw die(true); | |||
} | |||
} | |||
@@ -267,7 +267,7 @@ public abstract class TextBuiltin { | |||
errw.println(); | |||
errw.flush(); | |||
System.exit(1); | |||
throw die(true); | |||
} | |||
/** | |||
@@ -324,6 +324,16 @@ public abstract class TextBuiltin { | |||
return new Die(why, cause); | |||
} | |||
/** | |||
* @param aborted | |||
* boolean indicating that the execution has been aborted before running | |||
* @return a runtime exception the caller is expected to throw | |||
* @since 3.4 | |||
*/ | |||
protected static Die die(boolean aborted) { | |||
return new Die(aborted); | |||
} | |||
String abbreviateRef(String dst, boolean abbreviateRemote) { | |||
if (dst.startsWith(R_HEADS)) | |||
dst = dst.substring(R_HEADS.length()); |