Skip to content

Commit 235c80a

Browse files
authored
fix: remove use of commons-io in dev-server (#22860)
Remove the usage of commons-io in vaadin-dev-server module as it is not required and has been comming from transitive dependency. Fixes #22858
1 parent ddc03b6 commit 235c80a

File tree

11 files changed

+53
-48
lines changed

11 files changed

+53
-48
lines changed

vaadin-dev-server/src/main/java/com/vaadin/base/devserver/AbstractDevServerRunner.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.net.InetAddress;
2828
import java.net.URL;
2929
import java.nio.charset.StandardCharsets;
30+
import java.nio.file.Files;
3031
import java.util.Enumeration;
3132
import java.util.List;
3233
import java.util.Map;
@@ -38,8 +39,6 @@
3839
import java.util.function.BiConsumer;
3940
import java.util.regex.Pattern;
4041

41-
import org.apache.commons.io.FileUtils;
42-
import org.apache.commons.io.IOUtils;
4342
import org.slf4j.Logger;
4443
import org.slf4j.LoggerFactory;
4544

@@ -58,6 +57,7 @@
5857
import com.vaadin.flow.server.VaadinResponse;
5958
import com.vaadin.flow.server.VaadinService;
6059
import com.vaadin.flow.server.VaadinSession;
60+
import com.vaadin.flow.server.frontend.FileIOUtils;
6161
import com.vaadin.flow.server.frontend.FrontendTools;
6262
import com.vaadin.flow.server.frontend.FrontendUtils;
6363
import com.vaadin.flow.server.startup.ApplicationConfiguration;
@@ -513,8 +513,8 @@ private static int getRunningDevServerPort(File npmFolder) {
513513
File portFile = getDevServerPortFile(npmFolder);
514514
if (portFile.canRead()) {
515515
try {
516-
String portString = FileUtils
517-
.readFileToString(portFile, StandardCharsets.UTF_8)
516+
String portString = Files
517+
.readString(portFile.toPath(), StandardCharsets.UTF_8)
518518
.trim();
519519
if (!portString.isEmpty()) {
520520
port = Integer.parseInt(portString);
@@ -530,7 +530,11 @@ private static int getRunningDevServerPort(File npmFolder) {
530530
* Remove the running port from the vaadinContext and temporary file.
531531
*/
532532
private void removeRunningDevServerPort() {
533-
FileUtils.deleteQuietly(devServerPortFile);
533+
try {
534+
FileIOUtils.delete(devServerPortFile);
535+
} catch (IOException e) {
536+
// ignore
537+
}
534538
}
535539

536540
@Override
@@ -550,7 +554,7 @@ private void reuseExistingPort(int port) {
550554

551555
private void saveRunningDevServerPort() {
552556
try {
553-
FileUtils.writeStringToFile(devServerPortFile, String.valueOf(port),
557+
Files.writeString(devServerPortFile.toPath(), String.valueOf(port),
554558
StandardCharsets.UTF_8);
555559
} catch (IOException e) {
556560
throw new UncheckedIOException(e);
@@ -678,9 +682,10 @@ static boolean handleRequestInternal(VaadinSession session,
678682
} else {
679683
if (request.getHeader("X-DevModePoll") == null) {
680684
// The initial request while the dev server is starting
681-
InputStream inputStream = AbstractDevServerRunner.class
682-
.getResourceAsStream("dev-mode-not-ready.html");
683-
IOUtils.copy(inputStream, response.getOutputStream());
685+
try (InputStream inputStream = AbstractDevServerRunner.class
686+
.getResourceAsStream("dev-mode-not-ready.html")) {
687+
inputStream.transferTo(response.getOutputStream());
688+
}
684689
} else {
685690
// A polling request while the server is starting
686691
response.getWriter().write("Pending");

vaadin-dev-server/src/main/java/com/vaadin/base/devserver/OpenInCurrentIde.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import java.io.File;
1919
import java.io.IOException;
2020
import java.lang.ProcessHandle.Info;
21-
import java.nio.charset.StandardCharsets;
2221
import java.util.ArrayList;
2322
import java.util.Arrays;
2423
import java.util.List;
@@ -28,10 +27,10 @@
2827
import java.util.stream.Collectors;
2928
import java.util.stream.Stream;
3029

31-
import org.apache.commons.io.IOUtils;
3230
import org.slf4j.Logger;
3331
import org.slf4j.LoggerFactory;
3432

33+
import com.vaadin.flow.internal.StringUtil;
3534
import com.vaadin.open.OSUtils;
3635
import com.vaadin.open.Open;
3736

@@ -179,8 +178,7 @@ static void run(String command, String... arguments)
179178
Process process = pb.start();
180179
int exitCode = process.waitFor();
181180
if (exitCode != 0) {
182-
String output = IOUtils.toString(process.getInputStream(),
183-
StandardCharsets.UTF_8);
181+
String output = StringUtil.toUTF8String(process.getInputStream());
184182
throw new IOException(
185183
"Command " + cmd + " terminated with exit code " + exitCode
186184
+ ".\nOutput:\n" + output);

vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeInitializer.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
import java.util.zip.ZipEntry;
4949
import java.util.zip.ZipOutputStream;
5050

51-
import org.apache.commons.io.IOUtils;
5251
import org.slf4j.Logger;
5352
import org.slf4j.LoggerFactory;
5453

@@ -535,12 +534,13 @@ private static void generateJarFromJBossVfsFolder(Object jarVirtualFile,
535534

536535
String relativePath = (String) getPathNameRelativeToMethod
537536
.invoke(child, jarVirtualFile);
538-
InputStream inputStream = (InputStream) openStreamMethod
539-
.invoke(child);
540-
ZipEntry zipEntry = new ZipEntry(relativePath);
541-
zipOutputStream.putNextEntry(zipEntry);
542-
IOUtils.copy(inputStream, zipOutputStream);
543-
zipOutputStream.closeEntry();
537+
try (InputStream inputStream = (InputStream) openStreamMethod
538+
.invoke(child)) {
539+
ZipEntry zipEntry = new ZipEntry(relativePath);
540+
zipOutputStream.putNextEntry(zipEntry);
541+
inputStream.transferTo(zipOutputStream);
542+
zipOutputStream.closeEntry();
543+
}
544544
}
545545
}
546546
}

vaadin-dev-server/src/main/java/com/vaadin/base/devserver/stats/ProjectHelpers.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.UUID;
2626
import java.util.stream.Stream;
2727

28-
import org.apache.commons.io.FileUtils;
2928
import org.slf4j.Logger;
3029
import org.slf4j.LoggerFactory;
3130
import org.w3c.dom.Document;
@@ -245,7 +244,7 @@ static File resolveStatisticsStore() {
245244
vaadinHome = File.createTempFile(
246245
StatisticsConstants.VAADIN_FOLDER_NAME,
247246
UUID.randomUUID().toString());
248-
FileUtils.forceMkdir(vaadinHome);
247+
Files.createDirectories(vaadinHome.toPath());
249248
} catch (IOException e) {
250249
getLogger().debug("Failed to create temp directory ", e);
251250
return null;

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/DevModeEndpointTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import jakarta.servlet.ServletRegistration;
1919

2020
import java.io.File;
21+
import java.nio.file.Files;
2122
import java.nio.file.Paths;
2223
import java.util.Collections;
2324
import java.util.HashMap;
@@ -26,7 +27,6 @@
2627
import java.util.Set;
2728

2829
import net.jcip.annotations.NotThreadSafe;
29-
import org.apache.commons.io.FileUtils;
3030
import org.junit.Assert;
3131
import org.junit.Before;
3232
import org.junit.Test;
@@ -109,7 +109,7 @@ public void setup() throws Exception {
109109
Mockito.when(servletContext.getClassLoader())
110110
.thenReturn(this.getClass().getClassLoader());
111111

112-
FileUtils.forceMkdir(new File(baseDir, "src/main/java"));
112+
Files.createDirectories(new File(baseDir, "src/main/java").toPath());
113113

114114
devModeStartupListener = new DevModeStartupListener();
115115
}

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeInitializerTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.net.URLConnection;
2727
import java.net.URLStreamHandler;
2828
import java.nio.charset.StandardCharsets;
29+
import java.nio.file.Files;
2930
import java.nio.file.Paths;
3031
import java.util.ArrayList;
3132
import java.util.Collection;
@@ -39,7 +40,6 @@
3940
import java.util.function.Function;
4041

4142
import net.jcip.annotations.NotThreadSafe;
42-
import org.apache.commons.io.FileUtils;
4343
import org.junit.Assert;
4444
import org.junit.Rule;
4545
import org.junit.Test;
@@ -327,10 +327,10 @@ public void shouldUseByteCodeScannerIfPropertySet() throws Exception {
327327
}
328328

329329
private String getFlowGeneratedImports() throws IOException {
330-
return FileUtils.readFileToString(
331-
FrontendUtils.getFlowGeneratedImports(new File(npmFolder,
332-
FrontendUtils.DEFAULT_FRONTEND_DIR)),
333-
StandardCharsets.UTF_8);
330+
return Files.readString(FrontendUtils
331+
.getFlowGeneratedImports(
332+
new File(npmFolder, FrontendUtils.DEFAULT_FRONTEND_DIR))
333+
.toPath(), StandardCharsets.UTF_8);
334334
}
335335

336336
@Test

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeInitializerTestBase.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.io.IOException;
2323
import java.net.MalformedURLException;
2424
import java.net.URL;
25+
import java.nio.charset.StandardCharsets;
26+
import java.nio.file.Files;
2527
import java.util.Arrays;
2628
import java.util.Collections;
2729
import java.util.HashMap;
@@ -31,7 +33,6 @@
3133
import java.util.Set;
3234
import java.util.stream.Collectors;
3335

34-
import org.apache.commons.io.FileUtils;
3536
import org.junit.Rule;
3637
import org.junit.rules.TemporaryFolder;
3738
import org.mockito.Mockito;
@@ -131,12 +132,13 @@ public void setup() throws Exception {
131132
// Not this needs to update according to dependencies in
132133
// NodeUpdater.getDefaultDependencies and
133134
// NodeUpdater.getDefaultDevDependencies
134-
FileUtils.write(mainPackageFile, getInitalPackageJson().toString(),
135-
"UTF-8");
135+
Files.writeString(mainPackageFile.toPath(),
136+
getInitalPackageJson().toString(), StandardCharsets.UTF_8);
136137
// Create a minimal valid vite.config.ts that exports an empty
137138
// configuration
138-
FileUtils.write(devServerConfigFile, "export default {}\n", "UTF-8");
139-
FileUtils.forceMkdir(new File(baseDir, "src/main/java"));
139+
Files.writeString(devServerConfigFile.toPath(), "export default {}\n",
140+
StandardCharsets.UTF_8);
141+
Files.createDirectories(new File(baseDir, "src/main/java").toPath());
140142

141143
devModeStartupListener = new DevModeStartupListener();
142144
}

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/stats/AbstractStatisticsTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717

1818
import java.io.File;
1919
import java.io.IOException;
20+
import java.nio.file.Files;
21+
import java.nio.file.StandardCopyOption;
2022

21-
import org.apache.commons.io.FileUtils;
2223
import org.junit.Before;
2324
import org.mockito.Mockito;
2425

@@ -49,7 +50,8 @@ protected static File createTempStorage(String testResourceName)
4950
TestUtils.getTestResource(testResourceName).getFile());
5051
File result = File.createTempFile("test", "json");
5152
result.deleteOnExit();
52-
FileUtils.copyFile(original, result);
53+
Files.copy(original.toPath(), result.toPath(),
54+
StandardCopyOption.REPLACE_EXISTING);
5355
return result;
5456
}
5557

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/stats/DevModeUsageStatisticsTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
package com.vaadin.base.devserver.stats;
1717

1818
import java.io.File;
19-
import java.nio.charset.StandardCharsets;
19+
import java.io.InputStream;
2020

2121
import net.jcip.annotations.NotThreadSafe;
22-
import org.apache.commons.io.IOUtils;
2322
import org.junit.Assert;
2423
import org.junit.Test;
2524
import tools.jackson.databind.JsonNode;
2625
import tools.jackson.databind.node.ObjectNode;
2726

2827
import com.vaadin.flow.internal.JacksonUtils;
28+
import com.vaadin.flow.internal.StringUtil;
2929
import com.vaadin.flow.testutil.TestUtils;
3030
import com.vaadin.pro.licensechecker.MachineId;
3131

@@ -39,10 +39,11 @@ public void clientData() throws Exception {
3939
.getTestFolder("stats-data/maven-project-folder1");
4040
DevModeUsageStatistics.init(mavenProjectFolder, storage, sender);
4141

42-
String data = IOUtils.toString(
43-
TestUtils.getTestResource("stats-data/client-data-1.txt"),
44-
StandardCharsets.UTF_8);
45-
DevModeUsageStatistics.handleBrowserData(wrapStats(data));
42+
try (InputStream testResource = TestUtils
43+
.getTestResource("stats-data/client-data-1.txt").openStream()) {
44+
String data = StringUtil.toUTF8String(testResource);
45+
DevModeUsageStatistics.handleBrowserData(wrapStats(data));
46+
}
4647
}
4748

4849
@Test

vaadin-dev-server/src/test/java/com/vaadin/base/devserver/stats/ProjectHelpersTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@
1616
package com.vaadin.base.devserver.stats;
1717

1818
import java.io.File;
19-
import java.io.FileInputStream;
2019
import java.io.IOException;
2120
import java.nio.charset.StandardCharsets;
2221
import java.nio.file.Files;
2322

24-
import org.apache.commons.io.IOUtils;
2523
import org.junit.After;
2624
import org.junit.Assert;
2725
import org.junit.Before;
@@ -88,7 +86,7 @@ public void writeAndReadUserKey() throws IOException {
8886
// Check file
8987
File userFile = new File(System.getProperty("user.home"),
9088
".vaadin/userKey");
91-
String fromFile = IOUtils.toString(new FileInputStream(userFile),
89+
String fromFile = Files.readString(userFile.toPath(),
9290
StandardCharsets.UTF_8);
9391
Assert.assertEquals("{\"key\":\"" + userKey + "\"}", fromFile);
9492

0 commit comments

Comments
 (0)