diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/JdbcTransactionObjectSupport.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/JdbcTransactionObjectSupport.java index 1a266e2fc0..49421e52fc 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/JdbcTransactionObjectSupport.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/JdbcTransactionObjectSupport.java @@ -17,6 +17,7 @@ package org.springframework.jdbc.datasource; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.sql.Savepoint; import org.springframework.lang.Nullable; @@ -179,6 +180,9 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager, try { conHolder.getConnection().releaseSavepoint((Savepoint) savepoint); } + catch (SQLFeatureNotSupportedException ex) { + // typically on Oracle - ignore + } catch (Throwable ex) { throw new TransactionSystemException("Could not explicitly release JDBC savepoint", ex); } diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index 7455ee94da..0b0534dd04 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -182,10 +182,10 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen @Override public void processAheadOfTime(RuntimeHints runtimeHints, Class testClass, ClassLoader classLoader) { getSqlAnnotationsFor(testClass).forEach(sql -> - registerClasspathResources(getScripts(sql, testClass, null, true), runtimeHints, classLoader)); + registerClasspathResources(getScripts(sql, testClass, null, true), runtimeHints, classLoader)); getSqlMethods(testClass).forEach(testMethod -> - getSqlAnnotationsFor(testMethod).forEach(sql -> - registerClasspathResources(getScripts(sql, testClass, testMethod, false), runtimeHints, classLoader))); + getSqlAnnotationsFor(testMethod).forEach(sql -> + registerClasspathResources(getScripts(sql, testClass, testMethod, false), runtimeHints, classLoader))); } /** diff --git a/spring-webflux/spring-webflux.gradle b/spring-webflux/spring-webflux.gradle index 1ea20efabc..7861faefc9 100644 --- a/spring-webflux/spring-webflux.gradle +++ b/spring-webflux/spring-webflux.gradle @@ -27,8 +27,8 @@ dependencies { optional("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api" } - optional("org.eclipse.jetty.websocket:jetty-websocket-jetty-server") optional("org.eclipse.jetty.websocket:jetty-websocket-jetty-client") + optional("org.eclipse.jetty.websocket:jetty-websocket-jetty-server") optional("org.freemarker:freemarker") optional("org.jetbrains.kotlin:kotlin-reflect") optional("org.jetbrains.kotlin:kotlin-stdlib") diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java b/spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java index 99e48405dc..eccef7cfe9 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java @@ -485,9 +485,9 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware { try { service = new HandshakeWebSocketService(); } - catch (IllegalStateException ex) { + catch (Throwable ex) { // Don't fail, test environment perhaps - service = new NoUpgradeStrategyWebSocketService(); + service = new NoUpgradeStrategyWebSocketService(ex); } } return service; @@ -608,9 +608,15 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware { private static final class NoUpgradeStrategyWebSocketService implements WebSocketService { + private final Throwable ex; + + public NoUpgradeStrategyWebSocketService(Throwable ex) { + this.ex = ex; + } + @Override public Mono handleRequest(ServerWebExchange exchange, WebSocketHandler webSocketHandler) { - return Mono.error(new IllegalStateException("No suitable RequestUpgradeStrategy")); + return Mono.error(new IllegalStateException("No suitable RequestUpgradeStrategy", this.ex)); } } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/LiteWebJarsResourceResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/LiteWebJarsResourceResolver.java index 9a8108483b..d396dbccc7 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/LiteWebJarsResourceResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/LiteWebJarsResourceResolver.java @@ -49,6 +49,7 @@ public class LiteWebJarsResourceResolver extends AbstractResourceResolver { private final WebJarVersionLocator webJarVersionLocator; + /** * Create a {@code LiteWebJarsResourceResolver} with a default {@code WebJarVersionLocator} instance. */ @@ -64,6 +65,7 @@ public class LiteWebJarsResourceResolver extends AbstractResourceResolver { this.webJarVersionLocator = webJarVersionLocator; } + @Override protected Mono resolveResourceInternal(@Nullable ServerWebExchange exchange, String requestPath, List locations, ResourceResolverChain chain) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultAsyncServerResponse.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultAsyncServerResponse.java index a5ef633033..86a1c93177 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultAsyncServerResponse.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultAsyncServerResponse.java @@ -63,6 +63,7 @@ final class DefaultAsyncServerResponse extends ErrorHandlingServerResponse imple this.timeout = timeout; } + @Override public ServerResponse block() { try { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/LiteWebJarsResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/LiteWebJarsResourceResolver.java index d2dbeb79ed..dc132502f1 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/LiteWebJarsResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/LiteWebJarsResourceResolver.java @@ -49,6 +49,7 @@ public class LiteWebJarsResourceResolver extends AbstractResourceResolver { private final WebJarVersionLocator webJarVersionLocator; + /** * Create a {@code LiteWebJarsResourceResolver} with a default {@code WebJarVersionLocator} instance. */ @@ -64,6 +65,7 @@ public class LiteWebJarsResourceResolver extends AbstractResourceResolver { this.webJarVersionLocator = webJarVersionLocator; } + @Override @Nullable protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java index af221926d6..f61d8978e9 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java @@ -34,12 +34,10 @@ import org.springframework.web.socket.WebSocketExtension; */ public class StandardToWebSocketExtensionAdapter extends WebSocketExtension { - public StandardToWebSocketExtensionAdapter(Extension extension) { super(extension.getName(), initParameters(extension)); } - private static Map initParameters(Extension extension) { List parameters = extension.getParameters(); Map result = new LinkedCaseInsensitiveMap<>(parameters.size(), Locale.ROOT); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java index f8334d3ff3..8455b8dd2c 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2024 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. @@ -55,6 +55,7 @@ public class WebSocketToStandardExtensionAdapter implements Extension { } } + @Override public String getName() { return this.name;