Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit a8b1ac4

Browse files
committed
build(desugaring): enable desugaring for InputStream.transferTo(OutputStream) in JGit
1 parent 7705c06 commit a8b1ac4

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

composite-builds/build-deps-common/desugaring-core/src/main/java/com/itsaky/androidide/desugaring/core/java/io/DesugarInputStream.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import java.io.IOException;
2121
import java.io.InputStream;
22+
import java.io.OutputStream;
2223
import java.util.ArrayList;
2324
import java.util.Arrays;
2425
import java.util.List;
@@ -119,10 +120,23 @@ public static int readNBytes(InputStream input, byte[] b, int off, int len) thro
119120
int n = 0;
120121
while (n < len) {
121122
int count = input.read(b, off + n, len - n);
122-
if (count < 0)
123+
if (count < 0) {
123124
break;
125+
}
124126
n += count;
125127
}
126128
return n;
127129
}
130+
131+
public static long transferTo(InputStream in, OutputStream out) throws IOException {
132+
Objects.requireNonNull(out, "out");
133+
long transferred = 0;
134+
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
135+
int read;
136+
while ((read = in.read(buffer, 0, DEFAULT_BUFFER_SIZE)) >= 0) {
137+
out.write(buffer, 0, read);
138+
transferred += read;
139+
}
140+
return transferred;
141+
}
128142
}

composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/dsl/ReplaceMethodInsnKey.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package com.itsaky.androidide.desugaring.dsl
1919

20+
import java.io.Serializable
21+
2022
/**
2123
* Key for storing [ReplaceMethodInsnKey] instances in a map.
2224
*
@@ -26,4 +28,7 @@ data class ReplaceMethodInsnKey(
2628
val className: String,
2729
val methodName: String,
2830
val methodDescriptor: String
29-
)
31+
) : Serializable {
32+
@JvmField
33+
val serialVersionUID = 1L
34+
}

composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/utils/JavaIOReplacements.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,10 @@ object JavaIOReplacements {
5959
InputStream::readAllBytes.javaMethod!!,
6060
DesugarInputStream::readAllBytes.javaMethod!!
6161
)
62+
63+
replaceMethod(
64+
InputStream::transferTo.javaMethod!!,
65+
DesugarInputStream::transferTo.javaMethod!!
66+
)
6267
}
6368
}

0 commit comments

Comments
 (0)