From 20bbebb29921815ec11ec4dc289419d50a5cd319 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 21 Jun 2023 09:47:16 +0200 Subject: [PATCH 1/3] Ensure Spring LogFactory contains all public methods from Apache LogFactory Closes gh-30668 --- .../apache/commons/logging/LogFactory.java | 45 ++++++++++++++++++- .../commons/logging/LogFactoryService.java | 9 ++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java index 0600afc8aa..e67eb5a434 100644 --- a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java +++ b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 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. @@ -102,4 +102,47 @@ public abstract class LogFactory { return getLog(name); } + + // Just in case some code happens to call uncommon Commons Logging methods... + + @Deprecated + public Object getAttribute(String name) { + return null; + } + + @Deprecated + public String[] getAttributeNames() { + return new String[0]; + } + + @Deprecated + public void removeAttribute(String name) { + // do nothing + } + + @Deprecated + public void setAttribute(String name, Object value) { + // do nothing + } + + @Deprecated + public void release() { + // do nothing + } + + @Deprecated + public static void release(ClassLoader classLoader) { + // do nothing + } + + @Deprecated + public static void releaseAll() { + // do nothing + } + + @Deprecated + public static String objectId(Object o) { + return (o == null ? "null" : o.getClass().getName() + "@" + System.identityHashCode(o)); + } + } diff --git a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactoryService.java b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactoryService.java index 68561d67b5..1e961e68f6 100644 --- a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactoryService.java +++ b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactoryService.java @@ -53,8 +53,9 @@ public class LogFactoryService extends LogFactory { } - // Just in case some code happens to call uncommon Commons Logging methods... + // Just in case some code happens to rely on Commons Logging attributes... + @Override public void setAttribute(String name, Object value) { if (value != null) { this.attributes.put(name, value); @@ -64,19 +65,19 @@ public class LogFactoryService extends LogFactory { } } + @Override public void removeAttribute(String name) { this.attributes.remove(name); } + @Override public Object getAttribute(String name) { return this.attributes.get(name); } + @Override public String[] getAttributeNames() { return this.attributes.keySet().toArray(new String[0]); } - public void release() { - } - } From 049a024deada93f946c8a588837d2acb5f5335c3 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 21 Jun 2023 09:48:00 +0200 Subject: [PATCH 2/3] Deprecate RootBeanDefinition(ResolvableType) constructor Closes gh-30704 --- .../beans/factory/support/BeanDefinitionBuilder.java | 5 +++-- .../beans/factory/support/RootBeanDefinition.java | 2 ++ .../factory/aot/BeanDefinitionMethodGeneratorTests.java | 5 +++-- .../aot/DefaultBeanRegistrationCodeFragmentsTests.java | 7 ++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionBuilder.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionBuilder.java index 7e936b9e65..362737c9ee 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionBuilder.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionBuilder.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. @@ -125,7 +125,8 @@ public final class BeanDefinitionBuilder { * @since 5.3.9 */ public static BeanDefinitionBuilder rootBeanDefinition(ResolvableType beanType, Supplier instanceSupplier) { - RootBeanDefinition beanDefinition = new RootBeanDefinition(beanType); + RootBeanDefinition beanDefinition = new RootBeanDefinition(); + beanDefinition.setTargetType(beanType); beanDefinition.setInstanceSupplier(instanceSupplier); return new BeanDefinitionBuilder(beanDefinition); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java index bbbf6cce50..7f331d3b5f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java @@ -161,7 +161,9 @@ public class RootBeanDefinition extends AbstractBeanDefinition { * @param beanType the type of bean to instantiate * @since 6.0 * @see #setTargetType(ResolvableType) + * @deprecated as of 6.0.11, in favor of an extra {@link #setTargetType(ResolvableType)} call */ + @Deprecated(since = "6.0.11") public RootBeanDefinition(@Nullable ResolvableType beanType) { setTargetType(beanType); } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorTests.java index 484eade299..f108a3b7b3 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorTests.java @@ -170,8 +170,9 @@ class BeanDefinitionMethodGeneratorTests { @Test void generateBeanDefinitionMethodWhenHasGenericsGeneratesMethod() { - RegisteredBean registeredBean = registerBean(new RootBeanDefinition( - ResolvableType.forClassWithGenerics(GenericBean.class, Integer.class))); + RootBeanDefinition beanDefinition = new RootBeanDefinition(); + beanDefinition.setTargetType(ResolvableType.forClassWithGenerics(GenericBean.class, Integer.class)); + RegisteredBean registeredBean = registerBean(beanDefinition); BeanDefinitionMethodGenerator generator = new BeanDefinitionMethodGenerator( this.methodGeneratorFactory, registeredBean, null, Collections.emptyList()); diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/DefaultBeanRegistrationCodeFragmentsTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/DefaultBeanRegistrationCodeFragmentsTests.java index 64a4ecdb4f..1ab505e3d3 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/DefaultBeanRegistrationCodeFragmentsTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/DefaultBeanRegistrationCodeFragmentsTests.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. @@ -172,8 +172,9 @@ class DefaultBeanRegistrationCodeFragmentsTests { } private RegisteredBean registerTestBean(ResolvableType beanType) { - this.beanFactory.registerBeanDefinition("testBean", - new RootBeanDefinition(beanType)); + RootBeanDefinition beanDefinition = new RootBeanDefinition(); + beanDefinition.setTargetType(beanType); + this.beanFactory.registerBeanDefinition("testBean", beanDefinition); return RegisteredBean.of(this.beanFactory, "testBean"); } From adcdefce438a9e4d469e8ac612d50710ee3dcf8f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 21 Jun 2023 09:49:26 +0200 Subject: [PATCH 3/3] Upgrade to Jetty 12.0.0.beta2 --- spring-web/spring-web.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-web/spring-web.gradle b/spring-web/spring-web.gradle index a6289ac8d9..d915e22bfc 100644 --- a/spring-web/spring-web.gradle +++ b/spring-web/spring-web.gradle @@ -37,7 +37,7 @@ dependencies { optional("org.eclipse.jetty:jetty-servlet") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api" } - optional("org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.0.beta1") { + optional("org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.0.beta2") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api" exclude group: "org.eclipse.jetty", module: "jetty-ee" exclude group: "org.eclipse.jetty", module: "jetty-security"