Skip to content

Commit 9b06284

Browse files
committed
uber, jar, zip - TBUILD-42 Use buffered output streams everywhere
1 parent 973eaf5 commit 9b06284

File tree

5 files changed

+18
-18
lines changed

5 files changed

+18
-18
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
Changelog
22
===========
33

4+
* next
5+
* uber, jar, zip - TBUILD-42 Use buffered output streams everywhere
46
* v0.10.3 15ead66 on May, 2024
57
* compile-clj - add simple spec for :basis arg
68
* v0.10.1 5e3b8f3 on Apr 28, 2024

src/main/clojure/clojure/tools/build/tasks/jar.clj

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
(ns clojure.tools.build.tasks.jar
1010
(:require
11+
[clojure.java.io :as jio]
1112
[clojure.tools.build.api :as api]
1213
[clojure.tools.build.util.file :as file]
1314
[clojure.tools.build.util.zip :as zip]
1415
[clojure.string :as str])
1516
(:import
16-
[java.io FileOutputStream]
1717
[java.util.jar Manifest JarOutputStream]))
1818

1919
(defn jar
@@ -31,5 +31,5 @@
3131
"Build-Jdk-Spec" (System/getProperty "java.specification.version")}
3232
main (assoc "Main-Class" (str/replace (str main) \- \_)))
3333
mf-attr-strs))
34-
(with-open [jos (JarOutputStream. (FileOutputStream. jar-file) manifest)]
34+
(with-open [jos (JarOutputStream. (jio/output-stream jar-file) manifest)]
3535
(zip/copy-to-zip jos class-dir-file)))))

src/main/clojure/clojure/tools/build/tasks/uber.clj

+6-7
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
[clojure.tools.build.util.file :as file]
1717
[clojure.tools.build.util.zip :as zip])
1818
(:import
19-
[java.io File InputStream FileInputStream BufferedInputStream IOException
20-
OutputStream FileOutputStream BufferedOutputStream ByteArrayOutputStream]
19+
[java.io File InputStream IOException OutputStream ByteArrayOutputStream]
2120
[java.nio.file Files]
2221
[java.nio.file.attribute FileAttribute FileTime]
2322
[java.util.jar JarEntry JarInputStream JarOutputStream Manifest]))
@@ -111,7 +110,7 @@
111110
out-file (jio/file out-dir path)]
112111
(if string
113112
(spit out-file string :append ^boolean append)
114-
(copy-stream! ^InputStream stream (BufferedOutputStream. (FileOutputStream. out-file ^boolean append)) buffer))
113+
(copy-stream! ^InputStream stream (jio/output-stream out-file :append append) buffer))
115114
(Files/setLastModifiedTime (.toPath out-file) last-modified-time)))
116115

117116
(defn- handle-conflict
@@ -158,7 +157,7 @@
158157
;; write new file, parent dir exists for writing
159158
(ensure-dir (.getParentFile out-file) out-file)
160159
(do
161-
(copy-stream! ^InputStream is (BufferedOutputStream. (FileOutputStream. out-file)) buffer)
160+
(copy-stream! ^InputStream is (jio/output-stream out-file) buffer)
162161
(Files/setLastModifiedTime (.toPath out-file) last-modified-time)
163162
state)
164163

@@ -173,7 +172,7 @@
173172
state
174173

175174
(str/ends-with? (.getPath lib-file) ".jar")
176-
(with-open [jis (JarInputStream. (BufferedInputStream. (FileInputStream. lib-file)))]
175+
(with-open [jis (JarInputStream. (jio/input-stream lib-file))]
177176
(loop [the-state state]
178177
(if-let [entry (.getNextJarEntry jis)]
179178
(let [path (.getName entry)
@@ -297,7 +296,7 @@
297296
(.exists (jio/file working-dir "META-INF" "versions")) (assoc "Multi-Release" "true"))
298297
mf-attr-strs))
299298
(file/ensure-dir (.getParent uber-file))
300-
(with-open [jos (JarOutputStream. (FileOutputStream. uber-file) manifest)]
299+
(with-open [jos (JarOutputStream. (jio/output-stream uber-file) manifest)]
301300
(zip/copy-to-zip jos working-dir)))
302301
(finally
303-
(file/delete working-dir)))))
302+
(file/delete working-dir)))))

