diff --git a/src/main/java/com/ning/http/client/multipart/MultipartUtils.java b/src/main/java/com/ning/http/client/multipart/MultipartUtils.java index d77827b..eee8530 100644 --- a/src/main/java/com/ning/http/client/multipart/MultipartUtils.java +++ b/src/main/java/com/ning/http/client/multipart/MultipartUtils.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2025 Contributors to the Eclipse Foundation. * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. * Copyright 2010 Ning, Inc. * @@ -38,6 +39,7 @@ import java.util.List; import java.util.Random; import java.util.Set; +import java.util.concurrent.ThreadLocalRandom; public class MultipartUtils { @@ -95,7 +97,7 @@ public static MultipartBody newMultipartBody(List parts, FluentCaseInsensi } private static byte[] generateMultipartBoundary() { - Random rand = new Random(); + final Random rand = ThreadLocalRandom.current(); byte[] bytes = new byte[rand.nextInt(11) + 30]; // a random size from 30 to 40 for (int i = 0; i < bytes.length; i++) { bytes[i] = MULTIPART_CHARS[rand.nextInt(MULTIPART_CHARS.length)]; diff --git a/src/main/java/com/ning/http/client/webdav/WebDavCompletionHandlerBase.java b/src/main/java/com/ning/http/client/webdav/WebDavCompletionHandlerBase.java index e05e066..ccc266e 100644 --- a/src/main/java/com/ning/http/client/webdav/WebDavCompletionHandlerBase.java +++ b/src/main/java/com/ning/http/client/webdav/WebDavCompletionHandlerBase.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2025 Contributors to the Eclipse Foundation. * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2010-2012 Sonatype, Inc. All rights reserved. * @@ -252,6 +253,13 @@ public String getProtocolText() { private Document readXMLResponse(InputStream stream) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + final String FEATURE = "http://apache.org/xml/features/disallow-doctype-decl"; + try { + factory.setFeature(FEATURE, true); + } catch (ParserConfigurationException e) { + throw new IllegalStateException("ParserConfigurationException was thrown. The feature '" + FEATURE + + "' is not supported by your XML processor.", e); + } Document document = null; try { document = factory.newDocumentBuilder().parse(stream); diff --git a/src/test/java/com/ning/http/client/async/ByteBufferCapacityTest.java b/src/test/java/com/ning/http/client/async/ByteBufferCapacityTest.java index a159fc9..5ded23e 100644 --- a/src/test/java/com/ning/http/client/async/ByteBufferCapacityTest.java +++ b/src/test/java/com/ning/http/client/async/ByteBufferCapacityTest.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @@ -119,7 +120,7 @@ public String getTargetUrl() { public static File createTempFile(byte[] pattern, int repeat) throws IOException { TMP.mkdirs(); TMP.deleteOnExit(); - File tmpFile = File.createTempFile("tmpfile-", ".data", TMP); + final File tmpFile = Files.createTempFile(TMP.toPath(), "tmpfile-", ".data").toFile(); write(pattern, repeat, tmpFile); return tmpFile; diff --git a/src/test/java/com/ning/http/client/async/FilePartLargeFileTest.java b/src/test/java/com/ning/http/client/async/FilePartLargeFileTest.java index a9ea00a..9f0f8bd 100644 --- a/src/test/java/com/ning/http/client/async/FilePartLargeFileTest.java +++ b/src/test/java/com/ning/http/client/async/FilePartLargeFileTest.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.nio.file.Files; import java.util.UUID; public abstract class FilePartLargeFileTest extends AbstractBasicTest { @@ -126,7 +127,7 @@ public boolean handle(Request request, org.eclipse.jetty.server.Response respons public static File createTempFile(byte[] pattern, int repeat) throws IOException { TMP.mkdirs(); TMP.deleteOnExit(); - File tmpFile = File.createTempFile("tmpfile-", ".data", TMP); + final File tmpFile = Files.createTempFile(TMP.toPath(), "tmpfile-", ".data").toFile(); tmpFile.deleteOnExit(); write(pattern, repeat, tmpFile); diff --git a/src/test/java/com/ning/http/client/async/MultipartUploadTest.java b/src/test/java/com/ning/http/client/async/MultipartUploadTest.java index 404938c..7b237bb 100644 --- a/src/test/java/com/ning/http/client/async/MultipartUploadTest.java +++ b/src/test/java/com/ning/http/client/async/MultipartUploadTest.java @@ -60,6 +60,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -185,7 +186,7 @@ public void testSendingSmallFilesAndByteArray() throws IOException, InterruptedE gzipped.add(false); boolean tmpFileCreated = false; - File tmpFile = File.createTempFile("textbytearray", ".txt"); + final File tmpFile = Files.createTempFile("textbytearray", ".txt").toFile(); try (FileOutputStream os = new FileOutputStream(tmpFile)) { IOUtils.write(expectedContents.getBytes("UTF-8"), os); tmpFileCreated = true; @@ -417,7 +418,9 @@ public void service(HttpServletRequest request, HttpServletResponse response) th // Process the input stream OutputStream os = null; try { - File tmpFile = File.createTempFile(UUID.randomUUID().toString() + "_MockUploadServlet", ".tmp"); + final File tmpFile = + Files.createTempFile(UUID.randomUUID().toString() + "_MockUploadServlet", + ".tmp").toFile(); tmpFile.deleteOnExit(); os = new FileOutputStream(tmpFile); byte[] buffer = new byte[4096]; diff --git a/src/test/java/com/ning/http/client/async/PutLargeFileTest.java b/src/test/java/com/ning/http/client/async/PutLargeFileTest.java index 980c1ac..3fd636d 100644 --- a/src/test/java/com/ning/http/client/async/PutLargeFileTest.java +++ b/src/test/java/com/ning/http/client/async/PutLargeFileTest.java @@ -32,6 +32,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.UUID; /** @@ -115,7 +116,7 @@ public boolean handle(Request request, org.eclipse.jetty.server.Response respons public static File createTempFile(byte[] pattern, int repeat) throws IOException { TMP.mkdirs(); TMP.deleteOnExit(); - File tmpFile = File.createTempFile("tmpfile-", ".data", TMP); + final File tmpFile = Files.createTempFile(TMP.toPath(), "tmpfile-", ".data").toFile(); tmpFile.deleteOnExit(); write(pattern, repeat, tmpFile); diff --git a/src/test/java/com/ning/http/client/async/SimpleAsyncHttpClientTest.java b/src/test/java/com/ning/http/client/async/SimpleAsyncHttpClientTest.java index 0766500..76f89e6 100644 --- a/src/test/java/com/ning/http/client/async/SimpleAsyncHttpClientTest.java +++ b/src/test/java/com/ning/http/client/async/SimpleAsyncHttpClientTest.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2025 Contributors to the Eclipse Foundation. * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2010-2012 Sonatype, Inc. All rights reserved. * @@ -34,6 +35,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -118,7 +120,7 @@ public void testPutZeroBytesFileTest() throws Throwable { SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder().setProviderClass(getProviderClass()).setPooledConnectionIdleTimeout(100).setMaximumConnectionsTotal(50).setRequestTimeout(5 * 1000).setUrl(getTargetUrl() + "/testPutZeroBytesFileTest.txt").setHeader("Content-Type", "text/plain") .build(); try { - File tmpfile = File.createTempFile("testPutZeroBytesFile", ".tmp"); + final File tmpfile = Files.createTempFile("testPutZeroBytesFile", ".tmp").toFile(); tmpfile.deleteOnExit(); Future future = client.put(new FileBodyGenerator(tmpfile)); diff --git a/src/test/java/com/ning/http/client/async/TransferListenerTest.java b/src/test/java/com/ning/http/client/async/TransferListenerTest.java index c1294b3..6c564ec 100644 --- a/src/test/java/com/ning/http/client/async/TransferListenerTest.java +++ b/src/test/java/com/ning/http/client/async/TransferListenerTest.java @@ -40,6 +40,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; @@ -253,7 +254,7 @@ public String getTargetUrl() { public static File createTempFile(byte[] pattern, int repeat) throws IOException { TMP.mkdirs(); TMP.deleteOnExit(); - File tmpFile = File.createTempFile("tmpfile-", ".data", TMP); + final File tmpFile = Files.createTempFile(TMP.toPath(), "tmpfile-", ".data").toFile(); write(pattern, repeat, tmpFile); return tmpFile; diff --git a/src/test/java/com/ning/http/client/async/grizzly/GrizzlyFeedableBodyGeneratorTest.java b/src/test/java/com/ning/http/client/async/grizzly/GrizzlyFeedableBodyGeneratorTest.java index 015d2e1..d5c7ff0 100644 --- a/src/test/java/com/ning/http/client/async/grizzly/GrizzlyFeedableBodyGeneratorTest.java +++ b/src/test/java/com/ning/http/client/async/grizzly/GrizzlyFeedableBodyGeneratorTest.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2025 Contributors to the Eclipse Foundation. * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013-2014 Sonatype, Inc. All rights reserved. * @@ -27,6 +28,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.nio.file.Files; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; @@ -356,7 +358,7 @@ private static SSLEngineConfigurator createSSLConfig() private void generateTempFile() throws IOException { - tempFile = File.createTempFile("feedable", null); + tempFile = Files.createTempFile("feedable", null).toFile(); int total = 0; byte[] chunk = new byte[1024]; Random r = new Random(System.currentTimeMillis());