Skip to content

Commit 0195b32

Browse files
committed
Use java.nio.file instead of java.io
1 parent 890e443 commit 0195b32

File tree

7 files changed

+80
-48
lines changed

7 files changed

+80
-48
lines changed

deb/src/main/java/org/eclipse/packager/deb/Packages.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@
1313
package org.eclipse.packager.deb;
1414

1515
import java.io.File;
16-
import java.io.FileInputStream;
1716
import java.io.IOException;
1817
import java.io.InputStream;
1918
import java.io.PrintWriter;
2019
import java.nio.charset.StandardCharsets;
20+
import java.nio.file.Files;
21+
import java.nio.file.Path;
2122
import java.security.MessageDigest;
2223
import java.security.NoSuchAlgorithmException;
2324
import java.util.List;
@@ -36,8 +37,13 @@ public final class Packages {
3637
private Packages() {
3738
}
3839

40+
@Deprecated
3941
public static Map<String, String> parseControlFile(final File packageFile) throws IOException, ParserException {
40-
try (final ArArchiveInputStream in = new ArArchiveInputStream(new FileInputStream(packageFile))) {
42+
return parseControlFile(packageFile.toPath());
43+
}
44+
45+
public static Map<String, String> parseControlFile(final Path packageFile) throws IOException, ParserException {
46+
try (final ArArchiveInputStream in = new ArArchiveInputStream(Files.newInputStream(packageFile))) {
4147
ArchiveEntry ar;
4248
while ((ar = in.getNextEntry()) != null) {
4349
if (!ar.getName().equals("control.tar.gz")) {

deb/src/main/java/org/eclipse/packager/deb/build/DebianPackageWriter.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
package org.eclipse.packager.deb.build;
1414

1515
import java.io.File;
16-
import java.io.FileNotFoundException;
17-
import java.io.FileOutputStream;
1816
import java.io.IOException;
1917
import java.io.InputStream;
2018
import java.io.OutputStream;
2119
import java.io.StringWriter;
2220
import java.nio.charset.Charset;
21+
import java.nio.charset.StandardCharsets;
2322
import java.nio.file.Files;
23+
import java.nio.file.Path;
2424
import java.security.MessageDigest;
2525
import java.time.Instant;
2626
import java.util.HashMap;
@@ -46,7 +46,7 @@
4646
import com.google.common.io.ByteStreams;
4747

4848
public class DebianPackageWriter implements AutoCloseable, BinaryPackageBuilder {
49-
public static final Charset CHARSET = Charset.forName("UTF-8");
49+
public static final Charset CHARSET = StandardCharsets.UTF_8;
5050

5151
private static final int AR_ARCHIVE_DEFAULT_MODE = 33188; // see ArArchive
5252

@@ -56,7 +56,7 @@ public class DebianPackageWriter implements AutoCloseable, BinaryPackageBuilder
5656

5757
private final Supplier<Instant> timestampSupplier;
5858

59-
private final File dataTemp;
59+
private final Path dataTemp;
6060

6161
private final TarArchiveOutputStream dataStream;
6262

@@ -95,19 +95,37 @@ public DebianPackageWriter(final OutputStream stream, final BinaryPackageControl
9595
this.ar.write(this.binaryHeader);
9696
this.ar.closeArchiveEntry();
9797

98-
this.dataTemp = Files.createTempFile("data", null).toFile();
98+
this.dataTemp = Files.createTempFile("data", null);
9999

100-
this.dataStream = new TarArchiveOutputStream(new GZIPOutputStream(new FileOutputStream(this.dataTemp)));
100+
this.dataStream = new TarArchiveOutputStream(new GZIPOutputStream(Files.newOutputStream(this.dataTemp)));
101101
this.dataStream.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
102102
}
103103

104+
@Deprecated
104105
public void addFile(final File file, final String fileName, final EntryInformation entryInformation) throws IOException {
105-
addFile(new FileContentProvider(file), fileName, entryInformation, Optional.of((Supplier<Instant>) () -> {
106-
return file == null || !file.canRead() ? null : Instant.ofEpochMilli(file.lastModified());
106+
addFile(file.toPath(), fileName, entryInformation);
107+
}
108+
109+
public void addFile(final Path file, final String fileName, final EntryInformation entryInformation) throws IOException {
110+
addFile(new FileContentProvider(file), fileName, entryInformation, Optional.of(() -> {
111+
if (file == null || !Files.isReadable(file)) {
112+
return null;
113+
}
114+
115+
try {
116+
return Files.getLastModifiedTime(file).toInstant();
117+
} catch (IOException e) {
118+
return null;
119+
}
107120
}));
108121
}
109122

123+
@Deprecated
110124
public void addFile(final File file, final String fileName, final EntryInformation entryInformation, final Optional<Supplier<Instant>> timestampSupplier) throws IOException {
125+
addFile(file.toPath(), fileName, entryInformation, timestampSupplier);
126+
}
127+
128+
public void addFile(final Path file, final String fileName, final EntryInformation entryInformation, final Optional<Supplier<Instant>> timestampSupplier) throws IOException {
111129
addFile(new FileContentProvider(file), fileName, entryInformation, timestampSupplier);
112130
}
113131

@@ -259,14 +277,14 @@ public void close() throws IOException {
259277
this.ar.close();
260278
}
261279
} finally {
262-
this.dataTemp.delete();
280+
Files.delete(this.dataTemp);
263281
}
264282
}
265283

266-
private void buildAndAddControlFile(final Supplier<Instant> timestampSupplier) throws IOException, FileNotFoundException {
267-
final File controlFile = File.createTempFile("control", null);
284+
private void buildAndAddControlFile(final Supplier<Instant> timestampSupplier) throws IOException {
285+
final Path controlFile = Files.createTempFile("control", null);
268286
try {
269-
try (GZIPOutputStream gout = new GZIPOutputStream(new FileOutputStream(controlFile));
287+
try (GZIPOutputStream gout = new GZIPOutputStream(Files.newOutputStream(controlFile));
270288
TarArchiveOutputStream tout = new TarArchiveOutputStream(gout)) {
271289
tout.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
272290

@@ -280,7 +298,7 @@ private void buildAndAddControlFile(final Supplier<Instant> timestampSupplier) t
280298
}
281299
addArFile(controlFile, "control.tar.gz", timestampSupplier);
282300
} finally {
283-
controlFile.delete();
301+
Files.delete(controlFile);
284302
}
285303
}
286304

@@ -352,11 +370,11 @@ protected ContentProvider createConfFilesContent() throws IOException {
352370
return new StaticContentProvider(sw.toString());
353371
}
354372

355-
private void addArFile(final File file, final String entryName, final Supplier<Instant> timestampSupplier) throws IOException {
356-
final ArArchiveEntry entry = new ArArchiveEntry(entryName, file.length(), 0, 0, AR_ARCHIVE_DEFAULT_MODE, timestampSupplier.get().getEpochSecond());
373+
private void addArFile(final Path file, final String entryName, final Supplier<Instant> timestampSupplier) throws IOException {
374+
final ArArchiveEntry entry = new ArArchiveEntry(entryName, Files.size(file), 0, 0, AR_ARCHIVE_DEFAULT_MODE, timestampSupplier.get().getEpochSecond());
357375
this.ar.putArchiveEntry(entry);
358376

359-
Files.copy(file.toPath(), this.ar);
377+
Files.copy(file, this.ar);
360378

361379
this.ar.closeArchiveEntry();
362380
}

deb/src/main/java/org/eclipse/packager/deb/build/FileContentProvider.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,31 @@
1313
package org.eclipse.packager.deb.build;
1414

1515
import java.io.File;
16-
import java.io.FileInputStream;
1716
import java.io.IOException;
1817
import java.io.InputStream;
18+
import java.nio.file.Files;
19+
import java.nio.file.Path;
1920

2021
public class FileContentProvider implements ContentProvider {
2122

22-
private final File file;
23+
private final Path file;
2324

25+
@Deprecated
2426
public FileContentProvider(final File file) {
27+
this(file.toPath());
28+
}
29+
30+
public FileContentProvider(final Path file) {
2531
this.file = file;
2632
}
2733

2834
@Override
2935
public long getSize() {
30-
return this.file.length();
36+
try {
37+
return Files.size(this.file);
38+
} catch (final IOException e) {
39+
return 0L;
40+
}
3141
}
3242

3343
@Override
@@ -36,7 +46,7 @@ public InputStream createInputStream() throws IOException {
3646
return null;
3747
}
3848

39-
return new FileInputStream(this.file);
49+
return Files.newInputStream(this.file);
4050
}
4151

4252
@Override

deb/src/main/java/org/eclipse/packager/deb/build/TextFileContentProvider.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,23 @@
1414

1515
import java.io.ByteArrayInputStream;
1616
import java.io.File;
17-
import java.io.FileNotFoundException;
1817
import java.io.IOException;
1918
import java.io.InputStream;
2019
import java.nio.charset.StandardCharsets;
21-
22-
import com.google.common.io.Files;
20+
import java.nio.file.Files;
21+
import java.nio.file.Path;
2322

2423
public class TextFileContentProvider implements ContentProvider {
2524
private final byte[] data;
2625

27-
public TextFileContentProvider(final File file) throws FileNotFoundException, IOException {
26+
@Deprecated
27+
public TextFileContentProvider(final File file) throws IOException {
28+
this(file.toPath());
29+
}
30+
31+
public TextFileContentProvider(final Path file) throws IOException {
2832
if (file != null) {
29-
String data = Files.asCharSource(file, StandardCharsets.UTF_8).read();
33+
String data = Files.readString(file);
3034
if (needFix()) {
3135
data = fix(data);
3236
}
@@ -62,5 +66,4 @@ public InputStream createInputStream() throws IOException {
6266
public boolean hasContent() {
6367
return this.data != null;
6468
}
65-
6669
}

deb/src/main/java/org/eclipse/packager/deb/control/BinaryPackageControlFile.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import java.io.UnsupportedEncodingException;
1616
import java.net.URLEncoder;
17+
import java.nio.charset.StandardCharsets;
1718
import java.util.Collections;
1819
import java.util.HashMap;
1920
import java.util.Map;
@@ -136,10 +137,6 @@ private static void hasField(final BinaryPackageControlFile controlFile, final S
136137

137138
public String makeFileName() {
138139
final String name = String.format("%s_%s_%s.deb", getPackage(), getVersion(), getArchitecture());
139-
try {
140-
return URLEncoder.encode(name, "UTF-8");
141-
} catch (final UnsupportedEncodingException e) {
142-
throw new RuntimeException(e);
143-
}
140+
return URLEncoder.encode(name, StandardCharsets.UTF_8);
144141
}
145142
}

deb/src/test/java/org/eclipse/packager/deb/tests/BinaryPackageTest.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@
1212
*/
1313
package org.eclipse.packager.deb.tests;
1414

15-
import java.io.File;
16-
import java.io.FileNotFoundException;
17-
import java.io.FileOutputStream;
1815
import java.io.IOException;
1916
import java.nio.file.Files;
17+
import java.nio.file.Path;
2018
import java.time.Instant;
2119
import java.util.Optional;
2220
import java.util.function.Supplier;
@@ -33,40 +31,40 @@ public class BinaryPackageTest {
3331
@SuppressWarnings("deprecation")
3432
@Test
3533
public void test1() throws IOException, InterruptedException {
36-
final File file1 = Files.createTempFile("test-1-", ".deb").toFile();
37-
final File file2 = Files.createTempFile("test-2-", ".deb").toFile();
34+
final Path file1 = Files.createTempFile("test-1-", ".deb");
35+
final Path file2 = Files.createTempFile("test-2-", ".deb");
3836

3937
final Instant now = Instant.now();
4038
final Supplier<Instant> timestampProvider = () -> now;
4139

4240
createDebFile(file1, timestampProvider);
4341
System.out.println("File: " + file1);
44-
Assertions.assertTrue(file1.exists(), "File exists");
42+
Assertions.assertTrue(Files.exists(file1), "File exists");
4543

4644
Thread.sleep(1_001); // sleep for a second to make sure that a timestamp might be changed
4745

4846
createDebFile(file2, timestampProvider);
4947
System.out.println("File: " + file2);
50-
Assertions.assertTrue(file2.exists(), "File exists");
48+
Assertions.assertTrue(Files.exists(file2), "File exists");
5149

52-
final byte[] b1 = Files.readAllBytes(file1.toPath());
50+
final byte[] b1 = Files.readAllBytes(file1);
5351
final String h1 = Hashing.md5().hashBytes(b1).toString();
54-
final byte[] b2 = Files.readAllBytes(file2.toPath());
52+
final byte[] b2 = Files.readAllBytes(file2);
5553
final String h2 = Hashing.md5().hashBytes(b2).toString();
5654
System.out.println(h1);
5755
System.out.println(h2);
5856
Assertions.assertEquals(h1, h2);
5957
}
6058

61-
private void createDebFile(final File file, final Supplier<Instant> timestampProvider) throws IOException, FileNotFoundException {
59+
private void createDebFile(final Path file, final Supplier<Instant> timestampProvider) throws IOException {
6260
final BinaryPackageControlFile packageFile = new BinaryPackageControlFile();
6361
packageFile.setPackage("test");
6462
packageFile.setVersion("0.0.1");
6563
packageFile.setArchitecture("all");
6664
packageFile.setMaintainer("Jens Reimann <[email protected]>");
6765
packageFile.setDescription("Test package\nThis is just a test package\n\nNothing to worry about!");
6866

69-
try (DebianPackageWriter deb = new DebianPackageWriter(new FileOutputStream(file), packageFile, timestampProvider)) {
67+
try (DebianPackageWriter deb = new DebianPackageWriter(Files.newOutputStream(file), packageFile, timestampProvider)) {
7068
deb.addFile("Hello World\n".getBytes(), "/usr/share/foo-test/foo.txt", null, Optional.of(timestampProvider));
7169
deb.addFile("Hello World\n".getBytes(), "/etc/foo.txt", EntryInformation.DEFAULT_FILE_CONF, Optional.of(timestampProvider));
7270
}

rpm/src/test/java/org/eclipse/packager/rpm/InputStreamTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
package org.eclipse.packager.rpm;
1515

1616
import java.io.BufferedInputStream;
17-
import java.io.File;
18-
import java.io.FileInputStream;
1917
import java.io.IOException;
18+
import java.nio.file.Files;
19+
import java.nio.file.Paths;
2020

2121
import org.eclipse.packager.rpm.app.Dumper;
2222
import org.eclipse.packager.rpm.parse.RpmInputStream;
@@ -27,7 +27,7 @@ public class InputStreamTest {
2727

2828
@Test
2929
public void test1() throws IOException {
30-
try (final RpmInputStream in = new RpmInputStream(new BufferedInputStream(new FileInputStream(new File("src/test/resources/data/org.eclipse.scada-0.2.1-1.noarch.rpm"))))) {
30+
try (final RpmInputStream in = new RpmInputStream(new BufferedInputStream(Files.newInputStream(Paths.get("src/test/resources/data/org.eclipse.scada-0.2.1-1.noarch.rpm"))))) {
3131
Dumper.dumpAll(in);
3232

3333
Assertions.assertEquals(280, in.getPayloadHeader().getStart());
@@ -61,7 +61,7 @@ public void test1() throws IOException {
6161

6262
@Test
6363
public void test2() throws IOException {
64-
try (final RpmInputStream in = new RpmInputStream(new BufferedInputStream(new FileInputStream(new File("src/test/resources/data/org.eclipse.scada-centos6-0.2.1-1.noarch.rpm"))))) {
64+
try (final RpmInputStream in = new RpmInputStream(new BufferedInputStream(Files.newInputStream(Paths.get("src/test/resources/data/org.eclipse.scada-centos6-0.2.1-1.noarch.rpm"))))) {
6565
Dumper.dumpAll(in);
6666
}
6767
}

0 commit comments

Comments
 (0)