mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-10-31 21:45:25 +00:00
untar() has the same problem as unzip() about the directionality of the read.
This code duplication in two sides of the if statement is undesirable. Post-release, I need to come back here to introduce a variant of FileCallable that runs on the given FilePath but with InputStream to another FilePath.
This commit is contained in:
1 parent
db5f184981
commit
547cc241c0
1 file changed
+21
-7
@@ -467,6 +467,7 @@ public final class FilePath implements Serializable {
|
||||
* @see #unzipFrom(InputStream)
|
||||
*/
|
||||
public void unzip(final FilePath target) throws IOException, InterruptedException {
|
||||
// TODO: post release, re-unite two branches by introducing FileStreamCallable that resolves InputStream
|
||||
if (this.channel!=target.channel) {// local -> remote or remote->local
|
||||
final RemoteInputStream in = new RemoteInputStream(read(), Flag.GREEDY);
|
||||
target.act(new SecureFileCallable<Void>() {
|
||||
@@ -502,13 +503,26 @@ public final class FilePath implements Serializable {
|
||||
* @see #untarFrom(InputStream, TarCompression)
|
||||
*/
|
||||
public void untar(final FilePath target, final TarCompression compression) throws IOException, InterruptedException {
|
||||
target.act(new SecureFileCallable<Void>() {
|
||||
public Void invoke(File dir, VirtualChannel channel) throws IOException, InterruptedException {
|
||||
readFromTar(FilePath.this.getName(),dir,compression.extract(FilePath.this.read()));
|
||||
return null;
|
||||
}
|
||||
private static final long serialVersionUID = 1L;
|
||||
});
|
||||
// TODO: post release, re-unite two branches by introducing FileStreamCallable that resolves InputStream
|
||||
if (this.channel!=target.channel) {// local -> remote or remote->local
|
||||
final RemoteInputStream in = new RemoteInputStream(read(), Flag.GREEDY);
|
||||
target.act(new SecureFileCallable<Void>() {
|
||||
public Void invoke(File dir, VirtualChannel channel) throws IOException, InterruptedException {
|
||||
readFromTar(FilePath.this.getName(),dir,compression.extract(in));
|
||||
return null;
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
});
|
||||
} else {// local -> local or remote->remote
|
||||
target.act(new SecureFileCallable<Void>() {
|
||||
public Void invoke(File dir, VirtualChannel channel) throws IOException, InterruptedException {
|
||||
readFromTar(FilePath.this.getName(),dir,compression.extract(FilePath.this.read()));
|
||||
return null;
|
||||
}
|
||||
private static final long serialVersionUID = 1L;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user