Browse Source

Avoid calls to System.exit() and throw an exception instead

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>
stable-3.4
Guillaume Nodet 11 years ago committed by Matthias Sohn
parent
commit
977596b209
  1. 23
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Die.java
  2. 2
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java
  3. 14
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java

23
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Die.java

@ -54,6 +54,8 @@ package org.eclipse.jgit.pgm;
public class Die extends RuntimeException { public class Die extends RuntimeException {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private boolean aborted;
/** /**
* Construct a new message explaining what has gone wrong. * 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) { public Die(final String why, final Throwable cause) {
super(why, 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;
}
} }

2
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Main.java

@ -123,6 +123,8 @@ public class Main {
configureHttpProxy(); configureHttpProxy();
execute(argv); execute(argv);
} catch (Die err) { } catch (Die err) {
if (err.isAborted())
System.exit(1);
System.err.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage())); System.err.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
if (showStackTrace) if (showStackTrace)
err.printStackTrace(); err.printStackTrace();

14
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/TextBuiltin.java

@ -227,7 +227,7 @@ public abstract class TextBuiltin {
} catch (CmdLineException err) { } catch (CmdLineException err) {
if (!help) { if (!help) {
this.errw.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage())); 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.println();
errw.flush(); errw.flush();
System.exit(1); throw die(true);
} }
/** /**
@ -324,6 +324,16 @@ public abstract class TextBuiltin {
return new Die(why, cause); 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) { String abbreviateRef(String dst, boolean abbreviateRemote) {
if (dst.startsWith(R_HEADS)) if (dst.startsWith(R_HEADS))
dst = dst.substring(R_HEADS.length()); dst = dst.substring(R_HEADS.length());

Loading…
Cancel
Save