From a8b1ac41a166bfdc3c8ef26dadf2e6ff1c22f91f Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sat, 2 Mar 2024 13:15:00 +0530 Subject: [PATCH] build(desugaring): enable desugaring for InputStream.transferTo(OutputStream) in JGit --- .../core/java/io/DesugarInputStream.java | 16 +++++++++++++++- .../desugaring/dsl/ReplaceMethodInsnKey.kt | 7 ++++++- .../desugaring/utils/JavaIOReplacements.kt | 5 +++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/composite-builds/build-deps-common/desugaring-core/src/main/java/com/itsaky/androidide/desugaring/core/java/io/DesugarInputStream.java b/composite-builds/build-deps-common/desugaring-core/src/main/java/com/itsaky/androidide/desugaring/core/java/io/DesugarInputStream.java index 1949eaa80..36b151923 100644 --- a/composite-builds/build-deps-common/desugaring-core/src/main/java/com/itsaky/androidide/desugaring/core/java/io/DesugarInputStream.java +++ b/composite-builds/build-deps-common/desugaring-core/src/main/java/com/itsaky/androidide/desugaring/core/java/io/DesugarInputStream.java @@ -19,6 +19,7 @@ package com.itsaky.androidide.desugaring.core.java.io; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -119,10 +120,23 @@ public class DesugarInputStream { int n = 0; while (n < len) { int count = input.read(b, off + n, len - n); - if (count < 0) + if (count < 0) { break; + } n += count; } return n; } + + public static long transferTo(InputStream in, OutputStream out) throws IOException { + Objects.requireNonNull(out, "out"); + long transferred = 0; + byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; + int read; + while ((read = in.read(buffer, 0, DEFAULT_BUFFER_SIZE)) >= 0) { + out.write(buffer, 0, read); + transferred += read; + } + return transferred; + } } diff --git a/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/dsl/ReplaceMethodInsnKey.kt b/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/dsl/ReplaceMethodInsnKey.kt index c4324696e..b3d41fbbc 100644 --- a/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/dsl/ReplaceMethodInsnKey.kt +++ b/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/dsl/ReplaceMethodInsnKey.kt @@ -17,6 +17,8 @@ package com.itsaky.androidide.desugaring.dsl +import java.io.Serializable + /** * Key for storing [ReplaceMethodInsnKey] instances in a map. * @@ -26,4 +28,7 @@ data class ReplaceMethodInsnKey( val className: String, val methodName: String, val methodDescriptor: String -) +) : Serializable { + @JvmField + val serialVersionUID = 1L +} diff --git a/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/utils/JavaIOReplacements.kt b/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/utils/JavaIOReplacements.kt index 577a639e9..26e386148 100644 --- a/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/utils/JavaIOReplacements.kt +++ b/composite-builds/build-logic/desugaring/src/main/java/com/itsaky/androidide/desugaring/utils/JavaIOReplacements.kt @@ -59,5 +59,10 @@ object JavaIOReplacements { InputStream::readAllBytes.javaMethod!!, DesugarInputStream::readAllBytes.javaMethod!! ) + + replaceMethod( + InputStream::transferTo.javaMethod!!, + DesugarInputStream::transferTo.javaMethod!! + ) } } \ No newline at end of file