GitHook: use generic OutputStream instead of PrintStream
Change-Id: I15e64dc963c9d27dc9c8de4976dd63f74b918b15 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
7cc1a52c66
commit
5b528474f5
|
@ -24,4 +24,34 @@
|
|||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/FS.java" type="org.eclipse.jgit.util.FS">
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.FS"/>
|
||||
<message_argument value="internalRunHookIfPresent(Repository, String, String[], PrintStream, PrintStream, String)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.FS"/>
|
||||
<message_argument value="runHookIfPresent(Repository, String, String[], PrintStream, PrintStream, String)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/FS_POSIX.java" type="org.eclipse.jgit.util.FS_POSIX">
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.FS_POSIX"/>
|
||||
<message_argument value="runHookIfPresent(Repository, String, String[], PrintStream, PrintStream, String)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/FS_Win32_Cygwin.java" type="org.eclipse.jgit.util.FS_Win32_Cygwin">
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.FS_Win32_Cygwin"/>
|
||||
<message_argument value="runHookIfPresent(Repository, String, String[], PrintStream, PrintStream, String)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
</component>
|
||||
|
|
|
@ -13,8 +13,7 @@
|
|||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import org.eclipse.jgit.api.errors.AbortedByHookException;
|
||||
|
@ -44,12 +43,12 @@ abstract class GitHook<T> implements Callable<T> {
|
|||
/**
|
||||
* The output stream to be used by the hook.
|
||||
*/
|
||||
private final PrintStream outputStream;
|
||||
private final OutputStream outputStream;
|
||||
|
||||
/**
|
||||
* The error stream to be used by the hook.
|
||||
*/
|
||||
private final PrintStream errorStream;
|
||||
private final OutputStream errorStream;
|
||||
|
||||
/**
|
||||
* Constructor for GitHook.
|
||||
|
@ -63,7 +62,7 @@ abstract class GitHook<T> implements Callable<T> {
|
|||
* The output stream the hook must use. {@code null} is allowed,
|
||||
* in which case the hook will use {@code System.out}.
|
||||
*/
|
||||
protected GitHook(Repository repo, PrintStream outputStream) {
|
||||
protected GitHook(Repository repo, OutputStream outputStream) {
|
||||
this(repo, outputStream, null);
|
||||
}
|
||||
|
||||
|
@ -79,8 +78,8 @@ protected GitHook(Repository repo, PrintStream outputStream) {
|
|||
* The error stream the hook must use. {@code null} is allowed,
|
||||
* in which case the hook will use {@code System.err}.
|
||||
*/
|
||||
protected GitHook(Repository repo, PrintStream outputStream,
|
||||
PrintStream errorStream) {
|
||||
protected GitHook(Repository repo, OutputStream outputStream,
|
||||
OutputStream errorStream) {
|
||||
this.repo = repo;
|
||||
this.outputStream = outputStream;
|
||||
this.errorStream = errorStream;
|
||||
|
@ -137,7 +136,7 @@ protected String getStdinArgs() {
|
|||
* @return The output stream the hook must use. Never {@code null},
|
||||
* {@code System.out} is returned by default.
|
||||
*/
|
||||
protected PrintStream getOutputStream() {
|
||||
protected OutputStream getOutputStream() {
|
||||
return outputStream == null ? System.out : outputStream;
|
||||
}
|
||||
|
||||
|
@ -147,7 +146,7 @@ protected PrintStream getOutputStream() {
|
|||
* @return The error stream the hook must use. Never {@code null},
|
||||
* {@code System.err} is returned by default.
|
||||
*/
|
||||
protected PrintStream getErrorStream() {
|
||||
protected OutputStream getErrorStream() {
|
||||
return errorStream == null ? System.err : errorStream;
|
||||
}
|
||||
|
||||
|
@ -161,20 +160,13 @@ protected void doRun() throws AbortedByHookException {
|
|||
final ByteArrayOutputStream errorByteArray = new ByteArrayOutputStream();
|
||||
final TeeOutputStream stderrStream = new TeeOutputStream(errorByteArray,
|
||||
getErrorStream());
|
||||
PrintStream hookErrRedirect = null;
|
||||
try {
|
||||
hookErrRedirect = new PrintStream(stderrStream, false,
|
||||
UTF_8.name());
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// UTF-8 is guaranteed to be available
|
||||
}
|
||||
Repository repository = getRepository();
|
||||
FS fs = repository.getFS();
|
||||
if (fs == null) {
|
||||
fs = FS.DETECTED;
|
||||
}
|
||||
ProcessResult result = fs.runHookIfPresent(repository, getHookName(),
|
||||
getParameters(), getOutputStream(), hookErrRedirect,
|
||||
getParameters(), getOutputStream(), stderrStream,
|
||||
getStdinArgs());
|
||||
if (result.isExecutedWithError()) {
|
||||
throw new AbortedByHookException(
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintStream;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.AccessDeniedException;
|
||||
|
@ -1873,18 +1872,18 @@ public ProcessResult runHookIfPresent(Repository repository,
|
|||
* @throws org.eclipse.jgit.api.errors.JGitInternalException
|
||||
* if we fail to run the hook somehow. Causes may include an
|
||||
* interrupted process or I/O errors.
|
||||
* @since 4.0
|
||||
* @since 5.11
|
||||
*/
|
||||
public ProcessResult runHookIfPresent(Repository repository,
|
||||
final String hookName,
|
||||
String[] args, PrintStream outRedirect, PrintStream errRedirect,
|
||||
String[] args, OutputStream outRedirect, OutputStream errRedirect,
|
||||
String stdinArgs) throws JGitInternalException {
|
||||
return new ProcessResult(Status.NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* See
|
||||
* {@link #runHookIfPresent(Repository, String, String[], PrintStream, PrintStream, String)}
|
||||
* {@link #runHookIfPresent(Repository, String, String[], OutputStream, OutputStream, String)}
|
||||
* . Should only be called by FS supporting shell scripts execution.
|
||||
*
|
||||
* @param repository
|
||||
|
@ -1909,11 +1908,11 @@ public ProcessResult runHookIfPresent(Repository repository,
|
|||
* @throws org.eclipse.jgit.api.errors.JGitInternalException
|
||||
* if we fail to run the hook somehow. Causes may include an
|
||||
* interrupted process or I/O errors.
|
||||
* @since 4.0
|
||||
* @since 5.11
|
||||
*/
|
||||
protected ProcessResult internalRunHookIfPresent(Repository repository,
|
||||
final String hookName, String[] args, PrintStream outRedirect,
|
||||
PrintStream errRedirect, String stdinArgs)
|
||||
final String hookName, String[] args, OutputStream outRedirect,
|
||||
OutputStream errRedirect, String stdinArgs)
|
||||
throws JGitInternalException {
|
||||
File hookFile = findHook(repository, hookName);
|
||||
if (hookFile == null || hookName == null) {
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.FileAlreadyExistsException;
|
||||
import java.nio.file.FileStore;
|
||||
|
@ -268,7 +268,7 @@ String shellQuote(String cmd) {
|
|||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public ProcessResult runHookIfPresent(Repository repository, String hookName,
|
||||
String[] args, PrintStream outRedirect, PrintStream errRedirect,
|
||||
String[] args, OutputStream outRedirect, OutputStream errRedirect,
|
||||
String stdinArgs) throws JGitInternalException {
|
||||
return internalRunHookIfPresent(repository, hookName, args, outRedirect,
|
||||
errRedirect, stdinArgs);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.PrintStream;
|
||||
import java.io.OutputStream;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
|
@ -139,7 +139,7 @@ public String relativize(String base, String other) {
|
|||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public ProcessResult runHookIfPresent(Repository repository, String hookName,
|
||||
String[] args, PrintStream outRedirect, PrintStream errRedirect,
|
||||
String[] args, OutputStream outRedirect, OutputStream errRedirect,
|
||||
String stdinArgs) throws JGitInternalException {
|
||||
return internalRunHookIfPresent(repository, hookName, args, outRedirect,
|
||||
errRedirect, stdinArgs);
|
||||
|
|
Loading…
Reference in New Issue