Author: centic
Date: Mon Apr 21 12:07:21 2025
New Revision: 1925199

URL: http://svn.apache.org/viewvc?rev=1925199&view=rev
Log:
ForbiddenApis: Adjust for deprecations in JDK 21+

Fix failures reported when raising the language level to 23
new URL() is deprecated
new Locale() is deprecated
still allow ThreadDeath and Thread.getId() for now to keep support for JDK 8

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampSimpleHttpClient.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/util/tests/TestTempFileThreaded.java
    
poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java
    poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestNumericFunction.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
    
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/TestDateFormatConverter.java
    poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampSimpleHttpClient.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampSimpleHttpClient.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampSimpleHttpClient.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/services/TimeStampSimpleHttpClient.java
 Mon Apr 21 12:07:21 2025
@@ -24,6 +24,8 @@ import java.net.HttpURLConnection;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Proxy;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
@@ -127,11 +129,11 @@ public class TimeStampSimpleHttpClient i
             proxy = Proxy.NO_PROXY;
         } else {
             try {
-                URL pUrl = new URL(proxyUrl);
+                URL pUrl = new URI(proxyUrl).toURL();
                 String host = pUrl.getHost();
                 int port = pUrl.getPort();
                 proxy = new Proxy(Proxy.Type.HTTP, new 
InetSocketAddress(InetAddress.getByName(host), (port == -1 ? 80 : port)));
-            } catch (IOException ignored) {
+            } catch (IOException | URISyntaxException ignored) {
             }
         }
     }
