Skip to content

Commit 267af58

Browse files
committed
Slim down things, PR comment applied
1 parent 41d483d commit 267af58

File tree

3 files changed

+16
-40
lines changed

3 files changed

+16
-40
lines changed

src/main/java/org/codehaus/plexus/components/secdispatcher/internal/DefaultSecDispatcher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public SettingsSecurity readConfiguration(boolean createIfMissing) throws IOExce
130130
@Override
131131
public void writeConfiguration(SettingsSecurity configuration) throws IOException {
132132
requireNonNull(configuration, "configuration is null");
133-
SecUtil.writeWithBackup(getConfigurationPath(), configuration);
133+
SecUtil.write(getConfigurationPath(), configuration, true);
134134
}
135135

136136
private Map<String, String> prepareDispatcherConfig(String type) {

src/main/java/org/codehaus/plexus/components/secdispatcher/internal/SecUtil.java

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import java.io.IOException;
1919
import java.io.InputStream;
2020
import java.io.OutputStream;
21-
import java.nio.ByteBuffer;
2221
import java.nio.charset.StandardCharsets;
2322
import java.nio.file.Files;
2423
import java.nio.file.NoSuchFileException;
@@ -89,23 +88,12 @@ public static Map<String, String> getConfig(SettingsSecurity sec, String name) {
8988
return null;
9089
}
9190

92-
public static void write(Path target, SettingsSecurity configuration) throws IOException {
93-
requireNonNull(target, "file must not be null");
94-
requireNonNull(configuration, "sec must not be null");
95-
writeFile(target, configuration, false);
96-
}
97-
98-
public static void writeWithBackup(Path target, SettingsSecurity configuration) throws IOException {
99-
requireNonNull(target, "file must not be null");
100-
requireNonNull(configuration, "sec must not be null");
101-
writeFile(target, configuration, true);
102-
}
103-
10491
private static final boolean IS_WINDOWS =
10592
System.getProperty("os.name", "unknown").startsWith("Windows");
10693

107-
private static void writeFile(Path target, SettingsSecurity configuration, boolean doBackup) throws IOException {
108-
requireNonNull(target, "target is null");
94+
public static void write(Path target, SettingsSecurity configuration, boolean doBackup) throws IOException {
95+
requireNonNull(target, "file must not be null");
96+
requireNonNull(configuration, "configuration must not be null");
10997
Path parent = requireNonNull(target.getParent(), "target must have parent");
11098
Files.createDirectories(parent);
11199
Path tempFile = parent.resolve(target.getFileName() + "."
@@ -114,13 +102,19 @@ private static void writeFile(Path target, SettingsSecurity configuration, boole
114102
configuration.setModelVersion(SecDispatcher.class.getPackage().getSpecificationVersion());
115103
configuration.setModelEncoding(StandardCharsets.UTF_8.name());
116104

117-
try (OutputStream out = Files.newOutputStream(tempFile)) {
118-
new SecurityConfigurationStaxWriter().write(out, configuration);
105+
try {
106+
try (OutputStream tempOut = Files.newOutputStream(tempFile)) {
107+
new SecurityConfigurationStaxWriter().write(tempOut, configuration);
108+
}
109+
119110
if (doBackup && Files.isRegularFile(target)) {
120111
Files.copy(target, parent.resolve(target.getFileName() + ".bak"), StandardCopyOption.REPLACE_EXISTING);
121112
}
122113
if (IS_WINDOWS) {
123-
copy(tempFile, target);
114+
try (InputStream is = Files.newInputStream(tempFile);
115+
OutputStream os = Files.newOutputStream(target)) {
116+
is.transferTo(os);
117+
}
124118
} else {
125119
Files.move(tempFile, target, StandardCopyOption.REPLACE_EXISTING);
126120
}
@@ -130,22 +124,4 @@ private static void writeFile(Path target, SettingsSecurity configuration, boole
130124
Files.deleteIfExists(tempFile);
131125
}
132126
}
133-
134-
/**
135-
* On Windows we use pre-NIO2 way to copy files, as for some reason it works. Beat me why.
136-
*/
137-
private static void copy(Path source, Path target) throws IOException {
138-
ByteBuffer buffer = ByteBuffer.allocate(1024 * 32);
139-
byte[] array = buffer.array();
140-
try (InputStream is = Files.newInputStream(source);
141-
OutputStream os = Files.newOutputStream(target)) {
142-
while (true) {
143-
int bytes = is.read(array);
144-
if (bytes < 0) {
145-
break;
146-
}
147-
os.write(array, 0, bytes);
148-
}
149-
}
150-
}
151127
}

src/test/java/org/codehaus/plexus/components/secdispatcher/internal/SecUtilTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ private void saveSec(String path, String masterSource) throws IOException {
5555
conf.setName(_confName);
5656
conf.addProperty(cp);
5757
sec.addConfiguration(conf);
58-
SecUtil.write(Paths.get(path), sec);
58+
SecUtil.write(Paths.get(path), sec, false);
5959
}
6060

6161
@BeforeEach
@@ -71,7 +71,7 @@ void readWrite() throws IOException {
7171
assertEquals(SettingsSecurity.class.getPackage().getSpecificationVersion(), config.getModelVersion());
7272
assertEquals(StandardCharsets.UTF_8.name(), config.getModelEncoding());
7373
assertEquals("magic:mighty", config.getMasterSource());
74-
SecUtil.write(path, config);
74+
SecUtil.write(path, config, false);
7575
}
7676

7777
@Test
@@ -82,7 +82,7 @@ void readWriteWithBackup() throws IOException {
8282
assertEquals(SettingsSecurity.class.getPackage().getSpecificationVersion(), config.getModelVersion());
8383
assertEquals(StandardCharsets.UTF_8.name(), config.getModelEncoding());
8484
assertEquals("magic:mighty", config.getMasterSource());
85-
SecUtil.writeWithBackup(path, config);
85+
SecUtil.write(path, config, true);
8686
assertTrue(Files.exists(path));
8787
assertTrue(Files.exists(path.getParent().resolve(path.getFileName() + ".bak")));
8888
}

0 commit comments

Comments
 (0)