src/main/clojure/clojure/tools/build/tasks/zip.clj

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88

99
(ns clojure.tools.build.tasks.zip
1010
(:require
11+
[clojure.java.io :as jio]
1112
[clojure.tools.build.api :as api]
1213
[clojure.tools.build.util.file :as file]
1314
[clojure.tools.build.util.zip :as zip])
1415
(:import
15-
[java.io FileOutputStream]
1616
[java.util.zip ZipOutputStream]))
1717

1818
(set! *warn-on-reflection* true)
@@ -21,7 +21,7 @@
2121
[{:keys [src-dirs zip-file] :as params}]
2222
(let [zip-file (api/resolve-path zip-file)]
2323
(file/ensure-dir (.getParent zip-file))
24-
(with-open [zos (ZipOutputStream. (FileOutputStream. zip-file))]
24+
(with-open [zos (ZipOutputStream. (jio/output-stream zip-file))]
2525
(doseq [zpath src-dirs]
2626
(let [zip-from (file/ensure-dir (api/resolve-path zpath))]
2727
;(println "Zipping from" (.getPath zip-from) "to" (.getPath zip-file))
@@ -32,4 +32,4 @@
3232
(let [{:keys [zip-file target-dir]} params
3333
ret (zip/unzip (api/resolve-path zip-file) (api/resolve-path target-dir))]
3434
(when-not ret
35-
(throw (ex-info (format "Zip file does not exist: %s" zip-file) {})))))
35+
(throw (ex-info (format "Zip file does not exist: %s" zip-file) {})))))

src/main/clojure/clojure/tools/build/util/zip.clj

+5-6
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
[clojure.tools.build.util.file :as file]
1313
[clojure.string :as str])
1414
(:import
15-
[java.io File InputStream BufferedInputStream FileInputStream
16-
OutputStream BufferedOutputStream FileOutputStream]
15+
[java.io File InputStream OutputStream]
1716
[java.nio.file Files LinkOption]
1817
[java.nio.file.attribute BasicFileAttributes]
1918
[java.util.zip ZipFile ZipInputStream ZipOutputStream ZipEntry]
@@ -33,7 +32,7 @@
3332
(.setLastModifiedTime (.lastModifiedTime attrs)))]
3433
(.putNextEntry output-stream entry)
3534
(when-not dir
36-
(with-open [fis (BufferedInputStream. (FileInputStream. file))]
35+
(with-open [fis (jio/input-stream file)]
3736
(jio/copy fis output-stream)))
3837

3938
(.closeEntry output-stream)))
@@ -84,17 +83,17 @@
8483

8584
(defn unzip
8685
[^String zip-path ^String target-dir]
87-
(let [buffer (byte-array 1024)
86+
(let [buffer (byte-array 4096)
8887
zip-file (jio/file zip-path)]
8988
(if (.exists zip-file)
90-
(with-open [zis (ZipInputStream. (BufferedInputStream. (FileInputStream. zip-file)))]
89+
(with-open [zis (ZipInputStream. (jio/input-stream zip-file))]
9190
(loop []
9291
(if-let [entry (.getNextEntry zis)]
9392
;(println "entry:" (.getName entry) (.isDirectory entry))
9493
(let [out-file (jio/file target-dir (.getName entry))]
9594
(jio/make-parents out-file)
9695
(when-not (.isDirectory entry)
97-
(with-open [output (BufferedOutputStream. (FileOutputStream. out-file))]
96+
(with-open [output (jio/output-stream out-file)]
9897
(copy-stream! zis output buffer)
9998
(Files/setLastModifiedTime (.toPath out-file) (.getLastModifiedTime entry))))
10099
(recur))

0 commit comments

Comments
 (0)