@@ -205,7 +207,12 @@ public class TimeStampSimpleHttpClient i
     }
 
     protected TimeStampHttpClientResponse handleRedirect(String url, 
MethodHandler handler, boolean followRedirect) throws IOException {
-        HttpURLConnection huc = (HttpURLConnection)new 
URL(url).openConnection(proxy);
+        final HttpURLConnection huc;
+        try {
+            huc = (HttpURLConnection)new 
URI(url).toURL().openConnection(proxy);
+        } catch (URISyntaxException e) {
+            throw new IOException(e);
+        }
         if (ignoreHttpsCertificates) {
             recklessConnection(huc);
         }

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/poifs/crypt/dsig/TestSignatureInfo.java
 Mon Apr 21 12:07:21 2025
@@ -41,6 +41,8 @@ import java.net.ConnectException;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.SocketTimeoutException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.security.GeneralSecurityException;
 import java.security.KeyStoreException;
@@ -597,8 +599,8 @@ class TestSignatureInfo {
     public static String getAccessError(String destinationUrl, boolean 
fireRequest, int timeout) {
         URL url;
         try {
-            url = new URL(destinationUrl);
-        } catch (MalformedURLException e) {
+            url = new URI(destinationUrl).toURL();
+        } catch (MalformedURLException | URISyntaxException e) {
             throw new IllegalArgumentException("Invalid destination URL", e);
         }
 

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/util/tests/TestTempFileThreaded.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/util/tests/TestTempFileThreaded.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/util/tests/TestTempFileThreaded.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/util/tests/TestTempFileThreaded.java
 Mon Apr 21 12:07:21 2025
@@ -33,6 +33,7 @@ import java.util.Map;
 
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.util.SuppressForbidden;
 import org.apache.poi.util.TempFile;
 import org.apache.poi.util.TempFileCreationStrategy;
 import org.apache.poi.xssf.streaming.SXSSFSheet;
@@ -51,6 +52,7 @@ class TestTempFileThreaded {
     // the actual thread-safe temp-file strategy
     private static TempFileCreationStrategy 
createTempFileCreationStrategy(File poiTempFileDirectory) {
         return new TempFileCreationStrategy() {
+            @SuppressForbidden("Thread.getId() is deprecated and replaced with 
threadId() in JDK 19+")
             @Override
             public File createTempFile(String prefix, String suffix) throws 
IOException {
                 long threadId = Thread.currentThread().getId();

Modified: 
poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java
 (original)
+++ 
poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java
 Mon Apr 21 12:07:21 2025
@@ -29,6 +29,8 @@ import java.awt.geom.Dimension2D;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Arrays;
 import java.util.Collections;
@@ -271,9 +273,9 @@ public final class TestPictures {
     @Test
     @Disabled("requires an internet connection to a 3rd party site")
     // As of 2017-06-20, the file still exists at the specified URL and the 
test passes.
-    void testZeroPictureLength() throws IOException {
+    void testZeroPictureLength() throws IOException, URISyntaxException {
         // take the data from www instead of test directory
-        URL url = new 
URL("http://www.cs.sfu.ca/~anoop/courses/CMPT-882-Fall-2002/chris.ppt";);
+        URL url = new 
URI("http://www.cs.sfu.ca/~anoop/courses/CMPT-882-Fall-2002/chris.ppt";).toURL();
         HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(url.openStream());
         /* Assume that the file could retrieved...
         InputStream is;

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java 
(original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestBugs.java Mon 
Apr 21 12:07:21 2025
@@ -26,6 +26,8 @@ import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -2316,12 +2318,12 @@ final class TestBugs extends BaseTestBug
     }
 
     @Test
-    void test46515() throws IOException {
+    void test46515() throws IOException, URISyntaxException {
         try (Workbook wb = openSampleWorkbook("46515.xls")) {
 
             // Get structure from webservice
             String urlString = 
"https://poi.apache.org/components/spreadsheet/images/calendar.jpg";;
-            URL structURL = new URL(urlString);
+            URL structURL = new URI(urlString).toURL();
             BufferedImage bimage;
             try {
                 bimage = ImageIO.read(structURL);

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java
 Mon Apr 21 12:07:21 2025
@@ -26,6 +26,8 @@ import java.io.UncheckedIOException;
 import java.io.UnsupportedEncodingException;
 import java.math.BigInteger;
 import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
@@ -171,7 +173,7 @@ public final class ExcelFileFormatDocFun
                                 String returnClass, String paramClasses, 
String volatileFlagStr) {
             boolean isVolatile = volatileFlagStr.length() > 0;
 
-            Integer funcIxKey = Integer.valueOf(funcIx);
+            Integer funcIxKey = funcIx;
             if(!_groupFunctionIndexes.add(funcIxKey)) {
                 throw new RuntimeException("Duplicate function index (" + 
funcIx + ")");
             }
@@ -209,7 +211,7 @@ public final class ExcelFileFormatDocFun
                     throw new RuntimeException("changing function '"
                             + funcName + "' definition without foot-note");
                 }
-                
_allFunctionsByIndex.remove(Integer.valueOf(fdPrev.getIndex()));
+                _allFunctionsByIndex.remove(fdPrev.getIndex());
             }
         }
 
@@ -326,7 +328,7 @@ public final class ExcelFileFormatDocFun
                     processTableRow(cellData, noteFlags);
                 } else if(matchesRelPath(TABLE_CELL_RELPATH_NAMES)) {
                     _rowData.add(_textNodeBuffer.toString().trim());
-                    _rowNoteFlags.add(Boolean.valueOf(_cellHasNote));
+                    _rowNoteFlags.add(_cellHasNote);
                     _textNodeBuffer.setLength(0);
                 }
             }
@@ -350,7 +352,7 @@ public final class ExcelFileFormatDocFun
             }
             int funcIx = parseInt(funcIxStr);
 
-            boolean hasFootnote = noteFlags[i + 1].booleanValue();
+            boolean hasFootnote = noteFlags[i + 1];
             String funcName = cellData[i + 1];
             int minParams = parseInt(cellData[i + 2]);
             int maxParams = parseInt(cellData[i + 3]);
@@ -577,8 +579,8 @@ public final class ExcelFileFormatDocFun
     private static File downloadSourceFile() {
         URL url;
         try {
-            url = new URL("http://sc.openoffice.org/"; + SOURCE_DOC_FILE_NAME);
-        } catch (MalformedURLException e) {
+            url = new URI("http://sc.openoffice.org/"; + 
SOURCE_DOC_FILE_NAME).toURL();
+        } catch (MalformedURLException | URISyntaxException e) {
             throw new RuntimeException(e);
         }
 

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestNumericFunction.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestNumericFunction.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestNumericFunction.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/formula/functions/TestNumericFunction.java
 Mon Apr 21 12:07:21 2025
@@ -69,7 +69,7 @@ final class TestNumericFunction {
     void testDOLLAR() {
         Locale defaultLocale = LocaleUtil.getUserLocale();
         try {
-            LocaleUtil.setUserLocale(new Locale("en", "US"));
+            LocaleUtil.setUserLocale(new 
Locale.Builder().setLanguage("en").setRegion("US").build());
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
@@ -89,7 +89,7 @@ final class TestNumericFunction {
     void testDOLLARIreland() {
         Locale defaultLocale = LocaleUtil.getUserLocale();
         try {
-            LocaleUtil.setUserLocale(new Locale("en", "IE"));
+            LocaleUtil.setUserLocale(new 
Locale.Builder().setLanguage("en").setRegion("IE").build());
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
@@ -104,7 +104,7 @@ final class TestNumericFunction {
     void testDOLLARSpain() {
         Locale defaultLocale = LocaleUtil.getUserLocale();
         try {
-            LocaleUtil.setUserLocale(new Locale("es", "ES"));
+            LocaleUtil.setUserLocale(new 
Locale.Builder().setLanguage("es").setRegion("ES").build());
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
@@ -119,7 +119,7 @@ final class TestNumericFunction {
     void testDOLLARJapan() {
         Locale defaultLocale = LocaleUtil.getUserLocale();
         try {
-            LocaleUtil.setUserLocale(new Locale("ja", "JP"));
+            LocaleUtil.setUserLocale(new 
Locale.Builder().setLanguage("ja").setRegion("JP").build());
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
@@ -135,7 +135,7 @@ final class TestNumericFunction {
     void testDOLLARDenmark() {
         Locale defaultLocale = LocaleUtil.getUserLocale();
         try {
-            LocaleUtil.setUserLocale(new Locale("da", "DK"));
+            LocaleUtil.setUserLocale(new 
Locale.Builder().setLanguage("da").setRegion("DK").build());
             HSSFWorkbook wb = new HSSFWorkbook();
             HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
             HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java 
(original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestDataFormatter.java 
Mon Apr 21 12:07:21 2025
@@ -937,7 +937,7 @@ class TestDataFormatter {
         // 2017-12-01 09:54:33 which is 42747.412892397523 as double
         DataFormatter dfDE = new DataFormatter(Locale.GERMANY);
         DataFormatter dfZH = new DataFormatter(Locale.PRC);
-        DataFormatter dfIE = new DataFormatter(new Locale("GA", "IE"));
+        DataFormatter dfIE = new DataFormatter(new 
Locale.Builder().setLanguage("GA").setRegion("IE").build());
         double date = 42747.412892397523;
         String format = "dd MMMM yyyy HH:mm:ss";
         assertEquals("12 Januar 2017 09:54:33", 
dfDE.formatRawCellContents(date, -1, format));

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
 (original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/usermodel/TestExcelStyleDateFormatter.java
 Mon Apr 21 12:07:21 2025
@@ -103,15 +103,15 @@ class TestExcelStyleDateFormatter {
     public static Stream<Arguments> initializeLocales() throws ParseException {
         Object[][] locExps = {
             { Locale.GERMAN, "JFMAMJJASOND" },
-            { new Locale("de", "AT"), "JFMAMJJASOND" },
+            { new Locale.Builder().setLanguage("de").setRegion("AT").build(), 
"JFMAMJJASOND" },
             { Locale.UK, "JFMAMJJASOND" },
-            { new Locale("en", "IN"), "JFMAMJJASOND" },
-            { new Locale("in", "ID"), "JFMAMJJASOND" },
+            { new Locale.Builder().setLanguage("en").setRegion("IN").build(), 
"JFMAMJJASOND" },
+            { new Locale.Builder().setLanguage("in").setRegion("ID").build(), 
"JFMAMJJASOND" },
             { Locale.FRENCH, "jfmamjjasond" },
-            { new Locale("ru", "RU"), 
"\u044f\u0444\u043c\u0430\u043c\u0438\u0438\u0430\u0441\u043e\u043d\u0434" },
+            { new Locale.Builder().setLanguage("ru").setRegion("RU").build(), 
"\u044f\u0444\u043c\u0430\u043c\u0438\u0438\u0430\u0441\u043e\u043d\u0434" },
             { Locale.CHINESE, localeIndex(Locale.CHINESE) == 0 ? 
"\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341\u5341\u5341" : 
"123456789111" },
-            { new Locale("tr", "TR"), 
"\u004f\u015e\u004d\u004e\u004d\u0048\u0054\u0041\u0045\u0045\u004b\u0041" },
-            { new Locale("hu", "HU"), 
"\u006a\u0066\u006d\u00e1\u006d\u006a\u006a\u0061\u0073\u006f\u006e\u0064" }
+            { new Locale.Builder().setLanguage("tr").setRegion("TR").build(), 
"\u004f\u015e\u004d\u004e\u004d\u0048\u0054\u0041\u0045\u0045\u004b\u0041" },
+            { new Locale.Builder().setLanguage("hu").setRegion("HU").build(), 
"\u006a\u0066\u006d\u00e1\u006d\u006a\u006a\u0061\u0073\u006f\u006e\u0064" }
         };
 
         String[] dates = {

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/TestDateFormatConverter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/ss/util/TestDateFormatConverter.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/TestDateFormatConverter.java 
(original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/ss/util/TestDateFormatConverter.java 
Mon Apr 21 12:07:21 2025
@@ -130,7 +130,7 @@ final class TestDateFormatConverter {
     void testJDK8EmptyLocale() {
         // JDK 8 seems to add an empty locale-string to the list returned via 
DateFormat.getAvailableLocales()
         // therefore we now cater for this special locale as well
-        String prefix = getPrefixForLocale(new Locale(""));
+        String prefix = getPrefixForLocale(new Locale.Builder().build());
         assertEquals("", prefix);
     }
 

Modified: poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java?rev=1925199&r1=1925198&r2=1925199&view=diff
==============================================================================
--- poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java 
(original)
+++ poi/trunk/poi/src/test/java/org/apache/poi/util/ExceptionUtilTest.java Mon 
Apr 21 12:07:21 2025
@@ -42,7 +42,7 @@ class ExceptionUtilTest {
         assertTrue(ExceptionUtil.isFatal(new VirtualMachineError(){}));
     }
 
-
+    @SuppressForbidden("Test with ThreadDeath on purpose here")
     @Test
     void testThreadDeath() {
         assertTrue(ExceptionUtil.isFatal(new ThreadDeath()));



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to