From 7635ac38f612c8eb6c7cdcbac999846a5761e535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Mon, 22 Sep 2025 17:59:49 +0200 Subject: [PATCH] Use uppercase for classpath-related static final field names Closes gh-35525 --- ...tJAdvisorBeanRegistrationAotProcessor.java | 4 +- ...BeanFactoryInitializationAotProcessor.java | 4 +- .../aop/framework/CglibAopProxy.java | 4 +- .../aop/framework/JdkDynamicAopProxy.java | 4 +- .../springframework/aop/support/AopUtils.java | 4 +- .../support/DisposableBeanAdapter.java | 4 +- .../CachingConfigurationSelector.java | 12 +-- ...tationDrivenCacheBeanDefinitionParser.java | 12 +-- .../cache/interceptor/CacheAspectSupport.java | 6 +- .../annotation/AnnotationConfigUtils.java | 8 +- .../CommonAnnotationBeanPostProcessor.java | 28 ++--- .../ApplicationListenerMethodAdapter.java | 4 +- .../DefaultFormattingConversionService.java | 6 +- .../retry/AbstractRetryInterceptor.java | 4 +- .../ScheduledAnnotationBeanPostProcessor.java | 4 +- .../ScheduledAnnotationReactiveSupport.java | 10 +- ...alidationBeanRegistrationAotProcessor.java | 4 +- .../MethodValidationInterceptor.java | 4 +- ...heduledAnnotationReactiveSupportTests.java | 2 +- ...ScheduledAnnotationReactiveSupportTests.kt | 4 +- .../hint/BindingReflectionHintsRegistrar.java | 4 +- .../springframework/core/KotlinDetector.java | 32 +++--- .../core/ReactiveAdapterRegistry.java | 34 +++--- .../expression/spel/MapTests.java | 16 +-- .../springframework/jms/core/JmsTemplate.java | 6 +- .../AbstractMessageListenerContainer.java | 6 +- .../converter/ProtobufMessageConverter.java | 4 +- .../SimpAnnotationMethodMessageHandler.java | 4 +- .../AbstractMessageBrokerConfiguration.java | 30 +++--- ...agedTypesBeanRegistrationAotProcessor.java | 4 +- .../test/context/BootstrapUtils.java | 4 +- ...ergedContextConfigurationRuntimeHints.java | 6 +- .../MockitoResetTestExecutionListener.java | 10 +- .../MockitoSpyBeanOverrideHandler.java | 2 +- .../override/mockito/SpringMockResolver.java | 4 +- .../support/DelegatingSmartContextLoader.java | 4 +- .../web/WebDelegatingSmartContextLoader.java | 4 +- ...rverContainerContextCustomizerFactory.java | 4 +- .../test/util/ReflectionTestUtils.java | 12 +-- .../server/DefaultWebTestClientBuilder.java | 24 ++--- .../context/TestExecutionListenersTests.java | 10 +- .../AnnotationTransactionAttributeSource.java | 14 +-- .../interceptor/TransactionAspectSupport.java | 10 +- .../TransactionSynchronizationUtils.java | 4 +- .../TransactionSynchronizationUtils.java | 4 +- .../http/codec/support/BaseDefaultCodecs.java | 94 ++++++++-------- .../support/ClientDefaultCodecsImpl.java | 6 +- .../support/ServerDefaultCodecsImpl.java | 6 +- .../http/codec/xml/XmlEventDecoder.java | 4 +- .../DefaultHttpMessageConverters.java | 102 +++++++++--------- .../json/Jackson2ObjectMapperBuilder.java | 4 +- .../ProtobufHttpMessageConverter.java | 5 +- .../web/client/DefaultRestClientBuilder.java | 24 ++--- .../context/request/RequestContextHolder.java | 4 +- .../support/StandardServletEnvironment.java | 4 +- .../support/WebApplicationContextUtils.java | 4 +- .../config/ResourceChainRegistration.java | 4 +- .../config/WebFluxConfigurationSupport.java | 4 +- .../client/DefaultWebClientBuilder.java | 18 ++-- .../support/HandshakeWebSocketService.java | 18 ++-- .../AnnotationDrivenBeanDefinitionParser.java | 100 ++++++++--------- .../config/ResourcesBeanDefinitionParser.java | 4 +- .../annotation/ResourceChainRegistration.java | 4 +- .../WebMvcConfigurationSupport.java | 24 ++--- .../servlet/function/AsyncServerResponse.java | 2 +- .../function/DefaultAsyncServerResponse.java | 2 +- .../DefaultEntityResponseBuilder.java | 2 +- .../annotation/ReactiveTypeHandler.java | 6 +- .../support/JspAwareRequestContext.java | 4 +- .../web/servlet/support/RequestContext.java | 6 +- .../view/InternalResourceViewResolver.java | 4 +- .../MessageBrokerBeanDefinitionParser.java | 30 +++--- .../config/WebSocketNamespaceHandler.java | 4 +- .../support/DefaultHandshakeHandler.java | 4 +- .../socket/sockjs/client/SockJsClient.java | 8 +- .../TransportHandlingSockJsService.java | 8 +- 76 files changed, 451 insertions(+), 450 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJAdvisorBeanRegistrationAotProcessor.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJAdvisorBeanRegistrationAotProcessor.java index 0df3dc5c0f..bf6c07c817 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJAdvisorBeanRegistrationAotProcessor.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJAdvisorBeanRegistrationAotProcessor.java @@ -39,13 +39,13 @@ class AspectJAdvisorBeanRegistrationAotProcessor implements BeanRegistrationAotP private static final String AJC_MAGIC = "ajc$"; - private static final boolean aspectjPresent = ClassUtils.isPresent("org.aspectj.lang.annotation.Pointcut", + private static final boolean ASPECTJ_PRESENT = ClassUtils.isPresent("org.aspectj.lang.annotation.Pointcut", AspectJAdvisorBeanRegistrationAotProcessor.class.getClassLoader()); @Override public @Nullable BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { - if (aspectjPresent) { + if (ASPECTJ_PRESENT) { Class beanClass = registeredBean.getBeanClass(); if (compiledByAjc(beanClass)) { return new AspectJAdvisorContribution(beanClass); diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJBeanFactoryInitializationAotProcessor.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJBeanFactoryInitializationAotProcessor.java index 28c2408757..32ecda5888 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJBeanFactoryInitializationAotProcessor.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJBeanFactoryInitializationAotProcessor.java @@ -41,13 +41,13 @@ import org.springframework.util.ClassUtils; */ class AspectJBeanFactoryInitializationAotProcessor implements BeanFactoryInitializationAotProcessor { - private static final boolean aspectJPresent = ClassUtils.isPresent("org.aspectj.lang.annotation.Pointcut", + private static final boolean ASPECTJ_PRESENT = ClassUtils.isPresent("org.aspectj.lang.annotation.Pointcut", AspectJBeanFactoryInitializationAotProcessor.class.getClassLoader()); @Override public @Nullable BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) { - if (aspectJPresent) { + if (ASPECTJ_PRESENT) { return AspectDelegate.processAheadOfTime(beanFactory); } return null; diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java index 8ed496c3da..1efed81dec 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java @@ -98,7 +98,7 @@ class CglibAopProxy implements AopProxy, Serializable { private static final String COROUTINES_FLOW_CLASS_NAME = "kotlinx.coroutines.flow.Flow"; - private static final boolean coroutinesReactorPresent = ClassUtils.isPresent( + private static final boolean COROUTINES_REACTOR_PRESENT = ClassUtils.isPresent( "kotlinx.coroutines.reactor.MonoKt", CglibAopProxy.class.getClassLoader()); private static final GeneratorStrategy undeclaredThrowableStrategy = @@ -435,7 +435,7 @@ class CglibAopProxy implements AopProxy, Serializable { throw new AopInvocationException( "Null return value from advice does not match primitive return type for: " + method); } - if (coroutinesReactorPresent && KotlinDetector.isSuspendingFunction(method)) { + if (COROUTINES_REACTOR_PRESENT && KotlinDetector.isSuspendingFunction(method)) { return COROUTINES_FLOW_CLASS_NAME.equals(new MethodParameter(method, -1).getParameterType().getName()) ? CoroutinesUtils.asFlow(returnValue) : CoroutinesUtils.awaitSingleOrNull(returnValue, arguments[arguments.length - 1]); diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java b/spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java index b6601801d8..b0016b00c0 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java @@ -75,7 +75,7 @@ final class JdkDynamicAopProxy implements AopProxy, InvocationHandler, Serializa private static final String COROUTINES_FLOW_CLASS_NAME = "kotlinx.coroutines.flow.Flow"; - private static final boolean coroutinesReactorPresent = ClassUtils.isPresent( + private static final boolean COROUTINES_REACTOR_PRESENT = ClassUtils.isPresent( "kotlinx.coroutines.reactor.MonoKt", JdkDynamicAopProxy.class.getClassLoader()); /** We use a static Log to avoid serialization issues. */ @@ -236,7 +236,7 @@ final class JdkDynamicAopProxy implements AopProxy, InvocationHandler, Serializa throw new AopInvocationException( "Null return value from advice does not match primitive return type for: " + method); } - if (coroutinesReactorPresent && KotlinDetector.isSuspendingFunction(method)) { + if (COROUTINES_REACTOR_PRESENT && KotlinDetector.isSuspendingFunction(method)) { return COROUTINES_FLOW_CLASS_NAME.equals(new MethodParameter(method, -1).getParameterType().getName()) ? CoroutinesUtils.asFlow(retVal) : CoroutinesUtils.awaitSingleOrNull(retVal, args[args.length - 1]); } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java b/spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java index 1aceba918b..9138d1c32a 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/AopUtils.java @@ -66,7 +66,7 @@ import org.springframework.util.ReflectionUtils; */ public abstract class AopUtils { - private static final boolean coroutinesReactorPresent = ClassUtils.isPresent( + private static final boolean COROUTINES_REACTOR_PRESENT = ClassUtils.isPresent( "kotlinx.coroutines.reactor.MonoKt", AopUtils.class.getClassLoader()); @@ -355,7 +355,7 @@ public abstract class AopUtils { try { Method originalMethod = BridgeMethodResolver.findBridgedMethod(method); ReflectionUtils.makeAccessible(originalMethod); - return (coroutinesReactorPresent && KotlinDetector.isSuspendingFunction(originalMethod) ? + return (COROUTINES_REACTOR_PRESENT && KotlinDetector.isSuspendingFunction(originalMethod) ? KotlinDelegate.invokeSuspendingFunction(originalMethod, target, args) : originalMethod.invoke(target, args)); } catch (InvocationTargetException ex) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java index ee2ed6752c..550d7f04ad 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java @@ -76,7 +76,7 @@ class DisposableBeanAdapter implements DisposableBean, Runnable, Serializable { private static final Log logger = LogFactory.getLog(DisposableBeanAdapter.class); - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", DisposableBeanAdapter.class.getClassLoader()); @@ -320,7 +320,7 @@ class DisposableBeanAdapter implements DisposableBean, Runnable, Serializable { future.get(); logDestroyMethodCompletion(destroyMethod, true); } - else if (!reactiveStreamsPresent || !new ReactiveDestroyMethodHandler().await(destroyMethod, returnValue)) { + else if (!REACTIVE_STREAMS_PRESENT || !new ReactiveDestroyMethodHandler().await(destroyMethod, returnValue)) { if (logger.isDebugEnabled()) { logger.debug("Unknown return value type from custom destroy method '" + destroyMethod.getName() + "' on bean with name '" + this.beanName + "': " + returnValue.getClass()); diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurationSelector.java b/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurationSelector.java index 4a66f8e3cd..666865cb47 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurationSelector.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurationSelector.java @@ -50,14 +50,14 @@ public class CachingConfigurationSelector extends AdviceModeImportSelector result = new ArrayList<>(3); result.add(AutoProxyRegistrar.class.getName()); result.add(ProxyCachingConfiguration.class.getName()); - if (jsr107Present && jcacheImplPresent) { + if (JSR_107_PRESENT && JCACHE_IMPL_PRESENT) { result.add(PROXY_JCACHE_CONFIGURATION_CLASS); } return StringUtils.toStringArray(result); @@ -95,7 +95,7 @@ public class CachingConfigurationSelector extends AdviceModeImportSelector result = new ArrayList<>(2); result.add(CACHE_ASPECT_CONFIGURATION_CLASS_NAME); - if (jsr107Present && jcacheImplPresent) { + if (JSR_107_PRESENT && JCACHE_IMPL_PRESENT) { result.add(JCACHE_ASPECT_CONFIGURATION_CLASS_NAME); } return StringUtils.toStringArray(result); diff --git a/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java b/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java index 8f99345912..d182c56ef4 100644 --- a/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java +++ b/spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java @@ -61,14 +61,14 @@ class AnnotationDrivenCacheBeanDefinitionParser implements BeanDefinitionParser private static final String JCACHE_ASPECT_CLASS_NAME = "org.springframework.cache.aspectj.JCacheCacheAspect"; - private static final boolean jsr107Present; + private static final boolean JSR_107_PRESENT; - private static final boolean jcacheImplPresent; + private static final boolean JCACHE_IMPL_PRESENT; static { ClassLoader classLoader = AnnotationDrivenCacheBeanDefinitionParser.class.getClassLoader(); - jsr107Present = ClassUtils.isPresent("javax.cache.Cache", classLoader); - jcacheImplPresent = ClassUtils.isPresent( + JSR_107_PRESENT = ClassUtils.isPresent("javax.cache.Cache", classLoader); + JCACHE_IMPL_PRESENT = ClassUtils.isPresent( "org.springframework.cache.jcache.interceptor.DefaultJCacheOperationSource", classLoader); } @@ -95,7 +95,7 @@ class AnnotationDrivenCacheBeanDefinitionParser implements BeanDefinitionParser private void registerCacheAspect(Element element, ParserContext parserContext) { SpringCachingConfigurer.registerCacheAspect(element, parserContext); - if (jsr107Present && jcacheImplPresent) { + if (JSR_107_PRESENT && JCACHE_IMPL_PRESENT) { JCacheCachingConfigurer.registerCacheAspect(element, parserContext); } } @@ -103,7 +103,7 @@ class AnnotationDrivenCacheBeanDefinitionParser implements BeanDefinitionParser private void registerCacheAdvisor(Element element, ParserContext parserContext) { AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(parserContext, element); SpringCachingConfigurer.registerCacheAdvisor(element, parserContext); - if (jsr107Present && jcacheImplPresent) { + if (JSR_107_PRESENT && JCACHE_IMPL_PRESENT) { JCacheCachingConfigurer.registerCacheAdvisor(element, parserContext); } } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java index e72ced10c1..c144c20276 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java @@ -114,10 +114,10 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker */ public static final String IGNORE_REACTIVESTREAMS_PROPERTY_NAME = "spring.cache.reactivestreams.ignore"; - private static final boolean shouldIgnoreReactiveStreams = + private static final boolean SHOULD_IGNORE_REACTIVE_STREAMS = SpringProperties.getFlag(IGNORE_REACTIVESTREAMS_PROPERTY_NAME); - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", CacheAspectSupport.class.getClassLoader()); @@ -145,7 +145,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker protected CacheAspectSupport() { this.reactiveCachingHandler = - (reactiveStreamsPresent && !shouldIgnoreReactiveStreams ? new ReactiveCachingHandler() : null); + (REACTIVE_STREAMS_PRESENT && !SHOULD_IGNORE_REACTIVE_STREAMS ? new ReactiveCachingHandler() : null); } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java index 7c116824bd..33e020f154 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java @@ -116,10 +116,10 @@ public abstract class AnnotationConfigUtils { private static final ClassLoader classLoader = AnnotationConfigUtils.class.getClassLoader(); - private static final boolean jakartaAnnotationsPresent = + private static final boolean JAKARTA_ANNOTATIONS_PRESENT = ClassUtils.isPresent("jakarta.annotation.PostConstruct", classLoader); - private static final boolean jpaPresent = + private static final boolean JPA_PRESENT = ClassUtils.isPresent("jakarta.persistence.EntityManagerFactory", classLoader) && ClassUtils.isPresent(PERSISTENCE_ANNOTATION_PROCESSOR_CLASS_NAME, classLoader); @@ -168,14 +168,14 @@ public abstract class AnnotationConfigUtils { } // Check for Jakarta Annotations support, and if present add the CommonAnnotationBeanPostProcessor. - if (jakartaAnnotationsPresent && !registry.containsBeanDefinition(COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)) { + if (JAKARTA_ANNOTATIONS_PRESENT && !registry.containsBeanDefinition(COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)) { RootBeanDefinition def = new RootBeanDefinition(CommonAnnotationBeanPostProcessor.class); def.setSource(source); beanDefs.add(registerPostProcessor(registry, def, COMMON_ANNOTATION_PROCESSOR_BEAN_NAME)); } // Check for JPA support, and if present add the PersistenceAnnotationBeanPostProcessor. - if (jpaPresent && !registry.containsBeanDefinition(PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME)) { + if (JPA_PRESENT && !registry.containsBeanDefinition(PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME)) { RootBeanDefinition def = new RootBeanDefinition(); try { def.setBeanClass(ClassUtils.forName(PERSISTENCE_ANNOTATION_PROCESSOR_CLASS_NAME, diff --git a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java index cbfecabd6b..657d2b78de 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java @@ -142,24 +142,24 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean implements InstantiationAwareBeanPostProcessor, BeanFactoryAware, Serializable { // Defensive reference to JNDI API for JDK 9+ (optional java.naming module) - private static final boolean jndiPresent = ClassUtils.isPresent( + private static final boolean JNDI_PRESENT = ClassUtils.isPresent( "javax.naming.InitialContext", CommonAnnotationBeanPostProcessor.class.getClassLoader()); private static final Set> resourceAnnotationTypes = CollectionUtils.newLinkedHashSet(3); - private static final @Nullable Class jakartaResourceType; + private static final @Nullable Class JAKARTA_RESOURCE_TYPE; - private static final @Nullable Class ejbAnnotationType; + private static final @Nullable Class EJB_ANNOTATION_TYPE; static { - jakartaResourceType = loadAnnotationType("jakarta.annotation.Resource"); - if (jakartaResourceType != null) { - resourceAnnotationTypes.add(jakartaResourceType); + JAKARTA_RESOURCE_TYPE = loadAnnotationType("jakarta.annotation.Resource"); + if (JAKARTA_RESOURCE_TYPE != null) { + resourceAnnotationTypes.add(JAKARTA_RESOURCE_TYPE); } - ejbAnnotationType = loadAnnotationType("jakarta.ejb.EJB"); - if (ejbAnnotationType != null) { - resourceAnnotationTypes.add(ejbAnnotationType); + EJB_ANNOTATION_TYPE = loadAnnotationType("jakarta.ejb.EJB"); + if (EJB_ANNOTATION_TYPE != null) { + resourceAnnotationTypes.add(EJB_ANNOTATION_TYPE); } } @@ -195,7 +195,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean addDestroyAnnotationType(loadAnnotationType("jakarta.annotation.PreDestroy")); // java.naming module present on JDK 9+? - if (jndiPresent) { + if (JNDI_PRESENT) { this.jndiFactory = new SimpleJndiBeanFactory(); } } @@ -405,13 +405,13 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean final List currElements = new ArrayList<>(); ReflectionUtils.doWithLocalFields(targetClass, field -> { - if (ejbAnnotationType != null && field.isAnnotationPresent(ejbAnnotationType)) { + if (EJB_ANNOTATION_TYPE != null && field.isAnnotationPresent(EJB_ANNOTATION_TYPE)) { if (Modifier.isStatic(field.getModifiers())) { throw new IllegalStateException("@EJB annotation is not supported on static fields"); } currElements.add(new EjbRefElement(field, field, null)); } - else if (jakartaResourceType != null && field.isAnnotationPresent(jakartaResourceType)) { + else if (JAKARTA_RESOURCE_TYPE != null && field.isAnnotationPresent(JAKARTA_RESOURCE_TYPE)) { if (Modifier.isStatic(field.getModifiers())) { throw new IllegalStateException("@Resource annotation is not supported on static fields"); } @@ -426,7 +426,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean if (!BridgeMethodResolver.isVisibilityBridgeMethodPair(method, bridgedMethod)) { return; } - if (ejbAnnotationType != null && bridgedMethod.isAnnotationPresent(ejbAnnotationType)) { + if (EJB_ANNOTATION_TYPE != null && bridgedMethod.isAnnotationPresent(EJB_ANNOTATION_TYPE)) { if (method.equals(ClassUtils.getMostSpecificMethod(method, clazz))) { if (Modifier.isStatic(method.getModifiers())) { throw new IllegalStateException("@EJB annotation is not supported on static methods"); @@ -438,7 +438,7 @@ public class CommonAnnotationBeanPostProcessor extends InitDestroyAnnotationBean currElements.add(new EjbRefElement(method, bridgedMethod, pd)); } } - else if (jakartaResourceType != null && bridgedMethod.isAnnotationPresent(jakartaResourceType)) { + else if (JAKARTA_RESOURCE_TYPE != null && bridgedMethod.isAnnotationPresent(JAKARTA_RESOURCE_TYPE)) { if (method.equals(ClassUtils.getMostSpecificMethod(method, clazz))) { if (Modifier.isStatic(method.getModifiers())) { throw new IllegalStateException("@Resource annotation is not supported on static methods"); diff --git a/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java b/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java index 37dcba7fb1..e2f7c2bec6 100644 --- a/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java +++ b/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java @@ -74,7 +74,7 @@ import org.springframework.util.StringUtils; */ public class ApplicationListenerMethodAdapter implements GenericApplicationListener { - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", ApplicationListenerMethodAdapter.class.getClassLoader()); @@ -309,7 +309,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe } protected void handleResult(Object result) { - if (reactiveStreamsPresent && new ReactiveResultHandler().subscribeToPublisher(result)) { + if (REACTIVE_STREAMS_PRESENT && new ReactiveResultHandler().subscribeToPublisher(result)) { if (logger.isTraceEnabled()) { logger.trace("Adapted to reactive result: " + result); } diff --git a/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java b/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java index 7358aa4d5f..e7df7c2580 100644 --- a/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java +++ b/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java @@ -47,11 +47,11 @@ import org.springframework.util.StringValueResolver; */ public class DefaultFormattingConversionService extends FormattingConversionService { - private static final boolean jsr354Present; + private static final boolean JSR_354_PRESENT; static { ClassLoader classLoader = DefaultFormattingConversionService.class.getClassLoader(); - jsr354Present = ClassUtils.isPresent("javax.money.MonetaryAmount", classLoader); + JSR_354_PRESENT = ClassUtils.isPresent("javax.money.MonetaryAmount", classLoader); } /** @@ -107,7 +107,7 @@ public class DefaultFormattingConversionService extends FormattingConversionServ formatterRegistry.addFormatterForFieldAnnotation(new NumberFormatAnnotationFormatterFactory()); // Default handling of monetary values - if (jsr354Present) { + if (JSR_354_PRESENT) { formatterRegistry.addFormatter(new CurrencyUnitFormatter()); formatterRegistry.addFormatter(new MonetaryAmountFormatter()); formatterRegistry.addFormatterForFieldAnnotation(new Jsr354NumberFormatAnnotationFormatterFactory()); diff --git a/spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java b/spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java index a74385a87c..ff074f929e 100644 --- a/spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java +++ b/spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java @@ -51,14 +51,14 @@ public abstract class AbstractRetryInterceptor implements MethodInterceptor { /** * Reactive Streams API present on the classpath? */ - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", AbstractRetryInterceptor.class.getClassLoader()); private final @Nullable ReactiveAdapterRegistry reactiveAdapterRegistry; public AbstractRetryInterceptor() { - if (reactiveStreamsPresent) { + if (REACTIVE_STREAMS_PRESENT) { this.reactiveAdapterRegistry = ReactiveAdapterRegistry.getSharedInstance(); } else { diff --git a/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java b/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java index a6564ec8b8..835c0cf36b 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java @@ -127,7 +127,7 @@ public class ScheduledAnnotationBeanPostProcessor /** * Reactive Streams API present on the classpath? */ - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", ScheduledAnnotationBeanPostProcessor.class.getClassLoader()); protected final Log logger = LogFactory.getLog(getClass()); @@ -330,7 +330,7 @@ public class ScheduledAnnotationBeanPostProcessor protected void processScheduled(Scheduled scheduled, Method method, Object bean) { // Is the method a Kotlin suspending function? Throws if true and the reactor bridge isn't on the classpath. // Does the method return a reactive type? Throws if true and it isn't a deferred Publisher type. - if (reactiveStreamsPresent && ScheduledAnnotationReactiveSupport.isReactive(method)) { + if (REACTIVE_STREAMS_PRESENT && ScheduledAnnotationReactiveSupport.isReactive(method)) { processScheduledAsync(scheduled, method, bean); return; } diff --git a/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java b/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java index c4870cce34..b696797706 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java +++ b/spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java @@ -60,10 +60,10 @@ import static org.springframework.scheduling.support.ScheduledTaskObservationDoc */ abstract class ScheduledAnnotationReactiveSupport { - static final boolean reactorPresent = ClassUtils.isPresent( + static final boolean REACTOR_PRESENT = ClassUtils.isPresent( "reactor.core.publisher.Flux", ScheduledAnnotationReactiveSupport.class.getClassLoader()); - static final boolean coroutinesReactorPresent = ClassUtils.isPresent( + static final boolean COROUTINES_REACTOR_PRESENT = ClassUtils.isPresent( "kotlinx.coroutines.reactor.MonoKt", ScheduledAnnotationReactiveSupport.class.getClassLoader()); private static final Log logger = LogFactory.getLog(ScheduledAnnotationReactiveSupport.class); @@ -87,7 +87,7 @@ abstract class ScheduledAnnotationReactiveSupport { // parameter in reflective inspection Assert.isTrue(method.getParameterCount() == 1, "Kotlin suspending functions may only be annotated with @Scheduled if declared without arguments"); - Assert.isTrue(coroutinesReactorPresent, "Kotlin suspending functions may only be annotated with " + + Assert.isTrue(COROUTINES_REACTOR_PRESENT, "Kotlin suspending functions may only be annotated with " + "@Scheduled if the Coroutine-Reactor bridge (kotlinx.coroutines.reactor) is present at runtime"); return true; } @@ -161,7 +161,7 @@ abstract class ScheduledAnnotationReactiveSupport { Publisher publisher = adapter.toPublisher(returnValue); // If Reactor is on the classpath, we could benefit from having a checkpoint for debuggability - if (reactorPresent) { + if (REACTOR_PRESENT) { return Flux.from(publisher).checkpoint( "@Scheduled '"+ method.getName() + "()' in '" + method.getDeclaringClass().getName() + "'"); } @@ -246,7 +246,7 @@ abstract class ScheduledAnnotationReactiveSupport { private void subscribe(TrackingSubscriber subscriber, Observation observation) { this.subscriptionTrackerRegistry.add(subscriber); - if (reactorPresent) { + if (REACTOR_PRESENT) { observation.start(); Flux.from(this.publisher) .contextWrite(context -> context.put(ObservationThreadLocalAccessor.KEY, observation)) diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java index 1b1d89cca6..38b643e438 100644 --- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java +++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java @@ -61,7 +61,7 @@ import org.springframework.util.ReflectionUtils; */ class BeanValidationBeanRegistrationAotProcessor implements BeanRegistrationAotProcessor { - private static final boolean beanValidationPresent = ClassUtils.isPresent( + private static final boolean BEAN_VALIDATION_PRESENT = ClassUtils.isPresent( "jakarta.validation.Validation", BeanValidationBeanRegistrationAotProcessor.class.getClassLoader()); private static final Log logger = LogFactory.getLog(BeanValidationBeanRegistrationAotProcessor.class); @@ -69,7 +69,7 @@ class BeanValidationBeanRegistrationAotProcessor implements BeanRegistrationAotP @Override public @Nullable BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { - if (beanValidationPresent) { + if (BEAN_VALIDATION_PRESENT) { return BeanValidationDelegate.processAheadOfTime(registeredBean); } return null; diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java index ba85b63c0d..82319f2ce2 100644 --- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java +++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java @@ -79,7 +79,7 @@ import org.springframework.validation.method.ParameterValidationResult; */ public class MethodValidationInterceptor implements MethodInterceptor { - private static final boolean reactorPresent = ClassUtils.isPresent( + private static final boolean REACTOR_PRESENT = ClassUtils.isPresent( "reactor.core.publisher.Mono", MethodValidationInterceptor.class.getClassLoader()); @@ -152,7 +152,7 @@ public class MethodValidationInterceptor implements MethodInterceptor { @Nullable Object[] arguments = invocation.getArguments(); Class[] groups = determineValidationGroups(invocation); - if (reactorPresent) { + if (REACTOR_PRESENT) { arguments = ReactorValidationHelper.insertAsyncValidation( this.validationAdapter.getSpringValidatorAdapter(), this.adaptViolations, target, method, arguments); diff --git a/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupportTests.java b/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupportTests.java index 01049bcdbd..35f04071e9 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupportTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupportTests.java @@ -50,7 +50,7 @@ class ScheduledAnnotationReactiveSupportTests { @Test void ensureReactor() { - assertThat(ScheduledAnnotationReactiveSupport.reactorPresent).isTrue(); + assertThat(ScheduledAnnotationReactiveSupport.REACTOR_PRESENT).isTrue(); } @ParameterizedTest diff --git a/spring-context/src/test/kotlin/org/springframework/scheduling/annotation/KotlinScheduledAnnotationReactiveSupportTests.kt b/spring-context/src/test/kotlin/org/springframework/scheduling/annotation/KotlinScheduledAnnotationReactiveSupportTests.kt index 9b6330afdc..cc550eb39f 100644 --- a/spring-context/src/test/kotlin/org/springframework/scheduling/annotation/KotlinScheduledAnnotationReactiveSupportTests.kt +++ b/spring-context/src/test/kotlin/org/springframework/scheduling/annotation/KotlinScheduledAnnotationReactiveSupportTests.kt @@ -43,12 +43,12 @@ class KotlinScheduledAnnotationReactiveSupportTests { @Test fun ensureReactor() { - assertThat(ScheduledAnnotationReactiveSupport.reactorPresent).isTrue + assertThat(ScheduledAnnotationReactiveSupport.REACTOR_PRESENT).isTrue } @Test fun ensureKotlinCoroutineReactorBridge() { - assertThat(ScheduledAnnotationReactiveSupport.coroutinesReactorPresent).isTrue + assertThat(ScheduledAnnotationReactiveSupport.COROUTINES_REACTOR_PRESENT).isTrue } @ParameterizedTest diff --git a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java index d3410d2dd7..48f182d5f6 100644 --- a/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java +++ b/spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java @@ -55,7 +55,7 @@ public class BindingReflectionHintsRegistrar { private static final String JACKSON_ANNOTATION = "com.fasterxml.jackson.annotation.JacksonAnnotation"; - private static final boolean jacksonAnnotationPresent = + private static final boolean JACKSON_ANNOTATION_PRESENT = ClassUtils.isPresent(JACKSON_ANNOTATION, BindingReflectionHintsRegistrar.class.getClassLoader()); @@ -113,7 +113,7 @@ public class BindingReflectionHintsRegistrar { registerPropertyHints(hints, seen, method, -1); } } - if (jacksonAnnotationPresent) { + if (JACKSON_ANNOTATION_PRESENT) { registerJacksonHints(hints, clazz); } } diff --git a/spring-core/src/main/java/org/springframework/core/KotlinDetector.java b/spring-core/src/main/java/org/springframework/core/KotlinDetector.java index c1f530b6d8..20eff90f5d 100644 --- a/spring-core/src/main/java/org/springframework/core/KotlinDetector.java +++ b/spring-core/src/main/java/org/springframework/core/KotlinDetector.java @@ -34,16 +34,16 @@ import org.springframework.util.ClassUtils; @SuppressWarnings("unchecked") public abstract class KotlinDetector { - private static final @Nullable Class kotlinMetadata; + private static final @Nullable Class KOTLIN_METADATA; - private static final @Nullable Class kotlinJvmInline; + private static final @Nullable Class KOTLIN_JVM_INLINE; - private static final @Nullable Class kotlinCoroutineContinuation; + private static final @Nullable Class KOTLIN_COROUTINE_CONTINUATION; // For ConstantFieldFeature compliance, otherwise could be deduced from kotlinMetadata - private static final boolean kotlinPresent; + private static final boolean KOTLIN_PRESENT; - private static final boolean kotlinReflectPresent; + private static final boolean KOTLIN_REFLECT_PRESENT; static { ClassLoader classLoader = KotlinDetector.class.getClassLoader(); @@ -68,11 +68,11 @@ public abstract class KotlinDetector { catch (ClassNotFoundException ex) { // Kotlin API not available - no Kotlin support } - kotlinMetadata = (Class) metadata; - kotlinPresent = (kotlinMetadata != null); - kotlinReflectPresent = ClassUtils.isPresent("kotlin.reflect.full.KClasses", classLoader); - kotlinJvmInline = (Class) jvmInline; - kotlinCoroutineContinuation = coroutineContinuation; + KOTLIN_METADATA = (Class) metadata; + KOTLIN_PRESENT = (KOTLIN_METADATA != null); + KOTLIN_REFLECT_PRESENT = ClassUtils.isPresent("kotlin.reflect.full.KClasses", classLoader); + KOTLIN_JVM_INLINE = (Class) jvmInline; + KOTLIN_COROUTINE_CONTINUATION = coroutineContinuation; } @@ -80,7 +80,7 @@ public abstract class KotlinDetector { * Determine whether Kotlin is present in general. */ public static boolean isKotlinPresent() { - return kotlinPresent; + return KOTLIN_PRESENT; } /** @@ -88,7 +88,7 @@ public abstract class KotlinDetector { * @since 5.1 */ public static boolean isKotlinReflectPresent() { - return kotlinReflectPresent; + return KOTLIN_REFLECT_PRESENT; } /** @@ -100,7 +100,7 @@ public abstract class KotlinDetector { * as invokedynamic has become the default method for lambda generation. */ public static boolean isKotlinType(Class clazz) { - return (kotlinPresent && clazz.getDeclaredAnnotation(kotlinMetadata) != null); + return (KOTLIN_PRESENT && clazz.getDeclaredAnnotation(KOTLIN_METADATA) != null); } /** @@ -108,11 +108,11 @@ public abstract class KotlinDetector { * @since 5.3 */ public static boolean isSuspendingFunction(Method method) { - if (kotlinCoroutineContinuation == null) { + if (KOTLIN_COROUTINE_CONTINUATION == null) { return false; } int parameterCount = method.getParameterCount(); - return (parameterCount > 0 && method.getParameterTypes()[parameterCount - 1] == kotlinCoroutineContinuation); + return (parameterCount > 0 && method.getParameterTypes()[parameterCount - 1] == KOTLIN_COROUTINE_CONTINUATION); } /** @@ -122,7 +122,7 @@ public abstract class KotlinDetector { * @see Kotlin inline value classes */ public static boolean isInlineClass(Class clazz) { - return (kotlinJvmInline != null && clazz.getDeclaredAnnotation(kotlinJvmInline) != null); + return (KOTLIN_JVM_INLINE != null && clazz.getDeclaredAnnotation(KOTLIN_JVM_INLINE) != null); } } diff --git a/spring-core/src/main/java/org/springframework/core/ReactiveAdapterRegistry.java b/spring-core/src/main/java/org/springframework/core/ReactiveAdapterRegistry.java index ce2e173c2e..7d66979afb 100644 --- a/spring-core/src/main/java/org/springframework/core/ReactiveAdapterRegistry.java +++ b/spring-core/src/main/java/org/springframework/core/ReactiveAdapterRegistry.java @@ -61,23 +61,23 @@ public class ReactiveAdapterRegistry { private static volatile @Nullable ReactiveAdapterRegistry sharedInstance; - private static final boolean reactiveStreamsPresent; + private static final boolean REACTIVE_STREAMS_PRESENT; - private static final boolean reactorPresent; + private static final boolean REACTOR_PRESENT; - private static final boolean rxjava3Present; + private static final boolean RXJAVA_3_PRESENT; - private static final boolean kotlinCoroutinesPresent; + private static final boolean COROUTINES_REACTOR_PRESENT; - private static final boolean mutinyPresent; + private static final boolean MUTINY_PRESENT; static { ClassLoader classLoader = ReactiveAdapterRegistry.class.getClassLoader(); - reactiveStreamsPresent = ClassUtils.isPresent("org.reactivestreams.Publisher", classLoader); - reactorPresent = ClassUtils.isPresent("reactor.core.publisher.Flux", classLoader); - rxjava3Present = ClassUtils.isPresent("io.reactivex.rxjava3.core.Flowable", classLoader); - kotlinCoroutinesPresent = ClassUtils.isPresent("kotlinx.coroutines.reactor.MonoKt", classLoader); - mutinyPresent = ClassUtils.isPresent("io.smallrye.mutiny.Multi", classLoader); + REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent("org.reactivestreams.Publisher", classLoader); + REACTOR_PRESENT = ClassUtils.isPresent("reactor.core.publisher.Flux", classLoader); + RXJAVA_3_PRESENT = ClassUtils.isPresent("io.reactivex.rxjava3.core.Flowable", classLoader); + COROUTINES_REACTOR_PRESENT = ClassUtils.isPresent("kotlinx.coroutines.reactor.MonoKt", classLoader); + MUTINY_PRESENT = ClassUtils.isPresent("io.smallrye.mutiny.Multi", classLoader); } private final List adapters = new ArrayList<>(); @@ -89,32 +89,32 @@ public class ReactiveAdapterRegistry { */ public ReactiveAdapterRegistry() { // Defensive guard for the Reactive Streams API itself - if (!reactiveStreamsPresent) { + if (!REACTIVE_STREAMS_PRESENT) { return; } // Reactor - if (reactorPresent) { + if (REACTOR_PRESENT) { new ReactorRegistrar().registerAdapters(this); } // RxJava - if (rxjava3Present) { + if (RXJAVA_3_PRESENT) { new RxJava3Registrar().registerAdapters(this); } // Kotlin Coroutines - if (reactorPresent && kotlinCoroutinesPresent) { + if (REACTOR_PRESENT && COROUTINES_REACTOR_PRESENT) { new CoroutinesRegistrar().registerAdapters(this); } // SmallRye Mutiny - if (mutinyPresent) { + if (MUTINY_PRESENT) { new MutinyRegistrar().registerAdapters(this); } // Simple Flow.Publisher bridge if Reactor is not present - if (!reactorPresent) { + if (!REACTOR_PRESENT) { new FlowAdaptersRegistrar().registerAdapters(this); } } @@ -161,7 +161,7 @@ public class ReactiveAdapterRegistry { private ReactiveAdapter buildAdapter(ReactiveTypeDescriptor descriptor, Function> toAdapter, Function, Object> fromAdapter) { - return (reactorPresent ? new ReactorAdapter(descriptor, toAdapter, fromAdapter) : + return (REACTOR_PRESENT ? new ReactorAdapter(descriptor, toAdapter, fromAdapter) : new ReactiveAdapter(descriptor, toAdapter, fromAdapter)); } diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/MapTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/MapTests.java index 6b8a98328d..4de719391f 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/MapTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/MapTests.java @@ -43,15 +43,15 @@ class MapTests extends AbstractExpressionTests { // if the list is full of literals then it will be of the type unmodifiableMapClass // rather than HashMap (or similar) - private static final Class unmodifiableMapClass = Collections.unmodifiableMap(Map.of()).getClass(); + private static final Class UNMODIFIABLE_MAP_CLASS = Collections.unmodifiableMap(Map.of()).getClass(); @Test void inlineMapCreationForLiterals() { - evaluate("{'a':1, 'b':2, 'c':3, 'd':4, 'e':5}", "{a=1, b=2, c=3, d=4, e=5}", unmodifiableMapClass); - evaluate("{'a':1}", "{a=1}", unmodifiableMapClass); - evaluate("{'abc':'def', 'uvw':'xyz'}", "{abc=def, uvw=xyz}", unmodifiableMapClass); - evaluate("{:}", "{}", unmodifiableMapClass); + evaluate("{'a':1, 'b':2, 'c':3, 'd':4, 'e':5}", "{a=1, b=2, c=3, d=4, e=5}", UNMODIFIABLE_MAP_CLASS); + evaluate("{'a':1}", "{a=1}", UNMODIFIABLE_MAP_CLASS); + evaluate("{'abc':'def', 'uvw':'xyz'}", "{abc=def, uvw=xyz}", UNMODIFIABLE_MAP_CLASS); + evaluate("{:}", "{}", UNMODIFIABLE_MAP_CLASS); } @Test @@ -65,9 +65,9 @@ class MapTests extends AbstractExpressionTests { @Test void inlineMapAndNesting() { - evaluate("{a:{a:1,b:2,c:3},b:{d:4,e:5,f:6}}", "{a={a=1, b=2, c=3}, b={d=4, e=5, f=6}}", unmodifiableMapClass); - evaluate("{a:{x:1,y:'2',z:3},b:{u:4,v:{'a','b'},w:5,x:6}}", "{a={x=1, y=2, z=3}, b={u=4, v=[a, b], w=5, x=6}}", unmodifiableMapClass); - evaluate("{a:{1,2,3},b:{4,5,6}}", "{a=[1, 2, 3], b=[4, 5, 6]}", unmodifiableMapClass); + evaluate("{a:{a:1,b:2,c:3},b:{d:4,e:5,f:6}}", "{a={a=1, b=2, c=3}, b={d=4, e=5, f=6}}", UNMODIFIABLE_MAP_CLASS); + evaluate("{a:{x:1,y:'2',z:3},b:{u:4,v:{'a','b'},w:5,x:6}}", "{a={x=1, y=2, z=3}, b={u=4, v=[a, b], w=5, x=6}}", UNMODIFIABLE_MAP_CLASS); + evaluate("{a:{1,2,3},b:{4,5,6}}", "{a=[1, 2, 3], b=[4, 5, 6]}", UNMODIFIABLE_MAP_CLASS); } @Test diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java index ffffd3219a..386c32c6c3 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java @@ -94,7 +94,7 @@ import org.springframework.util.ClassUtils; */ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations { - private static final boolean micrometerJakartaPresent = ClassUtils.isPresent( + private static final boolean MICROMETER_JAKARTA_PRESENT = ClassUtils.isPresent( "io.micrometer.jakarta9.instrument.jms.JmsInstrumentation", JmsTemplate.class.getClassLoader()); /** Internal ResourceFactory adapter for interacting with ConnectionFactoryUtils. */ @@ -530,7 +530,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations if (logger.isDebugEnabled()) { logger.debug("Executing callback on JMS Session: " + sessionToUse); } - if (micrometerJakartaPresent && this.observationRegistry != null) { + if (MICROMETER_JAKARTA_PRESENT && this.observationRegistry != null) { sessionToUse = MicrometerInstrumentation.instrumentSession(sessionToUse, this.observationRegistry); } return action.doInJms(sessionToUse); @@ -952,7 +952,7 @@ public class JmsTemplate extends JmsDestinationAccessor implements JmsOperations try { con = createConnection(); session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); - if (micrometerJakartaPresent && this.observationRegistry != null) { + if (MICROMETER_JAKARTA_PRESENT && this.observationRegistry != null) { session = MicrometerInstrumentation.instrumentSession(session, this.observationRegistry); } if (startConnection) { diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java index 46e38adfcb..921cf12cc8 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java @@ -151,7 +151,7 @@ import org.springframework.util.ErrorHandler; public abstract class AbstractMessageListenerContainer extends AbstractJmsListeningContainer implements MessageListenerContainer { - private static final boolean micrometerJakartaPresent = ClassUtils.isPresent( + private static final boolean MICROMETER_JAKARTA_PRESENT = ClassUtils.isPresent( "io.micrometer.jakarta9.instrument.jms.JmsInstrumentation", AbstractMessageListenerContainer.class.getClassLoader()); @@ -700,7 +700,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen * @since 6.1 */ protected Observation createObservation(Message message) { - if (micrometerJakartaPresent && this.observationRegistry != null) { + if (MICROMETER_JAKARTA_PRESENT && this.observationRegistry != null) { return ObservationFactory.create(this.observationRegistry, message); } else { @@ -785,7 +785,7 @@ public abstract class AbstractMessageListenerContainer extends AbstractJmsListen Session sessionToClose = null; try { Session sessionToUse = session; - if (micrometerJakartaPresent && this.observationRegistry != null) { + if (MICROMETER_JAKARTA_PRESENT && this.observationRegistry != null) { sessionToUse = MicrometerInstrumentation.instrumentSession(sessionToUse, this.observationRegistry); } if (!isExposeListenerSession()) { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java index e0e21101cc..0badfa3535 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java @@ -67,7 +67,7 @@ public class ProtobufMessageConverter extends AbstractMessageConverter { */ public static final MimeType PROTOBUF = new MimeType("application", "x-protobuf", DEFAULT_CHARSET); - private static final boolean protobufJsonFormatPresent = + private static final boolean PROTOBUF_JSON_FORMAT_PRESENT = ClassUtils.isPresent("com.google.protobuf.util.JsonFormat", ProtobufMessageConverter.class.getClassLoader()); private static final Map, Method> methodCache = new ConcurrentReferenceHashMap<>(); @@ -100,7 +100,7 @@ public class ProtobufMessageConverter extends AbstractMessageConverter { if (formatSupport != null) { this.protobufFormatSupport = formatSupport; } - else if (protobufJsonFormatPresent) { + else if (PROTOBUF_JSON_FORMAT_PRESENT) { this.protobufFormatSupport = new ProtobufJavaUtilSupport(null, null); } else { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java index 8aa4bd8928..6a6970a5f0 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java @@ -94,7 +94,7 @@ import org.springframework.validation.Validator; public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHandler implements EmbeddedValueResolverAware, SmartLifecycle { - private static final boolean reactorPresent = ClassUtils.isPresent( + private static final boolean REACTOR_PRESENT = ClassUtils.isPresent( "reactor.core.publisher.Flux", SimpAnnotationMethodMessageHandler.class.getClassLoader()); @@ -344,7 +344,7 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan // Single-purpose return value types handlers.add(new CompletableFutureReturnValueHandler()); - if (reactorPresent) { + if (REACTOR_PRESENT) { handlers.add(new ReactiveReturnValueHandler()); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java index f5c497483f..664532b231 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java @@ -104,25 +104,25 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC private static final String MVC_VALIDATOR_NAME = "mvcValidator"; - private static final boolean jacksonPresent; + private static final boolean JACKSON_PRESENT; - private static final boolean jackson2Present; + private static final boolean JACKSON_2_PRESENT; - private static final boolean gsonPresent; + private static final boolean GSON_PRESENT; - private static final boolean jsonbPresent; + private static final boolean JSONB_PRESENT; - private static final boolean kotlinSerializationJsonPresent; + private static final boolean KOTLIN_SERIALIZATION_JSON_PRESENT; static { ClassLoader classLoader = AbstractMessageBrokerConfiguration.class.getClassLoader(); - jacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader); - jsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); - kotlinSerializationJsonPresent = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); + GSON_PRESENT = ClassUtils.isPresent("com.google.gson.Gson", classLoader); + JSONB_PRESENT = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); + KOTLIN_SERIALIZATION_JSON_PRESENT = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); } @@ -502,19 +502,19 @@ public abstract class AbstractMessageBrokerConfiguration implements ApplicationC if (registerDefaults) { converters.add(new StringMessageConverter()); converters.add(new ByteArrayMessageConverter()); - if (kotlinSerializationJsonPresent) { + if (KOTLIN_SERIALIZATION_JSON_PRESENT) { converters.add(new KotlinSerializationJsonMessageConverter()); } - if (jacksonPresent) { + if (JACKSON_PRESENT) { converters.add(createJacksonJsonConverter()); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { converters.add(createJacksonConverter()); } - else if (gsonPresent) { + else if (GSON_PRESENT) { converters.add(new GsonMessageConverter()); } - else if (jsonbPresent) { + else if (JSONB_PRESENT) { converters.add(new JsonbMessageConverter()); } } diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java index b84cddc919..c4ccbad1dd 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java @@ -68,12 +68,12 @@ import org.springframework.util.ReflectionUtils; @SuppressWarnings("unchecked") class PersistenceManagedTypesBeanRegistrationAotProcessor implements BeanRegistrationAotProcessor { - private static final boolean jpaPresent = ClassUtils.isPresent("jakarta.persistence.Entity", + private static final boolean JPA_PRESENT = ClassUtils.isPresent("jakarta.persistence.Entity", PersistenceManagedTypesBeanRegistrationAotProcessor.class.getClassLoader()); @Override public @Nullable BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { - if (jpaPresent) { + if (JPA_PRESENT) { if (PersistenceManagedTypes.class.isAssignableFrom(registeredBean.getBeanClass())) { return BeanRegistrationAotContribution.withCustomCodeFragments(codeFragments -> new JpaManagedTypesBeanRegistrationCodeFragments(codeFragments, registeredBean)); diff --git a/spring-test/src/main/java/org/springframework/test/context/BootstrapUtils.java b/spring-test/src/main/java/org/springframework/test/context/BootstrapUtils.java index 3af864d2d4..2113cb0100 100644 --- a/spring-test/src/main/java/org/springframework/test/context/BootstrapUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/BootstrapUtils.java @@ -60,7 +60,7 @@ public abstract class BootstrapUtils { private static final String WEB_APP_CONFIGURATION_ANNOTATION_CLASS_NAME = "org.springframework.test.context.web.WebAppConfiguration"; - private static final Class webAppConfigurationClass = loadWebAppConfigurationClass(); + private static final Class WEB_APP_CONFIGURATION_CLASS = loadWebAppConfigurationClass(); private static final Log logger = LogFactory.getLog(BootstrapUtils.class); @@ -196,7 +196,7 @@ public abstract class BootstrapUtils { } private static Class resolveDefaultTestContextBootstrapper(Class testClass) throws Exception { - boolean webApp = TestContextAnnotationUtils.hasAnnotation(testClass, webAppConfigurationClass); + boolean webApp = TestContextAnnotationUtils.hasAnnotation(testClass, WEB_APP_CONFIGURATION_CLASS); String bootstrapperClassName = (webApp ? DEFAULT_WEB_TEST_CONTEXT_BOOTSTRAPPER_CLASS_NAME : DEFAULT_TEST_CONTEXT_BOOTSTRAPPER_CLASS_NAME); return ClassUtils.forName(bootstrapperClassName, BootstrapUtils.class.getClassLoader()); diff --git a/spring-test/src/main/java/org/springframework/test/context/aot/MergedContextConfigurationRuntimeHints.java b/spring-test/src/main/java/org/springframework/test/context/aot/MergedContextConfigurationRuntimeHints.java index 587167d2e6..8e16f82a70 100644 --- a/spring-test/src/main/java/org/springframework/test/context/aot/MergedContextConfigurationRuntimeHints.java +++ b/spring-test/src/main/java/org/springframework/test/context/aot/MergedContextConfigurationRuntimeHints.java @@ -57,7 +57,7 @@ class MergedContextConfigurationRuntimeHints { private static final String GET_RESOURCE_BASE_PATH_METHOD_NAME = "getResourceBasePath"; - private static final Class webMergedContextConfigurationClass = loadWebMergedContextConfigurationClass(); + private static final Class WEB_MERGED_CONTEXT_CONFIGURATION_CLASS = loadWebMergedContextConfigurationClass(); private static final Method getResourceBasePathMethod = loadGetResourceBasePathMethod(); @@ -90,7 +90,7 @@ class MergedContextConfigurationRuntimeHints { } // @WebAppConfiguration(value = ...) - if (webMergedContextConfigurationClass.isInstance(mergedConfig)) { + if (WEB_MERGED_CONTEXT_CONFIGURATION_CLASS.isInstance(mergedConfig)) { String resourceBasePath; try { resourceBasePath = (String) getResourceBasePathMethod.invoke(mergedConfig); @@ -162,7 +162,7 @@ class MergedContextConfigurationRuntimeHints { private static Method loadGetResourceBasePathMethod() { try { - return webMergedContextConfigurationClass.getMethod(GET_RESOURCE_BASE_PATH_METHOD_NAME); + return WEB_MERGED_CONTEXT_CONFIGURATION_CLASS.getMethod(GET_RESOURCE_BASE_PATH_METHOD_NAME); } catch (Exception ex) { throw new IllegalStateException( diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java index 31298488cc..055c4c61be 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.java @@ -63,17 +63,17 @@ public class MockitoResetTestExecutionListener extends AbstractTestExecutionList * @see #mockitoInitialized * @see #isEnabled() */ - private static final boolean mockitoPresent = ClassUtils.isPresent("org.mockito.Mockito", + private static final boolean MOCKITO_PRESENT = ClassUtils.isPresent("org.mockito.Mockito", MockitoResetTestExecutionListener.class.getClassLoader()); /** * Boolean flag which tracks whether Mockito has been successfully initialized * in the current environment. - *

Even if {@link #mockitoPresent} evaluates to {@code true}, this flag + *

Even if {@link #MOCKITO_PRESENT} evaluates to {@code true}, this flag * may eventually evaluate to {@code false} — for example, in a GraalVM * native image if the necessary reachability metadata has not been registered * for the {@link org.mockito.plugins.MockMaker} in use. - * @see #mockitoPresent + * @see #MOCKITO_PRESENT * @see #isEnabled() */ private static volatile @Nullable Boolean mockitoInitialized; @@ -158,11 +158,11 @@ public class MockitoResetTestExecutionListener extends AbstractTestExecutionList /** * Determine if this listener is enabled in the current environment. - * @see #mockitoPresent + * @see #MOCKITO_PRESENT * @see #mockitoInitialized */ private static boolean isEnabled() { - if (!mockitoPresent) { + if (!MOCKITO_PRESENT) { return false; } Boolean enabled = mockitoInitialized; diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler.java index 3f5cd84fe6..c344d0e2c3 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler.java @@ -80,7 +80,7 @@ class MockitoSpyBeanOverrideHandler extends AbstractMockitoBeanOverrideHandler { if (StringUtils.hasLength(name)) { settings.name(name); } - if (SpringMockResolver.springAopPresent) { + if (SpringMockResolver.SPRING_AOP_PRESENT) { settings.verificationStartedListeners(verificationStartedListener); } diff --git a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/SpringMockResolver.java b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/SpringMockResolver.java index fd26dffd50..12e31cd088 100644 --- a/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/SpringMockResolver.java +++ b/spring-test/src/main/java/org/springframework/test/context/bean/override/mockito/SpringMockResolver.java @@ -37,13 +37,13 @@ import org.springframework.util.ClassUtils; */ public class SpringMockResolver implements MockResolver { - static final boolean springAopPresent = ClassUtils.isPresent( + static final boolean SPRING_AOP_PRESENT = ClassUtils.isPresent( "org.springframework.aop.framework.Advised", SpringMockResolver.class.getClassLoader()); @Override public Object resolve(Object instance) { - if (springAopPresent) { + if (SPRING_AOP_PRESENT) { return getUltimateTargetObject(instance); } return instance; diff --git a/spring-test/src/main/java/org/springframework/test/context/support/DelegatingSmartContextLoader.java b/spring-test/src/main/java/org/springframework/test/context/support/DelegatingSmartContextLoader.java index 8d35672190..5d5352fb97 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/DelegatingSmartContextLoader.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/DelegatingSmartContextLoader.java @@ -39,7 +39,7 @@ public class DelegatingSmartContextLoader extends AbstractDelegatingSmartContext private static final String GROOVY_XML_CONTEXT_LOADER_CLASS_NAME = "org.springframework.test.context.support.GenericGroovyXmlContextLoader"; - private static final boolean groovyPresent = ClassUtils.isPresent("groovy.lang.Closure", + private static final boolean GROOVY_PRESENT = ClassUtils.isPresent("groovy.lang.Closure", DelegatingSmartContextLoader.class.getClassLoader()) && ClassUtils.isPresent(GROOVY_XML_CONTEXT_LOADER_CLASS_NAME, DelegatingSmartContextLoader.class.getClassLoader()); @@ -50,7 +50,7 @@ public class DelegatingSmartContextLoader extends AbstractDelegatingSmartContext public DelegatingSmartContextLoader() { - if (groovyPresent) { + if (GROOVY_PRESENT) { try { Class loaderClass = ClassUtils.forName(GROOVY_XML_CONTEXT_LOADER_CLASS_NAME, DelegatingSmartContextLoader.class.getClassLoader()); diff --git a/spring-test/src/main/java/org/springframework/test/context/web/WebDelegatingSmartContextLoader.java b/spring-test/src/main/java/org/springframework/test/context/web/WebDelegatingSmartContextLoader.java index 70389c9b7e..6ee87aa983 100644 --- a/spring-test/src/main/java/org/springframework/test/context/web/WebDelegatingSmartContextLoader.java +++ b/spring-test/src/main/java/org/springframework/test/context/web/WebDelegatingSmartContextLoader.java @@ -38,7 +38,7 @@ public class WebDelegatingSmartContextLoader extends AbstractDelegatingSmartCont private static final String GROOVY_XML_WEB_CONTEXT_LOADER_CLASS_NAME = "org.springframework.test.context.web.GenericGroovyXmlWebContextLoader"; - private static final boolean groovyPresent = ClassUtils.isPresent("groovy.lang.Closure", + private static final boolean GROOVY_PRESENT = ClassUtils.isPresent("groovy.lang.Closure", WebDelegatingSmartContextLoader.class.getClassLoader()) && ClassUtils.isPresent(GROOVY_XML_WEB_CONTEXT_LOADER_CLASS_NAME, WebDelegatingSmartContextLoader.class.getClassLoader()); @@ -48,7 +48,7 @@ public class WebDelegatingSmartContextLoader extends AbstractDelegatingSmartCont public WebDelegatingSmartContextLoader() { - if (groovyPresent) { + if (GROOVY_PRESENT) { try { Class loaderClass = ClassUtils.forName(GROOVY_XML_WEB_CONTEXT_LOADER_CLASS_NAME, WebDelegatingSmartContextLoader.class.getClassLoader()); diff --git a/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java b/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java index 27cabc99c9..f9c6ddff52 100644 --- a/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java +++ b/spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.java @@ -38,7 +38,7 @@ import org.springframework.util.ClassUtils; */ class MockServerContainerContextCustomizerFactory implements ContextCustomizerFactory { - private static final boolean webSocketPresent = ClassUtils.isPresent("jakarta.websocket.server.ServerContainer", + private static final boolean WEB_SOCKET_PRESENT = ClassUtils.isPresent("jakarta.websocket.server.ServerContainer", MockServerContainerContextCustomizerFactory.class.getClassLoader()); @@ -46,7 +46,7 @@ class MockServerContainerContextCustomizerFactory implements ContextCustomizerFa public @Nullable ContextCustomizer createContextCustomizer(Class testClass, List configAttributes) { - if (webSocketPresent && isAnnotatedWithWebAppConfiguration(testClass)) { + if (WEB_SOCKET_PRESENT && isAnnotatedWithWebAppConfiguration(testClass)) { return new MockServerContainerContextCustomizer(); } // Else, nothing to customize diff --git a/spring-test/src/main/java/org/springframework/test/util/ReflectionTestUtils.java b/spring-test/src/main/java/org/springframework/test/util/ReflectionTestUtils.java index e6a9a6c14a..b21cc5a2de 100644 --- a/spring-test/src/main/java/org/springframework/test/util/ReflectionTestUtils.java +++ b/spring-test/src/main/java/org/springframework/test/util/ReflectionTestUtils.java @@ -75,7 +75,7 @@ public abstract class ReflectionTestUtils { private static final Log logger = LogFactory.getLog(ReflectionTestUtils.class); - private static final boolean springAopPresent = ClassUtils.isPresent( + private static final boolean SPRING_AOP_PRESENT = ClassUtils.isPresent( "org.springframework.aop.framework.Advised", ReflectionTestUtils.class.getClassLoader()); @@ -180,7 +180,7 @@ public abstract class ReflectionTestUtils { Assert.isTrue(targetObject != null || targetClass != null, "Either targetObject or targetClass for the field must be specified"); - if (targetObject != null && springAopPresent) { + if (targetObject != null && SPRING_AOP_PRESENT) { targetObject = AopTestUtils.getUltimateTargetObject(targetObject); } if (targetClass == null) { @@ -263,7 +263,7 @@ public abstract class ReflectionTestUtils { Assert.isTrue(targetObject != null || targetClass != null, "Either targetObject or targetClass for the field must be specified"); - if (targetObject != null && springAopPresent) { + if (targetObject != null && SPRING_AOP_PRESENT) { targetObject = AopTestUtils.getUltimateTargetObject(targetObject); } if (targetClass == null) { @@ -352,7 +352,7 @@ public abstract class ReflectionTestUtils { safeToString(target), value)); } - if (springAopPresent) { + if (SPRING_AOP_PRESENT) { // If the target is a CGLIB proxy which does not intercept the method, invoke the // method on the ultimate target. if (isCglibProxyThatDoesNotInterceptMethod(target, method)) { @@ -406,7 +406,7 @@ public abstract class ReflectionTestUtils { "Could not find getter method '%s' on %s", getterMethodName, safeToString(target))); } - if (springAopPresent) { + if (SPRING_AOP_PRESENT) { // If the target is a CGLIB proxy which does not intercept the method, invoke the // method on the ultimate target. if (isCglibProxyThatDoesNotInterceptMethod(target, method)) { @@ -500,7 +500,7 @@ public abstract class ReflectionTestUtils { methodInvoker.setArguments(args); methodInvoker.prepare(); - if (targetObject != null && springAopPresent) { + if (targetObject != null && SPRING_AOP_PRESENT) { // If the target is a CGLIB proxy which does not intercept the method, invoke the // method on the ultimate target. if (isCglibProxyThatDoesNotInterceptMethod(targetObject, methodInvoker.getPreparedMethod())) { diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java index d9693ca61f..5d62cd4b07 100644 --- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java @@ -56,22 +56,22 @@ import org.springframework.web.util.UriBuilderFactory; */ class DefaultWebTestClientBuilder implements WebTestClient.Builder { - private static final boolean reactorNettyClientPresent; + private static final boolean REACTOR_NETTY_CLIENT_PRESENT; - private static final boolean jettyClientPresent; + private static final boolean JETTY_CLIENT_PRESENT; - private static final boolean httpComponentsClientPresent; + private static final boolean HTTP_COMPONENTS_CLIENT_PRESENT; - private static final boolean webFluxPresent; + private static final boolean WEB_FLUX_PRESENT; static { ClassLoader loader = DefaultWebTestClientBuilder.class.getClassLoader(); - reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); - jettyClientPresent = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); - httpComponentsClientPresent = + REACTOR_NETTY_CLIENT_PRESENT = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); + JETTY_CLIENT_PRESENT = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); + HTTP_COMPONENTS_CLIENT_PRESENT = ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) && ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader); - webFluxPresent = ClassUtils.isPresent( + WEB_FLUX_PRESENT = ClassUtils.isPresent( "org.springframework.web.reactive.function.client.ExchangeFunction", loader); } @@ -122,7 +122,7 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder { "Expected WebHttpHandlerBuilder or ClientHttpConnector but not both."); // Helpful message especially for MockMvcWebTestClient users - Assert.state(webFluxPresent, + Assert.state(WEB_FLUX_PRESENT, "To use WebTestClient, please add spring-webflux to the test classpath."); this.connector = connector; @@ -312,13 +312,13 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder { } private static ClientHttpConnector initConnector() { - if (reactorNettyClientPresent) { + if (REACTOR_NETTY_CLIENT_PRESENT) { return new ReactorClientHttpConnector(); } - else if (jettyClientPresent) { + else if (JETTY_CLIENT_PRESENT) { return new JettyClientHttpConnector(); } - else if (httpComponentsClientPresent) { + else if (HTTP_COMPONENTS_CLIENT_PRESENT) { return new HttpComponentsClientHttpConnector(); } else { diff --git a/spring-test/src/test/java/org/springframework/test/context/TestExecutionListenersTests.java b/spring-test/src/test/java/org/springframework/test/context/TestExecutionListenersTests.java index 0b81c15cc3..36f31894c5 100644 --- a/spring-test/src/test/java/org/springframework/test/context/TestExecutionListenersTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/TestExecutionListenersTests.java @@ -59,7 +59,7 @@ import static org.springframework.test.context.TestExecutionListeners.MergeMode. */ class TestExecutionListenersTests { - private static final Class micrometerListenerClass = + private static final Class MICROMETER_LISTENER_CLASS = ClassUtils.resolveClassName("org.springframework.test.context.observation.MicrometerObservationRegistryTestExecutionListener", null); @Test @@ -70,7 +70,7 @@ class TestExecutionListenersTests { ApplicationEventsTestExecutionListener.class,// BeanOverrideTestExecutionListener.class,// DependencyInjectionTestExecutionListener.class,// - micrometerListenerClass,// + MICROMETER_LISTENER_CLASS,// DirtiesContextTestExecutionListener.class,// CommonCachesTestExecutionListener.class, // TransactionalTestExecutionListener.class,// @@ -93,7 +93,7 @@ class TestExecutionListenersTests { ApplicationEventsTestExecutionListener.class,// BeanOverrideTestExecutionListener.class,// DependencyInjectionTestExecutionListener.class,// - micrometerListenerClass,// + MICROMETER_LISTENER_CLASS,// DirtiesContextTestExecutionListener.class,// CommonCachesTestExecutionListener.class, // TransactionalTestExecutionListener.class,// @@ -115,7 +115,7 @@ class TestExecutionListenersTests { ApplicationEventsTestExecutionListener.class,// BeanOverrideTestExecutionListener.class,// DependencyInjectionTestExecutionListener.class,// - micrometerListenerClass,// + MICROMETER_LISTENER_CLASS,// DirtiesContextTestExecutionListener.class,// CommonCachesTestExecutionListener.class, // TransactionalTestExecutionListener.class, @@ -139,7 +139,7 @@ class TestExecutionListenersTests { BeanOverrideTestExecutionListener.class,// DependencyInjectionTestExecutionListener.class,// BarTestExecutionListener.class,// - micrometerListenerClass,// + MICROMETER_LISTENER_CLASS,// DirtiesContextTestExecutionListener.class,// CommonCachesTestExecutionListener.class, // TransactionalTestExecutionListener.class,// diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java index 8233b5148a..5889e374f6 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java @@ -60,14 +60,14 @@ import org.springframework.util.CollectionUtils; public class AnnotationTransactionAttributeSource extends AbstractFallbackTransactionAttributeSource implements Serializable { - private static final boolean jtaPresent; + private static final boolean JTA_PRESENT; - private static final boolean ejb3Present; + private static final boolean EJB_3_PRESENT; static { ClassLoader classLoader = AnnotationTransactionAttributeSource.class.getClassLoader(); - jtaPresent = ClassUtils.isPresent("jakarta.transaction.Transactional", classLoader); - ejb3Present = ClassUtils.isPresent("jakarta.ejb.TransactionAttribute", classLoader); + JTA_PRESENT = ClassUtils.isPresent("jakarta.transaction.Transactional", classLoader); + EJB_3_PRESENT = ClassUtils.isPresent("jakarta.ejb.TransactionAttribute", classLoader); } private final Set annotationParsers; @@ -83,13 +83,13 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa * or the EJB3 {@link jakarta.ejb.TransactionAttribute} annotation. */ public AnnotationTransactionAttributeSource() { - if (jtaPresent || ejb3Present) { + if (JTA_PRESENT || EJB_3_PRESENT) { this.annotationParsers = CollectionUtils.newLinkedHashSet(3); this.annotationParsers.add(new SpringTransactionAnnotationParser()); - if (jtaPresent) { + if (JTA_PRESENT) { this.annotationParsers.add(new JtaTransactionAnnotationParser()); } - if (ejb3Present) { + if (EJB_3_PRESENT) { this.annotationParsers.add(new Ejb3TransactionAnnotationParser()); } } diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index 02a585686d..2441dc1069 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -104,13 +104,13 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init /** * Reactive Streams API present on the classpath? */ - private static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + private static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", TransactionAspectSupport.class.getClassLoader()); /** * Vavr library present on the classpath? */ - private static final boolean vavrPresent = ClassUtils.isPresent( + private static final boolean VAVR_PRESENT = ClassUtils.isPresent( "io.vavr.control.Try", TransactionAspectSupport.class.getClassLoader()); /** @@ -187,7 +187,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init protected TransactionAspectSupport() { - if (reactiveStreamsPresent) { + if (REACTIVE_STREAMS_PRESENT) { this.reactiveAdapterRegistry = ReactiveAdapterRegistry.getSharedInstance(); } else { @@ -395,7 +395,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init Thread.currentThread().interrupt(); } } - else if (vavrPresent && VavrDelegate.isVavrTry(retVal)) { + else if (VAVR_PRESENT && VavrDelegate.isVavrTry(retVal)) { // Set rollback-only in case of Vavr failure matching our rollback rules... retVal = VavrDelegate.evaluateTryFailure(retVal, txAttr, status); } @@ -416,7 +416,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init TransactionInfo txInfo = prepareTransactionInfo(ptm, txAttr, joinpointIdentification, status); try { Object retVal = invocation.proceedWithInvocation(); - if (retVal != null && vavrPresent && VavrDelegate.isVavrTry(retVal)) { + if (retVal != null && VAVR_PRESENT && VavrDelegate.isVavrTry(retVal)) { // Set rollback-only in case of Vavr failure matching our rollback rules... retVal = VavrDelegate.evaluateTryFailure(retVal, txAttr, status); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionSynchronizationUtils.java b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionSynchronizationUtils.java index f82dde8530..8965bde3d1 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionSynchronizationUtils.java +++ b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionSynchronizationUtils.java @@ -42,7 +42,7 @@ abstract class TransactionSynchronizationUtils { private static final Log logger = LogFactory.getLog(TransactionSynchronizationUtils.class); - private static final boolean aopPresent = ClassUtils.isPresent( + private static final boolean SPRING_AOP_PRESENT = ClassUtils.isPresent( "org.springframework.aop.scope.ScopedObject", TransactionSynchronizationUtils.class.getClassLoader()); @@ -58,7 +58,7 @@ abstract class TransactionSynchronizationUtils { if (resourceRef instanceof InfrastructureProxy infrastructureProxy) { resourceRef = infrastructureProxy.getWrappedObject(); } - if (aopPresent) { + if (SPRING_AOP_PRESENT) { // now unwrap scoped proxy resourceRef = ScopedProxyUnwrapper.unwrapIfNecessary(resourceRef); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationUtils.java b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationUtils.java index 795a4f75e8..8fe650c450 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationUtils.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationUtils.java @@ -40,7 +40,7 @@ public abstract class TransactionSynchronizationUtils { private static final Log logger = LogFactory.getLog(TransactionSynchronizationUtils.class); - private static final boolean aopPresent = ClassUtils.isPresent( + private static final boolean SPRING_AOP_PRESENT = ClassUtils.isPresent( "org.springframework.aop.scope.ScopedObject", TransactionSynchronizationUtils.class.getClassLoader()); @@ -67,7 +67,7 @@ public abstract class TransactionSynchronizationUtils { if (resourceRef instanceof InfrastructureProxy infrastructureProxy) { resourceRef = infrastructureProxy.getWrappedObject(); } - if (aopPresent) { + if (SPRING_AOP_PRESENT) { // now unwrap scoped proxy resourceRef = ScopedProxyUnwrapper.unwrapIfNecessary(resourceRef); } diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java index b8d3353da5..4d2b097272 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java +++ b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java @@ -89,39 +89,39 @@ import org.springframework.util.ObjectUtils; */ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigurer.DefaultCodecConfig { - static final boolean jacksonPresent; + static final boolean JACKSON_PRESENT; - static final boolean jackson2Present; + static final boolean JACKSON_2_PRESENT; - private static final boolean jacksonSmilePresent; + private static final boolean JACKSON_SMILE_PRESENT; - private static final boolean jackson2SmilePresent; + private static final boolean JACKSON_2_SMILE_PRESENT; - private static final boolean jaxb2Present; + private static final boolean JAXB_2_PRESENT; - private static final boolean protobufPresent; + private static final boolean PROTOBUF_PRESENT; - static final boolean nettyByteBufPresent; + static final boolean NETTY_BYTE_BUF_PRESENT; - static final boolean kotlinSerializationCborPresent; + static final boolean KOTLIN_SERIALIZATION_CBOR_PRESENT; - static final boolean kotlinSerializationJsonPresent; + static final boolean KOTLIN_SERIALIZATION_JSON_PRESENT; - static final boolean kotlinSerializationProtobufPresent; + static final boolean KOTLIN_SERIALIZATION_PROTOBUF_PRESENT; static { ClassLoader classLoader = BaseCodecConfigurer.class.getClassLoader(); - jacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - jacksonSmilePresent = jacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); - jackson2SmilePresent = jackson2Present && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); - jaxb2Present = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); - protobufPresent = ClassUtils.isPresent("com.google.protobuf.Message", classLoader); - nettyByteBufPresent = ClassUtils.isPresent("io.netty.buffer.ByteBuf", classLoader); - kotlinSerializationCborPresent = ClassUtils.isPresent("kotlinx.serialization.cbor.Cbor", classLoader); - kotlinSerializationJsonPresent = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); - kotlinSerializationProtobufPresent = ClassUtils.isPresent("kotlinx.serialization.protobuf.ProtoBuf", classLoader); + JACKSON_SMILE_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); + JACKSON_2_SMILE_PRESENT = JACKSON_2_PRESENT && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); + JAXB_2_PRESENT = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); + PROTOBUF_PRESENT = ClassUtils.isPresent("com.google.protobuf.Message", classLoader); + NETTY_BYTE_BUF_PRESENT = ClassUtils.isPresent("io.netty.buffer.ByteBuf", classLoader); + KOTLIN_SERIALIZATION_CBOR_PRESENT = ClassUtils.isPresent("kotlinx.serialization.cbor.Cbor", classLoader); + KOTLIN_SERIALIZATION_JSON_PRESENT = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); + KOTLIN_SERIALIZATION_PROTOBUF_PRESENT = ClassUtils.isPresent("kotlinx.serialization.protobuf.ProtoBuf", classLoader); } @@ -448,12 +448,12 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure addCodec(this.typedReaders, new DecoderHttpMessageReader<>(new ByteArrayDecoder())); addCodec(this.typedReaders, new DecoderHttpMessageReader<>(new ByteBufferDecoder())); addCodec(this.typedReaders, new DecoderHttpMessageReader<>(new DataBufferDecoder())); - if (nettyByteBufPresent) { + if (NETTY_BYTE_BUF_PRESENT) { addCodec(this.typedReaders, new DecoderHttpMessageReader<>(new NettyByteBufDecoder())); } addCodec(this.typedReaders, new ResourceHttpMessageReader(new ResourceDecoder())); addCodec(this.typedReaders, new DecoderHttpMessageReader<>(StringDecoder.textPlainOnly())); - if (protobufPresent) { + if (PROTOBUF_PRESENT) { addCodec(this.typedReaders, new DecoderHttpMessageReader<>(this.protobufDecoder != null ? (ProtobufDecoder) this.protobufDecoder : new ProtobufDecoder())); } @@ -506,37 +506,37 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure } // Pattern variables in the following if-blocks cannot be named the same as instance fields // due to lacking support in Checkstyle: https://github.com/checkstyle/checkstyle/issues/10969 - if (protobufPresent) { + if (PROTOBUF_PRESENT) { if (codec instanceof ProtobufDecoder protobufDec) { protobufDec.setMaxMessageSize(size); } } - if (kotlinSerializationCborPresent) { + if (KOTLIN_SERIALIZATION_CBOR_PRESENT) { if (codec instanceof KotlinSerializationCborDecoder kotlinSerializationCborDec) { kotlinSerializationCborDec.setMaxInMemorySize(size); } } - if (kotlinSerializationJsonPresent) { + if (KOTLIN_SERIALIZATION_JSON_PRESENT) { if (codec instanceof KotlinSerializationJsonDecoder kotlinSerializationJsonDec) { kotlinSerializationJsonDec.setMaxInMemorySize(size); } } - if (kotlinSerializationProtobufPresent) { + if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { if (codec instanceof KotlinSerializationProtobufDecoder kotlinSerializationProtobufDec) { kotlinSerializationProtobufDec.setMaxInMemorySize(size); } } - if (jacksonPresent) { + if (JACKSON_PRESENT) { if (codec instanceof AbstractJacksonDecoder abstractJacksonDecoder) { abstractJacksonDecoder.setMaxInMemorySize(size); } } - if (jackson2Present) { + if (JACKSON_2_PRESENT) { if (codec instanceof AbstractJackson2Decoder abstractJackson2Decoder) { abstractJackson2Decoder.setMaxInMemorySize(size); } } - if (jaxb2Present) { + if (JAXB_2_PRESENT) { if (codec instanceof Jaxb2XmlDecoder jaxb2XmlDecoder) { jaxb2XmlDecoder.setMaxInMemorySize(size); } @@ -619,35 +619,35 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure if (!this.registerDefaults) { return; } - if (kotlinSerializationCborPresent) { + if (KOTLIN_SERIALIZATION_CBOR_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.kotlinSerializationCborDecoder != null ? (KotlinSerializationCborDecoder) this.kotlinSerializationCborDecoder : new KotlinSerializationCborDecoder())); } - if (kotlinSerializationProtobufPresent) { + if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.kotlinSerializationProtobufDecoder != null ? (KotlinSerializationProtobufDecoder) this.kotlinSerializationProtobufDecoder : new KotlinSerializationProtobufDecoder())); } - if (jacksonPresent) { + if (JACKSON_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getJacksonJsonDecoder())); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getJackson2JsonDecoder())); } - else if (kotlinSerializationJsonPresent) { + else if (KOTLIN_SERIALIZATION_JSON_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getKotlinSerializationJsonDecoder())); } - if (jacksonSmilePresent) { + if (JACKSON_SMILE_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.jacksonSmileDecoder != null ? (JacksonSmileDecoder) this.jacksonSmileDecoder : new JacksonSmileDecoder())); } - else if (jackson2SmilePresent) { + else if (JACKSON_2_SMILE_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.jackson2SmileDecoder != null ? (Jackson2SmileDecoder) this.jackson2SmileDecoder : new Jackson2SmileDecoder())); } - if (jaxb2Present) { + if (JAXB_2_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.jaxb2Decoder != null ? (Jaxb2XmlDecoder) this.jaxb2Decoder : new Jaxb2XmlDecoder())); } @@ -705,12 +705,12 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure addCodec(writers, new EncoderHttpMessageWriter<>(new ByteArrayEncoder())); addCodec(writers, new EncoderHttpMessageWriter<>(new ByteBufferEncoder())); addCodec(writers, new EncoderHttpMessageWriter<>(new DataBufferEncoder())); - if (nettyByteBufPresent) { + if (NETTY_BYTE_BUF_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(new NettyByteBufEncoder())); } addCodec(writers, new ResourceHttpMessageWriter()); addCodec(writers, new EncoderHttpMessageWriter<>(CharSequenceEncoder.textPlainOnly())); - if (protobufPresent) { + if (PROTOBUF_PRESENT) { addCodec(writers, new ProtobufHttpMessageWriter(this.protobufEncoder != null ? (ProtobufEncoder) this.protobufEncoder : new ProtobufEncoder())); } @@ -765,34 +765,34 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure @SuppressWarnings("removal") final List> getBaseObjectWriters() { List> writers = new ArrayList<>(); - if (kotlinSerializationCborPresent) { + if (KOTLIN_SERIALIZATION_CBOR_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.kotlinSerializationCborEncoder != null ? (KotlinSerializationCborEncoder) this.kotlinSerializationCborEncoder : new KotlinSerializationCborEncoder())); } - if (kotlinSerializationProtobufPresent) { + if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.kotlinSerializationProtobufEncoder != null ? (KotlinSerializationProtobufEncoder) this.kotlinSerializationProtobufEncoder : new KotlinSerializationProtobufEncoder())); } - if (jacksonPresent) { + if (JACKSON_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(getJacksonJsonEncoder())); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(getJackson2JsonEncoder())); } - else if (kotlinSerializationJsonPresent) { + else if (KOTLIN_SERIALIZATION_JSON_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(getKotlinSerializationJsonEncoder())); } - if (jacksonSmilePresent) { + if (JACKSON_SMILE_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.jacksonSmileEncoder != null ? (JacksonSmileEncoder) this.jacksonSmileEncoder : new JacksonSmileEncoder())); } - else if (jackson2SmilePresent) { + else if (JACKSON_2_SMILE_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.jackson2SmileEncoder != null ? (Jackson2SmileEncoder) this.jackson2SmileEncoder : new Jackson2SmileEncoder())); } - if (jaxb2Present) { + if (JAXB_2_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.jaxb2Encoder != null ? (Jaxb2XmlEncoder) this.jaxb2Encoder : new Jaxb2XmlEncoder())); } diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java b/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java index 50a56b5980..81821a343f 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java +++ b/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java @@ -53,9 +53,9 @@ class ClientDefaultCodecsImpl extends BaseDefaultCodecs implements ClientCodecCo protected void extendObjectReaders(List> objectReaders) { Decoder decoder = (this.sseDecoder != null ? this.sseDecoder : - jacksonPresent ? getJacksonJsonDecoder() : - jackson2Present ? getJackson2JsonDecoder() : - kotlinSerializationJsonPresent ? getKotlinSerializationJsonDecoder() : + JACKSON_PRESENT ? getJacksonJsonDecoder() : + JACKSON_2_PRESENT ? getJackson2JsonDecoder() : + KOTLIN_SERIALIZATION_JSON_PRESENT ? getKotlinSerializationJsonDecoder() : null); addCodec(objectReaders, new ServerSentEventHttpMessageReader(decoder)); diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java b/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java index caa6278bce..40b9fa9fab 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java +++ b/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java @@ -57,9 +57,9 @@ class ServerDefaultCodecsImpl extends BaseDefaultCodecs implements ServerCodecCo private @Nullable Encoder getSseEncoder() { return this.sseEncoder != null ? this.sseEncoder : - jacksonPresent ? getJacksonJsonEncoder() : - jackson2Present ? getJackson2JsonEncoder() : - kotlinSerializationJsonPresent ? getKotlinSerializationJsonEncoder() : + JACKSON_PRESENT ? getJacksonJsonEncoder() : + JACKSON_2_PRESENT ? getJackson2JsonEncoder() : + KOTLIN_SERIALIZATION_JSON_PRESENT ? getKotlinSerializationJsonEncoder() : null; } diff --git a/spring-web/src/main/java/org/springframework/http/codec/xml/XmlEventDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/xml/XmlEventDecoder.java index 438f7c71d7..d766b3ee4e 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/xml/XmlEventDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/xml/XmlEventDecoder.java @@ -86,10 +86,10 @@ public class XmlEventDecoder extends AbstractDecoder { private static final XMLInputFactory inputFactory = StaxUtils.createDefensiveInputFactory(); - private static final boolean aaltoPresent = ClassUtils.isPresent( + private static final boolean AALTO_PRESENT = ClassUtils.isPresent( "com.fasterxml.aalto.AsyncXMLStreamReader", XmlEventDecoder.class.getClassLoader()); - boolean useAalto = aaltoPresent; + boolean useAalto = AALTO_PRESENT; private int maxInMemorySize = 256 * 1024; diff --git a/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java b/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java index 991cb6df90..fa5df2f40e 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java +++ b/spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java @@ -68,39 +68,39 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { abstract static class DefaultBuilder { - private static final boolean isJacksonPresent; + private static final boolean JACKSON_PRESENT; - private static final boolean isJackson2Present; + private static final boolean JACKSON_2_PRESENT; - private static final boolean isGsonPresent; + private static final boolean GSON_PRESENT; - private static final boolean isJsonbPresent; + private static final boolean JSONB_PRESENT; - private static final boolean isKotlinSerializationJsonPresent; + private static final boolean KOTLIN_SERIALIZATION_JSON_PRESENT; - private static final boolean isJacksonXmlPresent; + private static final boolean JACKSON_XML_PRESENT; - private static final boolean isJackson2XmlPresent; + private static final boolean JACKSON_2_XML_PRESENT; - private static final boolean isJaxb2Present; + private static final boolean JAXB_2_PRESENT; - private static final boolean isJacksonSmilePresent; + private static final boolean JACKSON_SMILE_PRESENT; - private static final boolean isJackson2SmilePresent; + private static final boolean JACKSON_2_SMILE_PRESENT; - private static final boolean isJacksonCborPresent; + private static final boolean JACKSON_CBOR_PRESENT; - private static final boolean isJackson2CborPresent; + private static final boolean JACKSON_2_CBOR_PRESENT; - private static final boolean isKotlinSerializationCborPresent; + private static final boolean KOTLIN_SERIALIZATION_CBOR_PRESENT; - private static final boolean isJacksonYamlPresent; + private static final boolean JACKSON_YAML_PRESENT; - private static final boolean isJackson2YamlPresent; + private static final boolean JACKSON_2_YAML_PRESENT; - private static final boolean isKotlinSerializationProtobufPresent; + private static final boolean KOTLIN_SERIALIZATION_PROTOBUF_PRESENT; - private static final boolean isRomePresent; + private static final boolean ROME_PRESENT; boolean registerDefaults; @@ -135,24 +135,24 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { static { ClassLoader classLoader = DefaultBuilder.class.getClassLoader(); - isJacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - isJackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - isGsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader); - isJsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); - isKotlinSerializationJsonPresent = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); - isJacksonSmilePresent = isJacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); - isJackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); - isJaxb2Present = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); - isJacksonXmlPresent = isJacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.xml.XmlMapper", classLoader); - isJackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader); - isJacksonCborPresent = isJacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.cbor.CBORMapper", classLoader); - isJackson2CborPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader); - isJacksonYamlPresent = isJacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.yaml.YAMLMapper", classLoader); - isJackson2YamlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", classLoader); - isKotlinSerializationCborPresent = ClassUtils.isPresent("kotlinx.serialization.cbor.Cbor", classLoader); - isKotlinSerializationProtobufPresent = ClassUtils.isPresent("kotlinx.serialization.protobuf.ProtoBuf", classLoader); - isRomePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader); + GSON_PRESENT = ClassUtils.isPresent("com.google.gson.Gson", classLoader); + JSONB_PRESENT = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); + KOTLIN_SERIALIZATION_JSON_PRESENT = ClassUtils.isPresent("kotlinx.serialization.json.Json", classLoader); + JACKSON_SMILE_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); + JACKSON_2_SMILE_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); + JAXB_2_PRESENT = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); + JACKSON_XML_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.xml.XmlMapper", classLoader); + JACKSON_2_XML_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader); + JACKSON_CBOR_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.cbor.CBORMapper", classLoader); + JACKSON_2_CBOR_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader); + JACKSON_YAML_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.yaml.YAMLMapper", classLoader); + JACKSON_2_YAML_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", classLoader); + KOTLIN_SERIALIZATION_CBOR_PRESENT = ClassUtils.isPresent("kotlinx.serialization.cbor.Cbor", classLoader); + KOTLIN_SERIALIZATION_PROTOBUF_PRESENT = ClassUtils.isPresent("kotlinx.serialization.protobuf.ProtoBuf", classLoader); + ROME_PRESENT = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader); } @@ -250,72 +250,72 @@ class DefaultHttpMessageConverters implements HttpMessageConverters { this.stringMessageConverter = new StringHttpMessageConverter(); if (this.jsonMessageConverter == null) { - if (isJacksonPresent) { + if (JACKSON_PRESENT) { this.jsonMessageConverter = new JacksonJsonHttpMessageConverter(); } - else if (isJackson2Present) { + else if (JACKSON_2_PRESENT) { this.jsonMessageConverter = new MappingJackson2HttpMessageConverter(); } - else if (isGsonPresent) { + else if (GSON_PRESENT) { this.jsonMessageConverter = new GsonHttpMessageConverter(); } - else if (isJsonbPresent) { + else if (JSONB_PRESENT) { this.jsonMessageConverter = new JsonbHttpMessageConverter(); } - else if (isKotlinSerializationJsonPresent) { + else if (KOTLIN_SERIALIZATION_JSON_PRESENT) { this.jsonMessageConverter = new KotlinSerializationJsonHttpMessageConverter(); } } if (this.xmlMessageConverter == null) { - if (isJacksonXmlPresent) { + if (JACKSON_XML_PRESENT) { this.xmlMessageConverter = new JacksonXmlHttpMessageConverter(); } - else if (isJackson2XmlPresent) { + else if (JACKSON_2_XML_PRESENT) { this.xmlMessageConverter = new MappingJackson2XmlHttpMessageConverter(); } - else if (isJaxb2Present) { + else if (JAXB_2_PRESENT) { this.xmlMessageConverter = new Jaxb2RootElementHttpMessageConverter(); } } if (this.smileMessageConverter == null) { - if (isJacksonSmilePresent) { + if (JACKSON_SMILE_PRESENT) { this.smileMessageConverter = new JacksonSmileHttpMessageConverter(); } - else if (isJackson2SmilePresent) { + else if (JACKSON_2_SMILE_PRESENT) { this.smileMessageConverter = new MappingJackson2SmileHttpMessageConverter(); } } if (this.cborMessageConverter == null) { - if (isJacksonCborPresent) { + if (JACKSON_CBOR_PRESENT) { this.cborMessageConverter = new JacksonCborHttpMessageConverter(); } - else if (isJackson2CborPresent) { + else if (JACKSON_2_CBOR_PRESENT) { this.cborMessageConverter = new MappingJackson2CborHttpMessageConverter(); } - else if (isKotlinSerializationCborPresent) { + else if (KOTLIN_SERIALIZATION_CBOR_PRESENT) { this.cborMessageConverter = new KotlinSerializationCborHttpMessageConverter(); } } if (this.yamlMessageConverter == null) { - if (isJacksonYamlPresent) { + if (JACKSON_YAML_PRESENT) { this.yamlMessageConverter = new JacksonYamlHttpMessageConverter(); } - else if (isJackson2YamlPresent) { + else if (JACKSON_2_YAML_PRESENT) { this.yamlMessageConverter = new MappingJackson2YamlHttpMessageConverter(); } } if (this.protobufMessageConverter == null) { - if (isKotlinSerializationProtobufPresent) { + if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { this.protobufMessageConverter = new KotlinSerializationProtobufHttpMessageConverter(); } } - if (isRomePresent) { + if (ROME_PRESENT) { if (this.atomMessageConverter == null) { this.atomMessageConverter = new AtomFeedHttpMessageConverter(); } diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java index 6554e3bc9e..d2285f0942 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java @@ -106,7 +106,7 @@ import org.springframework.util.xml.StaxUtils; @SuppressWarnings("removal") public class Jackson2ObjectMapperBuilder { - private static final boolean jackson2XmlPresent = ClassUtils.isPresent( + private static final boolean JACKSON_2_XML_PRESENT = ClassUtils.isPresent( "com.fasterxml.jackson.dataformat.xml.XmlMapper", Jackson2ObjectMapperBuilder.class.getClassLoader()); @@ -747,7 +747,7 @@ public class Jackson2ObjectMapperBuilder { objectMapper.setFilterProvider(this.filters); } - if (jackson2XmlPresent) { + if (JACKSON_2_XML_PRESENT) { objectMapper.addMixIn(ProblemDetail.class, ProblemDetailJacksonXmlMixin.class); } else { diff --git a/spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java index 511eae1a47..ce88dc3cf9 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java @@ -97,7 +97,8 @@ public class ProtobufHttpMessageConverter extends AbstractHttpMessageConverter, Method> methodCache = new ConcurrentReferenceHashMap<>(); @@ -129,7 +130,7 @@ public class ProtobufHttpMessageConverter extends AbstractHttpMessageConverter requestAttributesHolder = @@ -123,7 +123,7 @@ public abstract class RequestContextHolder { public static RequestAttributes currentRequestAttributes() throws IllegalStateException { RequestAttributes attributes = getRequestAttributes(); if (attributes == null) { - if (jsfPresent) { + if (JSF_PRESENT) { attributes = FacesRequestAttributesFactory.getFacesRequestAttributes(); } if (attributes == null) { diff --git a/spring-web/src/main/java/org/springframework/web/context/support/StandardServletEnvironment.java b/spring-web/src/main/java/org/springframework/web/context/support/StandardServletEnvironment.java index 0519319298..8c4b8c2af0 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/StandardServletEnvironment.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/StandardServletEnvironment.java @@ -57,7 +57,7 @@ public class StandardServletEnvironment extends StandardEnvironment implements C // Defensive reference to JNDI API for JDK 9+ (optional java.naming module) - private static final boolean jndiPresent = ClassUtils.isPresent( + private static final boolean JNDI_PRESENT = ClassUtils.isPresent( "javax.naming.InitialContext", StandardServletEnvironment.class.getClassLoader()); @@ -109,7 +109,7 @@ public class StandardServletEnvironment extends StandardEnvironment implements C protected void customizePropertySources(MutablePropertySources propertySources) { propertySources.addLast(new StubPropertySource(SERVLET_CONFIG_PROPERTY_SOURCE_NAME)); propertySources.addLast(new StubPropertySource(SERVLET_CONTEXT_PROPERTY_SOURCE_NAME)); - if (jndiPresent && JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable()) { + if (JNDI_PRESENT && JndiLocatorDelegate.isDefaultJndiEnvironmentAvailable()) { propertySources.addLast(new JndiPropertySource(JNDI_PROPERTY_SOURCE_NAME)); } super.customizePropertySources(propertySources); diff --git a/spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java b/spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java index 92bccc5de6..f3993d12fa 100644 --- a/spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java +++ b/spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java @@ -65,7 +65,7 @@ import org.springframework.web.context.request.WebRequest; */ public abstract class WebApplicationContextUtils { - private static final boolean jsfPresent = + private static final boolean JSF_PRESENT = ClassUtils.isPresent("jakarta.faces.context.FacesContext", RequestContextHolder.class.getClassLoader()); @@ -193,7 +193,7 @@ public abstract class WebApplicationContextUtils { beanFactory.registerResolvableDependency(ServletResponse.class, new ResponseObjectFactory()); beanFactory.registerResolvableDependency(HttpSession.class, new SessionObjectFactory()); beanFactory.registerResolvableDependency(WebRequest.class, new WebRequestObjectFactory()); - if (jsfPresent) { + if (JSF_PRESENT) { FacesDependencyRegistrar.registerFacesDependencies(beanFactory); } } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/config/ResourceChainRegistration.java b/spring-webflux/src/main/java/org/springframework/web/reactive/config/ResourceChainRegistration.java index 5a5a9565da..1288856a75 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/config/ResourceChainRegistration.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/config/ResourceChainRegistration.java @@ -44,7 +44,7 @@ public class ResourceChainRegistration { private static final String DEFAULT_CACHE_NAME = "spring-resource-chain-cache"; - private static final boolean webJarsPresent = ClassUtils.isPresent( + private static final boolean WEB_JARS_PRESENT = ClassUtils.isPresent( "org.webjars.WebJarVersionLocator", ResourceChainRegistration.class.getClassLoader()); @@ -113,7 +113,7 @@ public class ResourceChainRegistration { protected List getResourceResolvers() { if (!this.hasPathResolver) { List result = new ArrayList<>(this.resolvers); - if (webJarsPresent && !this.hasWebjarsResolver) { + if (WEB_JARS_PRESENT && !this.hasWebjarsResolver) { result.add(new LiteWebJarsResourceResolver()); } result.add(new PathResourceResolver()); 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 21bdef7e00..19a8375b17 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 @@ -88,7 +88,7 @@ import org.springframework.web.server.i18n.LocaleContextResolver; */ public class WebFluxConfigurationSupport implements ApplicationContextAware { - private static final boolean jakartaValidatorPresent = + private static final boolean BEAN_VALIDATION_PRESENT = ClassUtils.isPresent("jakarta.validation.Validator", WebFluxConfigurationSupport.class.getClassLoader()); @@ -429,7 +429,7 @@ public class WebFluxConfigurationSupport implements ApplicationContextAware { public Validator webFluxValidator() { Validator validator = getValidator(); if (validator == null) { - if (jakartaValidatorPresent) { + if (BEAN_VALIDATION_PRESENT) { try { validator = new OptionalValidatorFactoryBean(); } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java index c1b909171d..c6889d6f0b 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java @@ -55,17 +55,17 @@ import org.springframework.web.util.UriBuilderFactory; */ final class DefaultWebClientBuilder implements WebClient.Builder { - private static final boolean reactorNettyClientPresent; + private static final boolean REACTOR_NETTY_CLIENT_PRESENT; - private static final boolean jettyClientPresent; + private static final boolean JETTY_CLIENT_PRESENT; - private static final boolean httpComponentsClientPresent; + private static final boolean HTTP_COMPONENTS_CLIENT_PRESENT; static { ClassLoader loader = DefaultWebClientBuilder.class.getClassLoader(); - reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); - jettyClientPresent = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); - httpComponentsClientPresent = + REACTOR_NETTY_CLIENT_PRESENT = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); + JETTY_CLIENT_PRESENT = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); + HTTP_COMPONENTS_CLIENT_PRESENT = ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) && ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader); } @@ -325,13 +325,13 @@ final class DefaultWebClientBuilder implements WebClient.Builder { } private ClientHttpConnector initConnector() { - if (reactorNettyClientPresent) { + if (REACTOR_NETTY_CLIENT_PRESENT) { return new ReactorClientHttpConnector(); } - else if (jettyClientPresent) { + else if (JETTY_CLIENT_PRESENT) { return new JettyClientHttpConnector(); } - else if (httpComponentsClientPresent) { + else if (HTTP_COMPONENTS_CLIENT_PRESENT) { return new HttpComponentsClientHttpConnector(); } else { diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java index f5eeaf2d1f..b9da1e4d02 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java @@ -74,19 +74,19 @@ public class HandshakeWebSocketService implements WebSocketService, Lifecycle { private static final Mono> EMPTY_ATTRIBUTES = Mono.just(Collections.emptyMap()); - private static final boolean jettyWsPresent; + private static final boolean JETTY_WS_PRESENT; - private static final boolean jettyCoreWsPresent; + private static final boolean JETTY_CORE_WS_PRESENT; - private static final boolean reactorNettyPresent; + private static final boolean REACTOR_NETTY_PRESENT; static { ClassLoader classLoader = HandshakeWebSocketService.class.getClassLoader(); - jettyWsPresent = ClassUtils.isPresent( + JETTY_WS_PRESENT = ClassUtils.isPresent( "org.eclipse.jetty.ee11.websocket.server.JettyWebSocketServerContainer", classLoader); - jettyCoreWsPresent = ClassUtils.isPresent( + JETTY_CORE_WS_PRESENT = ClassUtils.isPresent( "org.eclipse.jetty.websocket.server.ServerWebSocketContainer", classLoader); - reactorNettyPresent = ClassUtils.isPresent( + REACTOR_NETTY_PRESENT = ClassUtils.isPresent( "reactor.netty.http.server.HttpServerResponse", classLoader); } @@ -265,13 +265,13 @@ public class HandshakeWebSocketService implements WebSocketService, Lifecycle { static RequestUpgradeStrategy initUpgradeStrategy() { - if (jettyWsPresent) { + if (JETTY_WS_PRESENT) { return new JettyRequestUpgradeStrategy(); } - else if (jettyCoreWsPresent) { + else if (JETTY_CORE_WS_PRESENT) { return new JettyCoreRequestUpgradeStrategy(); } - else if (reactorNettyPresent) { + else if (REACTOR_NETTY_PRESENT) { return new ReactorNettyRequestUpgradeStrategy(); } else { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java index 409cad5e07..423990afd7 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java @@ -168,51 +168,51 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { public static final String CONTENT_NEGOTIATION_MANAGER_BEAN_NAME = "mvcContentNegotiationManager"; - private static final boolean javaxValidationPresent; + private static final boolean BEAN_VALIDATION_PRESENT; - private static final boolean romePresent; + private static final boolean ROME_PRESENT; - private static final boolean jaxb2Present; + private static final boolean JAXB_2_PRESENT; - private static final boolean jacksonPresent; + private static final boolean JACKSON_PRESENT; - private static final boolean jackson2Present; + private static final boolean JACKSON_2_PRESENT; - private static final boolean jacksonXmlPresent; + private static final boolean JACKSON_XML_PRESENT; - private static final boolean jackson2XmlPresent; + private static final boolean JACKSON_2_XML_PRESENT; - private static final boolean jacksonSmilePresent; + private static final boolean JACKSON_SMILE_PRESENT; - private static final boolean jackson2SmilePresent; + private static final boolean JACKSON_2_SMILE_PRESENT; - private static final boolean jacksonCborPresent; + private static final boolean JACKSON_CBOR_PRESENT; - private static final boolean jackson2CborPresent; + private static final boolean JACKSON_2_CBOR_PRESENT; - private static final boolean jacksonYamlPresent; + private static final boolean JACKSON_YAML_PRESENT; - private static final boolean jackson2YamlPresent; + private static final boolean JACKSON_2_YAML_PRESENT; - private static final boolean gsonPresent; + private static final boolean GSON_PRESENT; static { ClassLoader classLoader = AnnotationDrivenBeanDefinitionParser.class.getClassLoader(); - javaxValidationPresent = ClassUtils.isPresent("jakarta.validation.Validator", classLoader); - romePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader); - jaxb2Present = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); - jacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + BEAN_VALIDATION_PRESENT = ClassUtils.isPresent("jakarta.validation.Validator", classLoader); + ROME_PRESENT = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader); + JAXB_2_PRESENT = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader); + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - jacksonXmlPresent = jacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.xml.XmlMapper", classLoader); - jackson2XmlPresent = jackson2Present && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader); - jacksonSmilePresent = jacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); - jackson2SmilePresent = jackson2Present && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); - jacksonCborPresent = jacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.cbor.CBORMapper", classLoader); - jackson2CborPresent = jackson2Present && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader); - jacksonYamlPresent = jacksonPresent && ClassUtils.isPresent("tools.jackson.dataformat.yaml.YAMLMapper", classLoader); - jackson2YamlPresent = jackson2Present && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", classLoader); - gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader); + JACKSON_XML_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.xml.XmlMapper", classLoader); + JACKSON_2_XML_PRESENT = JACKSON_2_PRESENT && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader); + JACKSON_SMILE_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.smile.SmileMapper", classLoader); + JACKSON_2_SMILE_PRESENT = JACKSON_2_PRESENT && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader); + JACKSON_CBOR_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.cbor.CBORMapper", classLoader); + JACKSON_2_CBOR_PRESENT = JACKSON_2_PRESENT && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader); + JACKSON_YAML_PRESENT = JACKSON_PRESENT && ClassUtils.isPresent("tools.jackson.dataformat.yaml.YAMLMapper", classLoader); + JACKSON_2_YAML_PRESENT = JACKSON_2_PRESENT && ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", classLoader); + GSON_PRESENT = ClassUtils.isPresent("com.google.gson.Gson", classLoader); } @@ -354,14 +354,14 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { } protected void addRequestBodyAdvice(RootBeanDefinition beanDef) { - if (jackson2Present) { + if (JACKSON_2_PRESENT) { beanDef.getPropertyValues().add("requestBodyAdvice", new RootBeanDefinition(JsonViewRequestBodyAdvice.class)); } } protected void addResponseBodyAdvice(RootBeanDefinition beanDef) { - if (jackson2Present) { + if (JACKSON_2_PRESENT) { beanDef.getPropertyValues().add("responseBodyAdvice", new RootBeanDefinition(JsonViewResponseBodyAdvice.class)); } @@ -387,7 +387,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { if (element.hasAttribute("validator")) { return new RuntimeBeanReference(element.getAttribute("validator")); } - else if (javaxValidationPresent) { + else if (BEAN_VALIDATION_PRESENT) { RootBeanDefinition validatorDef = new RootBeanDefinition( "org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean"); validatorDef.setSource(source); @@ -463,23 +463,23 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { private Properties getDefaultMediaTypes() { Properties defaultMediaTypes = new Properties(); - if (romePresent) { + if (ROME_PRESENT) { defaultMediaTypes.put("atom", MediaType.APPLICATION_ATOM_XML_VALUE); defaultMediaTypes.put("rss", MediaType.APPLICATION_RSS_XML_VALUE); } - if (jaxb2Present || jacksonXmlPresent || jackson2XmlPresent) { + if (JAXB_2_PRESENT || JACKSON_XML_PRESENT || JACKSON_2_XML_PRESENT) { defaultMediaTypes.put("xml", MediaType.APPLICATION_XML_VALUE); } - if (jacksonPresent || jackson2Present || gsonPresent) { + if (JACKSON_PRESENT || JACKSON_2_PRESENT || GSON_PRESENT) { defaultMediaTypes.put("json", MediaType.APPLICATION_JSON_VALUE); } - if (jacksonSmilePresent || jackson2SmilePresent) { + if (JACKSON_SMILE_PRESENT || JACKSON_2_SMILE_PRESENT) { defaultMediaTypes.put("smile", "application/x-jackson-smile"); } - if (jacksonCborPresent || jackson2CborPresent) { + if (JACKSON_CBOR_PRESENT || JACKSON_2_CBOR_PRESENT) { defaultMediaTypes.put("cbor", MediaType.APPLICATION_CBOR_VALUE); } - if (jacksonYamlPresent || jackson2YamlPresent) { + if (JACKSON_YAML_PRESENT || JACKSON_2_YAML_PRESENT) { defaultMediaTypes.put("yaml", MediaType.APPLICATION_YAML_VALUE); } return defaultMediaTypes; @@ -585,15 +585,15 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { messageConverters.add(createConverterDefinition(ResourceRegionHttpMessageConverter.class, source)); messageConverters.add(createConverterDefinition(AllEncompassingFormHttpMessageConverter.class, source)); - if (romePresent) { + if (ROME_PRESENT) { messageConverters.add(createConverterDefinition(AtomFeedHttpMessageConverter.class, source)); messageConverters.add(createConverterDefinition(RssChannelHttpMessageConverter.class, source)); } - if (jacksonXmlPresent) { + if (JACKSON_XML_PRESENT) { messageConverters.add(createConverterDefinition(JacksonXmlHttpMessageConverter.class, source)); } - else if (jackson2XmlPresent) { + else if (JACKSON_2_XML_PRESENT) { Class type = MappingJackson2XmlHttpMessageConverter.class; RootBeanDefinition jacksonConverterDef = createConverterDefinition(type, source); GenericBeanDefinition jacksonFactoryDef = createObjectMapperFactoryDefinition(source); @@ -601,28 +601,28 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { jacksonConverterDef.getConstructorArgumentValues().addIndexedArgumentValue(0, jacksonFactoryDef); messageConverters.add(jacksonConverterDef); } - else if (jaxb2Present) { + else if (JAXB_2_PRESENT) { messageConverters.add(createConverterDefinition(Jaxb2RootElementHttpMessageConverter.class, source)); } - if (jacksonPresent) { + if (JACKSON_PRESENT) { messageConverters.add(createConverterDefinition(JacksonJsonHttpMessageConverter.class, source)); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { Class type = MappingJackson2HttpMessageConverter.class; RootBeanDefinition jacksonConverterDef = createConverterDefinition(type, source); GenericBeanDefinition jacksonFactoryDef = createObjectMapperFactoryDefinition(source); jacksonConverterDef.getConstructorArgumentValues().addIndexedArgumentValue(0, jacksonFactoryDef); messageConverters.add(jacksonConverterDef); } - else if (gsonPresent) { + else if (GSON_PRESENT) { messageConverters.add(createConverterDefinition(GsonHttpMessageConverter.class, source)); } - if (jacksonSmilePresent) { + if (JACKSON_SMILE_PRESENT) { messageConverters.add(createConverterDefinition(JacksonSmileHttpMessageConverter.class, source)); } - else if (jackson2SmilePresent) { + else if (JACKSON_2_SMILE_PRESENT) { Class type = MappingJackson2SmileHttpMessageConverter.class; RootBeanDefinition jacksonConverterDef = createConverterDefinition(type, source); GenericBeanDefinition jacksonFactoryDef = createObjectMapperFactoryDefinition(source); @@ -631,10 +631,10 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { messageConverters.add(jacksonConverterDef); } - if (jacksonCborPresent) { + if (JACKSON_CBOR_PRESENT) { messageConverters.add(createConverterDefinition(JacksonCborHttpMessageConverter.class, source)); } - else if (jackson2CborPresent) { + else if (JACKSON_2_CBOR_PRESENT) { Class type = MappingJackson2CborHttpMessageConverter.class; RootBeanDefinition jacksonConverterDef = createConverterDefinition(type, source); GenericBeanDefinition jacksonFactoryDef = createObjectMapperFactoryDefinition(source); @@ -643,10 +643,10 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { messageConverters.add(jacksonConverterDef); } - if (jacksonYamlPresent) { + if (JACKSON_YAML_PRESENT) { messageConverters.add(createConverterDefinition(JacksonYamlHttpMessageConverter.class, source)); } - else if (jackson2YamlPresent) { + else if (JACKSON_2_YAML_PRESENT) { Class type = MappingJackson2YamlHttpMessageConverter.class; RootBeanDefinition jacksonConverterDef = createConverterDefinition(type, source); GenericBeanDefinition jacksonFactoryDef = createObjectMapperFactoryDefinition(source); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java index 3aec937380..6c34ef79db 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java @@ -81,7 +81,7 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser { private static final String RESOURCE_URL_PROVIDER = "mvcResourceUrlProvider"; - private static final boolean webJarsPresent = ClassUtils.isPresent( + private static final boolean WEB_JARS_PRESENT = ClassUtils.isPresent( "org.webjars.WebJarVersionLocator", ResourcesBeanDefinitionParser.class.getClassLoader()); @@ -325,7 +325,7 @@ class ResourcesBeanDefinitionParser implements BeanDefinitionParser { } if (isAutoRegistration) { - if (webJarsPresent) { + if (WEB_JARS_PRESENT) { RootBeanDefinition webJarsResolverDef = new RootBeanDefinition(LiteWebJarsResourceResolver.class); webJarsResolverDef.setSource(source); webJarsResolverDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceChainRegistration.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceChainRegistration.java index ebc39218b6..f0eae93705 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceChainRegistration.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceChainRegistration.java @@ -44,7 +44,7 @@ public class ResourceChainRegistration { private static final String DEFAULT_CACHE_NAME = "spring-resource-chain-cache"; - private static final boolean webJarsPresent = ClassUtils.isPresent( + private static final boolean WEB_JARS_PRESENT = ClassUtils.isPresent( "org.webjars.WebJarVersionLocator", ResourceChainRegistration.class.getClassLoader()); @@ -113,7 +113,7 @@ public class ResourceChainRegistration { protected List getResourceResolvers() { if (!this.hasPathResolver) { List result = new ArrayList<>(this.resolvers); - if (webJarsPresent && !this.hasWebjarsResolver) { + if (WEB_JARS_PRESENT && !this.hasWebjarsResolver) { result.add(new LiteWebJarsResourceResolver()); } result.add(new PathResourceResolver()); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java index 98ab957ba7..e6c3d3ce9a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java @@ -180,19 +180,19 @@ import org.springframework.web.util.pattern.PathPatternParser; */ public class WebMvcConfigurationSupport implements ApplicationContextAware, ServletContextAware { - private static final boolean jacksonPresent; + private static final boolean JACKSON_PRESENT; - private static final boolean jackson2Present; + private static final boolean JACKSON_2_PRESENT; - private static final boolean kotlinSerializationPresent; + private static final boolean KOTLIN_SERIALIZATION_PRESENT; static { ClassLoader classLoader = WebMvcConfigurationSupport.class.getClassLoader(); - jacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - kotlinSerializationPresent = ClassUtils.isPresent("kotlinx.serialization.Serializable", classLoader); + KOTLIN_SERIALIZATION_PRESENT = ClassUtils.isPresent("kotlinx.serialization.Serializable", classLoader); } @@ -652,14 +652,14 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv adapter.setCustomReturnValueHandlers(getReturnValueHandlers()); adapter.setErrorResponseInterceptors(getErrorResponseInterceptors()); - if (jacksonPresent || jackson2Present || kotlinSerializationPresent) { + if (JACKSON_PRESENT || JACKSON_2_PRESENT || KOTLIN_SERIALIZATION_PRESENT) { List requestBodyAdvices = new ArrayList<>(2); List> responseBodyAdvices = new ArrayList<>(2); - if (jacksonPresent || jackson2Present) { + if (JACKSON_PRESENT || JACKSON_2_PRESENT) { requestBodyAdvices.add(new JsonViewRequestBodyAdvice()); responseBodyAdvices.add(new JsonViewResponseBodyAdvice()); } - if (kotlinSerializationPresent) { + if (KOTLIN_SERIALIZATION_PRESENT) { requestBodyAdvices.add(new KotlinRequestBodyAdvice()); responseBodyAdvices.add(new KotlinResponseBodyAdvice()); } @@ -1032,12 +1032,12 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv exceptionHandlerResolver.setCustomArgumentResolvers(getArgumentResolvers()); exceptionHandlerResolver.setCustomReturnValueHandlers(getReturnValueHandlers()); exceptionHandlerResolver.setErrorResponseInterceptors(getErrorResponseInterceptors()); - if (jacksonPresent || jackson2Present || kotlinSerializationPresent) { + if (JACKSON_PRESENT || JACKSON_2_PRESENT || KOTLIN_SERIALIZATION_PRESENT) { List> responseBodyAdvices = new ArrayList<>(2); - if (jacksonPresent || jackson2Present) { + if (JACKSON_PRESENT || JACKSON_2_PRESENT) { responseBodyAdvices.add(new JsonViewResponseBodyAdvice()); } - if (kotlinSerializationPresent) { + if (KOTLIN_SERIALIZATION_PRESENT) { responseBodyAdvices.add(new KotlinResponseBodyAdvice()); } exceptionHandlerResolver.setResponseBodyAdvice(responseBodyAdvices); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/AsyncServerResponse.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/AsyncServerResponse.java index 3580a39896..293d674e68 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/AsyncServerResponse.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/AsyncServerResponse.java @@ -100,7 +100,7 @@ public interface AsyncServerResponse extends ServerResponse { if (obj instanceof CompletableFuture futureResponse) { return (CompletableFuture) futureResponse; } - else if (DefaultAsyncServerResponse.reactiveStreamsPresent) { + else if (DefaultAsyncServerResponse.REACTIVE_STREAMS_PRESENT) { ReactiveAdapterRegistry registry = ReactiveAdapterRegistry.getSharedInstance(); ReactiveAdapter publisherAdapter = registry.getAdapter(obj.getClass()); if (publisherAdapter != null) { 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 e869eaa742..065745bec9 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 @@ -49,7 +49,7 @@ import org.springframework.web.servlet.ModelAndView; */ final class DefaultAsyncServerResponse extends ErrorHandlingServerResponse implements AsyncServerResponse { - static final boolean reactiveStreamsPresent = ClassUtils.isPresent( + static final boolean REACTIVE_STREAMS_PRESENT = ClassUtils.isPresent( "org.reactivestreams.Publisher", DefaultAsyncServerResponse.class.getClassLoader()); private final CompletableFuture futureResponse; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilder.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilder.java index 7a66dbb3b9..0d5bd92fc8 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilder.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilder.java @@ -211,7 +211,7 @@ final class DefaultEntityResponseBuilder implements EntityResponse.Builder return new CompletionStageEntityResponse(this.status, this.headers, this.cookies, completionStage, this.entityType); } - else if (DefaultAsyncServerResponse.reactiveStreamsPresent) { + else if (DefaultAsyncServerResponse.REACTIVE_STREAMS_PRESENT) { ReactiveAdapter adapter = ReactiveAdapterRegistry.getSharedInstance().getAdapter(this.entity.getClass()); if (adapter != null) { Publisher publisher = adapter.toPublisher(this.entity); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java index d6135ce98d..856b88a55c 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java @@ -83,7 +83,7 @@ class ReactiveTypeHandler { private static final MediaType APPLICATION_GRPC = MediaType.valueOf("application/grpc"); - private static final boolean isContextPropagationPresent = ClassUtils.isPresent( + private static final boolean CONTEXT_PROPAGATION_PRESENT = ClassUtils.isPresent( "io.micrometer.context.ContextSnapshot", ReactiveTypeHandler.class.getClassLoader()); private static final Log logger = LogFactory.getLog(ReactiveTypeHandler.class); @@ -116,7 +116,7 @@ class ReactiveTypeHandler { } private static @Nullable Object initContextSnapshotHelper(@Nullable Object snapshotFactory) { - if (isContextPropagationPresent) { + if (CONTEXT_PROPAGATION_PRESENT) { return new ContextSnapshotHelper((ContextSnapshotFactory) snapshotFactory); } return null; @@ -147,7 +147,7 @@ class ReactiveTypeHandler { Assert.state(adapter != null, () -> "Unexpected return value type: " + clazz); TaskDecorator taskDecorator = null; - if (isContextPropagationPresent) { + if (CONTEXT_PROPAGATION_PRESENT) { ContextSnapshotHelper helper = (ContextSnapshotHelper) this.contextSnapshotHelper; Assert.notNull(helper, "No ContextSnapshotHelper"); returnValue = helper.writeReactorContext(returnValue); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/JspAwareRequestContext.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/JspAwareRequestContext.java index a062c24090..05aee8ee89 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/JspAwareRequestContext.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/JspAwareRequestContext.java @@ -80,7 +80,7 @@ public class JspAwareRequestContext extends RequestContext { */ @Override protected Locale getFallbackLocale() { - if (jstlPresent) { + if (JSTL_PRESENT) { Locale locale = JstlPageLocaleResolver.getJstlLocale(getPageContext()); if (locale != null) { return locale; @@ -95,7 +95,7 @@ public class JspAwareRequestContext extends RequestContext { */ @Override protected @Nullable TimeZone getFallbackTimeZone() { - if (jstlPresent) { + if (JSTL_PRESENT) { TimeZone timeZone = JstlPageLocaleResolver.getJstlTimeZone(getPageContext()); if (timeZone != null) { return timeZone; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/RequestContext.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/RequestContext.java index cbfaa5d962..e8e7eaf27e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/RequestContext.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/RequestContext.java @@ -82,7 +82,7 @@ public class RequestContext { public static final String WEB_APPLICATION_CONTEXT_ATTRIBUTE = RequestContext.class.getName() + ".CONTEXT"; - protected static final boolean jstlPresent = ClassUtils.isPresent( + protected static final boolean JSTL_PRESENT = ClassUtils.isPresent( "jakarta.servlet.jsp.jstl.core.Config", RequestContext.class.getClassLoader()); private final HttpServletRequest request; @@ -305,7 +305,7 @@ public class RequestContext { * @see jakarta.servlet.http.HttpServletRequest#getLocale() */ protected Locale getFallbackLocale() { - if (jstlPresent) { + if (JSTL_PRESENT) { Locale locale = JstlLocaleResolver.getJstlLocale(getRequest(), getServletContext()); if (locale != null) { return locale; @@ -321,7 +321,7 @@ public class RequestContext { * @return the fallback time zone (or {@code null} if none derivable from the request) */ protected @Nullable TimeZone getFallbackTimeZone() { - if (jstlPresent) { + if (JSTL_PRESENT) { TimeZone timeZone = JstlLocaleResolver.getJstlTimeZone(getRequest(), getServletContext()); if (timeZone != null) { return timeZone; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceViewResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceViewResolver.java index a49ed8b71d..6e931ad679 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceViewResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/InternalResourceViewResolver.java @@ -49,7 +49,7 @@ import org.springframework.util.ClassUtils; */ public class InternalResourceViewResolver extends UrlBasedViewResolver { - private static final boolean jstlPresent = ClassUtils.isPresent( + private static final boolean JSTL_PRESENT = ClassUtils.isPresent( "jakarta.servlet.jsp.jstl.core.Config", InternalResourceViewResolver.class.getClassLoader()); private @Nullable Boolean alwaysInclude; @@ -62,7 +62,7 @@ public class InternalResourceViewResolver extends UrlBasedViewResolver { */ public InternalResourceViewResolver() { Class viewClass = requiredViewClass(); - if (InternalResourceView.class == viewClass && jstlPresent) { + if (InternalResourceView.class == viewClass && JSTL_PRESENT) { viewClass = JstlView.class; } setViewClass(viewClass); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java index 396de0e243..3825dbf2d5 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java @@ -116,24 +116,24 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { private static final int DEFAULT_MAPPING_ORDER = 1; - private static final boolean jacksonPresent; + private static final boolean JACKSON_PRESENT; - private static final boolean jackson2Present; + private static final boolean JACKSON_2_PRESENT; - private static final boolean gsonPresent; + private static final boolean GSON_PRESENT; - private static final boolean jsonbPresent; + private static final boolean JSONB_PRESENT; - private static final boolean javaxValidationPresent; + private static final boolean BEAN_VALIDATION_PRESENT; static { ClassLoader classLoader = MessageBrokerBeanDefinitionParser.class.getClassLoader(); - jacksonPresent = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); - jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && + JACKSON_PRESENT = ClassUtils.isPresent("tools.jackson.databind.ObjectMapper", classLoader); + JACKSON_2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader); - gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader); - jsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); - javaxValidationPresent = ClassUtils.isPresent("jakarta.validation.Validator", classLoader); + GSON_PRESENT = ClassUtils.isPresent("com.google.gson.Gson", classLoader); + JSONB_PRESENT = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader); + BEAN_VALIDATION_PRESENT = ClassUtils.isPresent("jakarta.validation.Validator", classLoader); } @@ -510,14 +510,14 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { converters.setSource(source); converters.add(new RootBeanDefinition(StringMessageConverter.class)); converters.add(new RootBeanDefinition(ByteArrayMessageConverter.class)); - if (jacksonPresent) { + if (JACKSON_PRESENT) { RootBeanDefinition jacksonConverterDef = new RootBeanDefinition(JacksonJsonMessageConverter.class); RootBeanDefinition resolverDef = new RootBeanDefinition(DefaultContentTypeResolver.class); resolverDef.getPropertyValues().add("defaultMimeType", MimeTypeUtils.APPLICATION_JSON); jacksonConverterDef.getPropertyValues().add("contentTypeResolver", resolverDef); converters.add(jacksonConverterDef); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { RootBeanDefinition jacksonConverterDef = new RootBeanDefinition(MappingJackson2MessageConverter.class); RootBeanDefinition resolverDef = new RootBeanDefinition(DefaultContentTypeResolver.class); resolverDef.getPropertyValues().add("defaultMimeType", MimeTypeUtils.APPLICATION_JSON); @@ -530,10 +530,10 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { jacksonConverterDef.getPropertyValues().add("objectMapper", jacksonFactoryDef); converters.add(jacksonConverterDef); } - else if (gsonPresent) { + else if (GSON_PRESENT) { converters.add(new RootBeanDefinition(GsonMessageConverter.class)); } - else if (jsonbPresent) { + else if (JSONB_PRESENT) { converters.add(new RootBeanDefinition(JsonbMessageConverter.class)); } } @@ -605,7 +605,7 @@ class MessageBrokerBeanDefinitionParser implements BeanDefinitionParser { if (messageBrokerElement.hasAttribute("validator")) { return new RuntimeBeanReference(messageBrokerElement.getAttribute("validator")); } - else if (javaxValidationPresent) { + else if (BEAN_VALIDATION_PRESENT) { RootBeanDefinition validatorDef = new RootBeanDefinition( "org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean"); validatorDef.setSource(source); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceHandler.java index e356bf95af..4c196db197 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceHandler.java @@ -28,14 +28,14 @@ import org.springframework.util.ClassUtils; */ public class WebSocketNamespaceHandler extends NamespaceHandlerSupport { - private static final boolean isSpringMessagingPresent = ClassUtils.isPresent( + private static final boolean SPRING_MESSAGING_PRESENT = ClassUtils.isPresent( "org.springframework.messaging.Message", WebSocketNamespaceHandler.class.getClassLoader()); @Override public void init() { registerBeanDefinitionParser("handlers", new HandlersBeanDefinitionParser()); - if (isSpringMessagingPresent) { + if (SPRING_MESSAGING_PRESENT) { registerBeanDefinitionParser("message-broker", new MessageBrokerBeanDefinitionParser()); } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/server/support/DefaultHandshakeHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/server/support/DefaultHandshakeHandler.java index 4256123dbb..a9e56afe30 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/server/support/DefaultHandshakeHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/server/support/DefaultHandshakeHandler.java @@ -36,13 +36,13 @@ import org.springframework.web.socket.server.standard.StandardWebSocketUpgradeSt */ public class DefaultHandshakeHandler extends AbstractHandshakeHandler implements ServletContextAware { - private static final boolean jettyWsPresent = ClassUtils.isPresent( + private static final boolean JETTY_WS_PRESENT = ClassUtils.isPresent( "org.eclipse.jetty.ee11.websocket.server.JettyWebSocketServerContainer", DefaultHandshakeHandler.class.getClassLoader()); public DefaultHandshakeHandler() { - super(jettyWsPresent ? new JettyRequestUpgradeStrategy() : new StandardWebSocketUpgradeStrategy()); + super(JETTY_WS_PRESENT ? new JettyRequestUpgradeStrategy() : new StandardWebSocketUpgradeStrategy()); } public DefaultHandshakeHandler(RequestUpgradeStrategy requestUpgradeStrategy) { diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java index fc061d51d6..035b77b52c 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/SockJsClient.java @@ -63,10 +63,10 @@ import org.springframework.web.util.UriComponentsBuilder; */ public class SockJsClient implements WebSocketClient, Lifecycle { - private static final boolean jacksonPresent = ClassUtils.isPresent( + private static final boolean JACKSON_PRESENT = ClassUtils.isPresent( "tools.jackson.databind.ObjectMapper", SockJsClient.class.getClassLoader()); - private static final boolean jackson2Present = ClassUtils.isPresent( + private static final boolean JACKSON_2_PRESENT = ClassUtils.isPresent( "com.fasterxml.jackson.databind.ObjectMapper", SockJsClient.class.getClassLoader()); private static final Log logger = LogFactory.getLog(SockJsClient.class); @@ -102,10 +102,10 @@ public class SockJsClient implements WebSocketClient, Lifecycle { Assert.notEmpty(transports, "No transports provided"); this.transports = new ArrayList<>(transports); this.infoReceiver = initInfoReceiver(transports); - if (jacksonPresent) { + if (JACKSON_PRESENT) { this.messageCodec = new JacksonJsonSockJsMessageCodec(); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { this.messageCodec = new Jackson2SockJsMessageCodec(); } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java index bc145b049d..70fb9e81d2 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java @@ -71,10 +71,10 @@ import org.springframework.web.socket.sockjs.support.AbstractSockJsService; */ public class TransportHandlingSockJsService extends AbstractSockJsService implements SockJsServiceConfig, Lifecycle { - private static final boolean jacksonPresent = ClassUtils.isPresent( + private static final boolean JACKSON_PRESENT = ClassUtils.isPresent( "tools.jackson.databind.ObjectMapper", TransportHandlingSockJsService.class.getClassLoader()); - private static final boolean jackson2Present = ClassUtils.isPresent( + private static final boolean JACKSON_2_PRESENT = ClassUtils.isPresent( "com.fasterxml.jackson.databind.ObjectMapper", TransportHandlingSockJsService.class.getClassLoader()); @@ -123,10 +123,10 @@ public class TransportHandlingSockJsService extends AbstractSockJsService implem } } - if (jacksonPresent) { + if (JACKSON_PRESENT) { this.messageCodec = new JacksonJsonSockJsMessageCodec(); } - else if (jackson2Present) { + else if (JACKSON_2_PRESENT) { this.messageCodec = new Jackson2SockJsMessageCodec(); } }