summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2021-02-09 02:34:10 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2021-02-15 16:45:58 +0100
commit5b528474f590a2abfc6fdc8300e6acfa3d81d355 (patch)
tree819bf50ff0c0f27e182b9b5d7c04d19de49779c7
parent7cc1a52c66077e8b46c10f77ebc8219333a56858 (diff)
downloadjgit-5b528474f590a2abfc6fdc8300e6acfa3d81d355.tar.gz
jgit-5b528474f590a2abfc6fdc8300e6acfa3d81d355.zip
GitHook: use generic OutputStream instead of PrintStream
Change-Id: I15e64dc963c9d27dc9c8de4976dd63f74b918b15 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit/.settings/.api_filters30
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/hooks/GitHook.java26
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java13
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java4
5 files changed, 49 insertions, 28 deletions
diff --git a/org.eclipse.jgit/.settings/.api_filters b/org.eclipse.jgit/.settings/.api_filters
index b74e703a0c..d389ac5888 100644
--- a/org.eclipse.jgit/.settings/.api_filters
+++ b/org.eclipse.jgit/.settings/.api_filters
@@ -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>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/GitHook.java b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/GitHook.java
index 53f4819d34..49e145088d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/hooks/GitHook.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/hooks/GitHook.java
@@ -13,8 +13,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
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 @@ abstract class GitHook<T> implements Callable<T> {
* 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 @@ abstract class GitHook<T> implements Callable<T> {
* @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 @@ abstract class GitHook<T> implements Callable<T> {
* @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 @@ abstract class GitHook<T> implements Callable<T> {
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(
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
index c80a3a4b7f..0946f645fb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
@@ -22,7 +22,6 @@ import java.io.InputStream;
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 abstract class FS {
* @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 abstract class FS {
* @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) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
index fb63dc02bb..946d81c73a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
@@ -16,7 +16,7 @@ import java.io.BufferedReader;
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 @@ public class FS_POSIX extends FS {
/** {@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);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
index d53bff78ea..add5498175 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java
@@ -13,7 +13,7 @@ package org.eclipse.jgit.util;
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 class FS_Win32_Cygwin extends FS_Win32 {
/** {@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);