From 4db724984ea4ab246f453b8d0c694ca8c5aa94ba Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 3 May 2023 10:17:12 +0200 Subject: [PATCH] Suppress deprecations for compiling on JDK 19/20 --- .../core/test/tools/DynamicClassLoader.java | 15 ++++++++------- .../springframework/util/ConcurrentLruCache.java | 4 +++- .../org/springframework/util/StringUtils.java | 15 ++++++++------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/spring-core-test/src/main/java/org/springframework/core/test/tools/DynamicClassLoader.java b/spring-core-test/src/main/java/org/springframework/core/test/tools/DynamicClassLoader.java index 8e63c3a372f..42db68069a1 100644 --- a/spring-core-test/src/main/java/org/springframework/core/test/tools/DynamicClassLoader.java +++ b/spring-core-test/src/main/java/org/springframework/core/test/tools/DynamicClassLoader.java @@ -85,15 +85,15 @@ public class DynamicClassLoader extends ClassLoader { @Override protected Class findClass(String name) throws ClassNotFoundException { - byte[] bytes = findClassBytes(name); - if (bytes != null) { - return defineClass(name, bytes); - } - return super.findClass(name); + Class clazz = defineClass(name, findClassBytes(name)); + return (clazz != null ? clazz : super.findClass(name)); } - - private Class defineClass(String name, byte[] bytes) { + @Nullable + private Class defineClass(String name, @Nullable byte[] bytes) { + if (bytes == null) { + return null; + } if (this.defineClassMethod != null) { return (Class) ReflectionUtils.invokeMethod(this.defineClassMethod, getParent(), name, bytes, 0, bytes.length); @@ -142,6 +142,7 @@ public class DynamicClassLoader extends ClassLoader { return (dynamicClassFile != null) ? dynamicClassFile.getBytes() : null; } + @SuppressWarnings("deprecation") // on JDK 20 private URL createResourceUrl(String name, Supplier bytesSupplier) { try { return new URL(null, "resource:///" + name, diff --git a/spring-core/src/main/java/org/springframework/util/ConcurrentLruCache.java b/spring-core/src/main/java/org/springframework/util/ConcurrentLruCache.java index 8e93e244985..abfd80853e7 100644 --- a/spring-core/src/main/java/org/springframework/util/ConcurrentLruCache.java +++ b/spring-core/src/main/java/org/springframework/util/ConcurrentLruCache.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -401,6 +401,7 @@ public final class ConcurrentLruCache { } } + @SuppressWarnings("deprecation") // for Thread.getId() on JDK 19 private static int getBufferIndex() { return ((int) Thread.currentThread().getId()) & BUFFERS_MASK; } @@ -415,6 +416,7 @@ public final class ConcurrentLruCache { return (pending < MAX_PENDING_OPERATIONS); } + @SuppressWarnings("deprecation") // for Thread.getId() on JDK 19 void drain() { final int start = (int) Thread.currentThread().getId(); final int end = start + BUFFER_COUNT; diff --git a/spring-core/src/main/java/org/springframework/util/StringUtils.java b/spring-core/src/main/java/org/springframework/util/StringUtils.java index 1be28b9b7ad..e437b9bd4ed 100644 --- a/spring-core/src/main/java/org/springframework/util/StringUtils.java +++ b/spring-core/src/main/java/org/springframework/util/StringUtils.java @@ -868,6 +868,7 @@ public abstract class StringUtils { * @return a corresponding {@code Locale} instance, or {@code null} if none * @throws IllegalArgumentException in case of an invalid locale specification */ + @SuppressWarnings("deprecation") // for Locale constructors on JDK 19 @Nullable public static Locale parseLocaleString(String localeString) { if (localeString.equals("")) { @@ -877,25 +878,25 @@ public abstract class StringUtils { if (!localeString.contains("_") && localeString.contains(" ")) { delimiter = " "; } - final String[] tokens = localeString.split(delimiter, -1); + String[] tokens = localeString.split(delimiter, -1); if (tokens.length == 1) { - final String language = tokens[0]; + String language = tokens[0]; validateLocalePart(language); return new Locale(language); } else if (tokens.length == 2) { - final String language = tokens[0]; + String language = tokens[0]; validateLocalePart(language); - final String country = tokens[1]; + String country = tokens[1]; validateLocalePart(country); return new Locale(language, country); } else if (tokens.length > 2) { - final String language = tokens[0]; + String language = tokens[0]; validateLocalePart(language); - final String country = tokens[1]; + String country = tokens[1]; validateLocalePart(country); - final String variant = Arrays.stream(tokens).skip(2).collect(Collectors.joining(delimiter)); + String variant = Arrays.stream(tokens).skip(2).collect(Collectors.joining(delimiter)); return new Locale(language, country, variant); } throw new IllegalArgumentException("Invalid locale format: '" + localeString + "'");