diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index b0b42944a2..e66617a893 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -14,13 +14,13 @@ dependencies { api(platform("io.projectreactor:reactor-bom:2023.0.0-RC1")) api(platform("io.rsocket:rsocket-bom:1.1.3")) api(platform("org.apache.groovy:groovy-bom:4.0.15")) - api(platform("org.apache.logging.log4j:log4j-bom:2.20.0")) - api(platform("org.eclipse.jetty:jetty-bom:12.0.2")) - api(platform("org.eclipse.jetty.ee10:jetty-ee10-bom:12.0.2")) + api(platform("org.apache.logging.log4j:log4j-bom:2.21.1")) + api(platform("org.eclipse.jetty:jetty-bom:12.0.3")) + api(platform("org.eclipse.jetty.ee10:jetty-ee10-bom:12.0.3")) api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3")) api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.0")) api(platform("org.junit:junit-bom:5.10.1")) - api(platform("org.mockito:mockito-bom:5.6.0")) + api(platform("org.mockito:mockito-bom:5.7.0")) constraints { api("com.fasterxml:aalto-xml:1.3.2") @@ -54,9 +54,9 @@ dependencies { api("io.r2dbc:r2dbc-spi:1.0.0.RELEASE") api("io.reactivex.rxjava3:rxjava:3.1.6") api("io.smallrye.reactive:mutiny:1.9.0") - api("io.undertow:undertow-core:2.3.8.Final") - api("io.undertow:undertow-servlet:2.3.8.Final") - api("io.undertow:undertow-websockets-jsr:2.3.8.Final") + api("io.undertow:undertow-core:2.3.10.Final") + api("io.undertow:undertow-servlet:2.3.10.Final") + api("io.undertow:undertow-websockets-jsr:2.3.10.Final") api("io.vavr:vavr:0.10.4") api("jakarta.activation:jakarta.activation-api:2.0.1") api("jakarta.annotation:jakarta.annotation-api:2.0.0") @@ -102,10 +102,10 @@ dependencies { api("org.apache.httpcomponents.client5:httpclient5:5.2.1") api("org.apache.httpcomponents.core5:httpcore5-reactive:5.2.2") api("org.apache.poi:poi-ooxml:5.2.3") - api("org.apache.tomcat.embed:tomcat-embed-core:10.1.14") - api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.14") - api("org.apache.tomcat:tomcat-util:10.1.14") - api("org.apache.tomcat:tomcat-websocket:10.1.14") + api("org.apache.tomcat.embed:tomcat-embed-core:10.1.15") + api("org.apache.tomcat.embed:tomcat-embed-websocket:10.1.15") + api("org.apache.tomcat:tomcat-util:10.1.15") + api("org.apache.tomcat:tomcat-websocket:10.1.15") api("org.aspectj:aspectjrt:1.9.20.1") api("org.aspectj:aspectjtools:1.9.20.1") api("org.aspectj:aspectjweaver:1.9.20.1") @@ -115,7 +115,7 @@ dependencies { api("org.codehaus.jettison:jettison:1.5.4") api("org.crac:crac:1.4.0") api("org.dom4j:dom4j:2.1.4") - api("org.eclipse.jetty:jetty-reactive-httpclient:4.0.0") + api("org.eclipse.jetty:jetty-reactive-httpclient:4.0.1") api("org.eclipse.persistence:org.eclipse.persistence.jpa:3.0.4") api("org.eclipse:yasson:2.0.4") api("org.ehcache:ehcache:3.10.8") diff --git a/spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java b/spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java index 49b47054db..021295d2dc 100644 --- a/spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java +++ b/spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java @@ -145,9 +145,12 @@ final class LogAdapter { private static final LoggerContext loggerContext = LogManager.getContext(Log4jLog.class.getClassLoader(), false); - private final ExtendedLogger logger; + private final String name; + + private final transient ExtendedLogger logger; public Log4jLog(String name) { + this.name = name; LoggerContext context = loggerContext; if (context == null) { // Circular call in early-init scenario -> static field not initialized yet @@ -261,6 +264,10 @@ final class LogAdapter { this.logger.logIfEnabled(FQCN, level, null, message, exception); } } + + protected Object readResolve() { + return new Log4jLog(this.name); + } } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java index b90859395f..07650a8904 100755 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java @@ -16,7 +16,6 @@ package org.springframework.jdbc.core.metadata; -import java.sql.DatabaseMetaData; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashMap; @@ -434,14 +433,14 @@ public class CallMetaDataContext { if (paramNameToUse == null) { paramNameToUse = ""; } - if (meta.getParameterType() == DatabaseMetaData.procedureColumnOut) { + if (meta.isOutParameter()) { workParams.add(provider.createDefaultOutParameter(paramNameToUse, meta)); outParamNames.add(paramNameToUse); if (logger.isDebugEnabled()) { logger.debug("Added meta-data out parameter for '" + paramNameToUse + "'"); } } - else if (meta.getParameterType() == DatabaseMetaData.procedureColumnInOut) { + else if (meta.isInOutParameter()) { workParams.add(provider.createDefaultInOutParameter(paramNameToUse, meta)); outParamNames.add(paramNameToUse); if (logger.isDebugEnabled()) { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallParameterMetaData.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallParameterMetaData.java index edce0df036..2b7a61c069 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallParameterMetaData.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallParameterMetaData.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 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. @@ -97,6 +97,28 @@ public class CallParameterMetaData { this.parameterType == DatabaseMetaData.procedureColumnResult)); } + /** + * Determine whether the declared parameter qualifies as an 'out' parameter + * for our purposes: type {@link DatabaseMetaData#procedureColumnOut}, + * or in case of a function, {@link DatabaseMetaData#functionColumnOut}. + * @since 5.3.31 + */ + public boolean isOutParameter() { + return (this.function ? this.parameterType == DatabaseMetaData.functionColumnOut : + this.parameterType == DatabaseMetaData.procedureColumnOut); + } + + /** + * Determine whether the declared parameter qualifies as an 'in-out' parameter + * for our purposes: type {@link DatabaseMetaData#procedureColumnInOut}, + * or in case of a function, {@link DatabaseMetaData#functionColumnInOut}. + * @since 5.3.31 + */ + public boolean isInOutParameter() { + return (this.function ? this.parameterType == DatabaseMetaData.functionColumnInOut : + this.parameterType == DatabaseMetaData.procedureColumnInOut); + } + /** * Return the parameter SQL type. */ diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java index 9608eb21e7..3822fae85b 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java @@ -273,6 +273,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } + @Nullable private String identifierNameToUse(@Nullable String identifierName) { if (identifierName == null) { return null;