diff --git a/.github/dco.yml b/.github/dco.yml new file mode 100644 index 00000000..37e411e1 --- /dev/null +++ b/.github/dco.yml @@ -0,0 +1,2 @@ +require: + members: false \ No newline at end of file diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 7979a5c5..9d5357d8 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -31,7 +31,7 @@ jobs: - name: Build with Maven run: ./mvnw -s .settings.xml clean org.jacoco:jacoco-maven-plugin:prepare-agent install -U -P sonar -nsu --batch-mode -Dmaven.test.redirectTestOutputToFile=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn - name: Publish Test Report - uses: mikepenz/action-junit-report@v4 + uses: mikepenz/action-junit-report@v5 if: always() # always run even if the previous step fails with: report_paths: '**/surefire-reports/TEST-*.xml' diff --git a/docs/antora.yml b/docs/antora.yml index ab1a8894..59ebef94 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -6,7 +6,7 @@ nav: ext: collector: run: - command: ./mvnw --no-transfer-progress -B process-resources -Pdocs -pl docs -Dantora-maven-plugin.phase=none -Dgenerate-docs.phase=none -Dgenerate-readme.phase=none -Dgenerate-cloud-resources.phase=none -Dmaven-dependency-plugin-for-docs.phase=none -Dmaven-dependency-plugin-for-docs-classes.phase=none -DskipTests + command: ./mvnw --no-transfer-progress -B process-resources -Pdocs -pl docs -Dantora-maven-plugin.phase=none -Dgenerate-docs.phase=none -Dgenerate-readme.phase=none -Dgenerate-cloud-resources.phase=none -Dmaven-dependency-plugin-for-docs.phase=none -Dmaven-dependency-plugin-for-docs-classes.phase=none -DskipTests -DdisableConfigurationProperties local: true scan: dir: ./target/classes/antora-resources/ diff --git a/docs/modules/ROOT/pages/spring-cloud-circuitbreaker.adoc b/docs/modules/ROOT/pages/spring-cloud-circuitbreaker.adoc index 7cf6e3cb..0c44db69 100755 --- a/docs/modules/ROOT/pages/spring-cloud-circuitbreaker.adoc +++ b/docs/modules/ROOT/pages/spring-cloud-circuitbreaker.adoc @@ -85,9 +85,9 @@ The `Customizer` interface has a single method (called `customize`) that takes t For detailed information on how to customize a given implementation see the following documentation: -* link:../../../../spring-cloud-circuitbreaker/current/reference/html/spring-cloud-circuitbreaker.html#configuring-resilience4j-circuit-breakers[Resilience4J] +* link:../../../../spring-cloud-circuitbreaker/reference/spring-cloud-circuitbreaker-resilience4j.html[Resilience4J] * link:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc/circuitbreaker-sentinel.adoc#circuit-breaker-spring-cloud-circuit-breaker-with-sentinel--configuring-sentinel-circuit-breakers[Sentinel] -* link:../../../../../spring-cloud-circuitbreaker/docs/current/reference/html/spring-cloud-circuitbreaker.html#configuring-spring-retry-circuit-breakers[Spring Retry] +* link:../../../../../spring-cloud-circuitbreaker/reference/spring-cloud-circuitbreaker-spring-retry.html[Spring Retry] Some `CircuitBreaker` implementations such as `Resilience4JCircuitBreaker` call `customize` method every time `CircuitBreaker#run` is called. It can be inefficient. In that case, you can use `CircuitBreaker#once` method. It is useful where calling `customize` many times doesn't make sense, diff --git a/docs/package.json b/docs/package.json index 1c8155de..45cdd10b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,10 +1,10 @@ { - "dependencies": { - "antora": "3.2.0-alpha.6", - "@antora/atlas-extension": "1.0.0-alpha.2", - "@antora/collector-extension": "1.0.0-beta.3", - "@asciidoctor/tabs": "1.0.0-beta.6", - "@springio/antora-extensions": "1.14.2", - "@springio/asciidoctor-extensions": "1.0.0-alpha.14" - } + "dependencies": { + "antora": "3.2.0-alpha.8", + "@antora/atlas-extension": "1.0.0-alpha.2", + "@antora/collector-extension": "1.0.1", + "@asciidoctor/tabs": "1.0.0-beta.6", + "@springio/antora-extensions": "1.14.4", + "@springio/asciidoctor-extensions": "1.0.0-alpha.17" + } } diff --git a/docs/pom.xml b/docs/pom.xml index c9c56458..a7b1dea2 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -8,7 +8,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT jar Spring Cloud Commons Docs @@ -26,20 +26,28 @@ .* ${maven.multiModuleProjectDirectory}/docs/modules/ROOT/partials/ - - - ${project.groupId} - spring-cloud-starter - - - ${project.groupId} - spring-cloud-starter-loadbalancer - - src/main/asciidoc + + enable-configuration-properties + + + !disableConfigurationProperties + + + + + ${project.groupId} + spring-cloud-starter + + + ${project.groupId} + spring-cloud-starter-loadbalancer + + + docs diff --git a/pom.xml b/pom.xml index 9ad40754..eeb45599 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT pom Spring Cloud Commons Parent Spring Cloud Commons Parent @@ -13,7 +13,7 @@ org.springframework.cloud spring-cloud-build - 4.1.4-SNAPSHOT + 4.1.6-SNAPSHOT diff --git a/spring-cloud-commons-dependencies/pom.xml b/spring-cloud-commons-dependencies/pom.xml index 54d18aee..c9b87287 100644 --- a/spring-cloud-commons-dependencies/pom.xml +++ b/spring-cloud-commons-dependencies/pom.xml @@ -6,11 +6,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 4.1.4-SNAPSHOT + 4.1.6-SNAPSHOT spring-cloud-commons-dependencies - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT pom spring-cloud-commons-dependencies Spring Cloud Commons Dependencies diff --git a/spring-cloud-commons/pom.xml b/spring-cloud-commons/pom.xml index 614e9557..1290c215 100644 --- a/spring-cloud-commons/pom.xml +++ b/spring-cloud-commons/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-commons diff --git a/spring-cloud-context-integration-tests/pom.xml b/spring-cloud-context-integration-tests/pom.xml index 7e0d6a57..493399fa 100644 --- a/spring-cloud-context-integration-tests/pom.xml +++ b/spring-cloud-context-integration-tests/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-context-integration-tests diff --git a/spring-cloud-context-webflux-integration-tests/pom.xml b/spring-cloud-context-webflux-integration-tests/pom.xml index 28663fd6..d699cc62 100644 --- a/spring-cloud-context-webflux-integration-tests/pom.xml +++ b/spring-cloud-context-webflux-integration-tests/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-context-webflux-integration-tests diff --git a/spring-cloud-context/pom.xml b/spring-cloud-context/pom.xml index f548abe6..4acecb57 100644 --- a/spring-cloud-context/pom.xml +++ b/spring-cloud-context/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-context diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java index e2004b5e..57e26fc0 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java @@ -23,9 +23,6 @@ import java.util.Set; import org.springframework.aop.scope.ScopedProxyUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.ListableBeanFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinitionHolder; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -53,11 +50,9 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.weaving.LoadTimeWeaverAware; import org.springframework.core.env.Environment; import org.springframework.core.env.StandardEnvironment; import org.springframework.core.style.ToStringCreator; -import org.springframework.instrument.classloading.LoadTimeWeaver; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -119,7 +114,7 @@ public class RefreshAutoConfiguration { return new ConfigDataContextRefresher(context, scope, properties); } - @ConditionalOnProperty(value = "spring.cloud.refresh.on-restart.enabled", matchIfMissing = true) + @ConditionalOnProperty(value = REFRESH_SCOPE_PREFIX + ".on-restart.enabled", matchIfMissing = true) @Bean RefreshScopeLifecycle refreshScopeLifecycle(ContextRefresher contextRefresher) { return new RefreshScopeLifecycle(contextRefresher); @@ -158,27 +153,6 @@ public class RefreshAutoConfiguration { } - @Configuration(proxyBeanMethods = false) - @ConditionalOnClass(name = "javax.persistence.EntityManagerFactory") - protected static class JpaInvokerConfiguration implements LoadTimeWeaverAware, InitializingBean { - - @Autowired - private ListableBeanFactory beanFactory; - - @Override - public void afterPropertiesSet() { - String cls = "org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker"; - if (this.beanFactory.containsBean(cls)) { - this.beanFactory.getBean(cls); - } - } - - @Override - public void setLoadTimeWeaver(LoadTimeWeaver ltw) { - } - - } - @Component protected static class RefreshScopeBeanDefinitionEnhancer implements BeanDefinitionRegistryPostProcessor, EnvironmentAware { diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java index 4a5d813e..aa61373d 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java @@ -92,9 +92,6 @@ public class ConfigDataContextRefresher extends ContextRefresher postProcessor.postProcessEnvironment(environment, application); } - if (environment.getPropertySources().contains(REFRESH_ARGS_PROPERTY_SOURCE)) { - environment.getPropertySources().remove(REFRESH_ARGS_PROPERTY_SOURCE); - } MutablePropertySources target = getContext().getEnvironment().getPropertySources(); String targetName = null; for (PropertySource source : environment.getPropertySources()) { diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ContextRefresher.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ContextRefresher.java index 98149392..54991a87 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ContextRefresher.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ContextRefresher.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import org.apache.commons.logging.Log; @@ -50,8 +51,6 @@ public abstract class ContextRefresher { protected final Log logger = LogFactory.getLog(getClass()); - protected static final String REFRESH_ARGS_PROPERTY_SOURCE = "refreshArgs"; - protected static final String[] DEFAULT_PROPERTY_SOURCES = new String[] { // order matters, if cli args aren't first, things get messy CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME, "defaultProperties" }; @@ -139,7 +138,7 @@ public abstract class ContextRefresher { if (!after.containsKey(key)) { result.put(key, null); } - else if (!equal(before.get(key), after.get(key))) { + else if (!Objects.equals(before.get(key), after.get(key))) { result.put(key, after.get(key)); } } @@ -151,16 +150,6 @@ public abstract class ContextRefresher { return result; } - private boolean equal(Object one, Object two) { - if (one == null && two == null) { - return true; - } - if (one == null || two == null) { - return false; - } - return one.equals(two); - } - private Map extract(MutablePropertySources propertySources) { Map result = new HashMap<>(); List> sources = new ArrayList<>(); diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/LegacyContextRefresher.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/LegacyContextRefresher.java index 5a30aadf..fe5fa4b9 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/LegacyContextRefresher.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/LegacyContextRefresher.java @@ -41,6 +41,8 @@ import static org.springframework.cloud.util.PropertyUtils.BOOTSTRAP_ENABLED_PRO */ public class LegacyContextRefresher extends ContextRefresher { + private static final String REFRESH_ARGS_PROPERTY_SOURCE = "refreshArgs"; + @Deprecated public LegacyContextRefresher(ConfigurableApplicationContext context, RefreshScope scope) { super(context, scope); diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/util/PropertyUtils.java b/spring-cloud-context/src/main/java/org/springframework/cloud/util/PropertyUtils.java index 0150d2ad..fca2231c 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/util/PropertyUtils.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/util/PropertyUtils.java @@ -42,7 +42,7 @@ public abstract class PropertyUtils { public static final boolean MARKER_CLASS_EXISTS = ClassUtils.isPresent(MARKER_CLASS, null); private PropertyUtils() { - throw new UnsupportedOperationException("unable to instatiate utils class"); + throw new UnsupportedOperationException("unable to instantiate utils class"); } public static boolean bootstrapEnabled(Environment environment) { diff --git a/spring-cloud-loadbalancer/pom.xml b/spring-cloud-loadbalancer/pom.xml index bd451a1f..a21af32a 100644 --- a/spring-cloud-loadbalancer/pom.xml +++ b/spring-cloud-loadbalancer/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-loadbalancer diff --git a/spring-cloud-starter-bootstrap/pom.xml b/spring-cloud-starter-bootstrap/pom.xml index 39950c27..bf1e7806 100644 --- a/spring-cloud-starter-bootstrap/pom.xml +++ b/spring-cloud-starter-bootstrap/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. jar diff --git a/spring-cloud-starter-loadbalancer/pom.xml b/spring-cloud-starter-loadbalancer/pom.xml index aa677963..5358f053 100644 --- a/spring-cloud-starter-loadbalancer/pom.xml +++ b/spring-cloud-starter-loadbalancer/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. 4.0.0 diff --git a/spring-cloud-starter/pom.xml b/spring-cloud-starter/pom.xml index 670937b7..714c0bce 100644 --- a/spring-cloud-starter/pom.xml +++ b/spring-cloud-starter/pom.xml @@ -6,7 +6,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT spring-cloud-starter spring-cloud-starter diff --git a/spring-cloud-test-support/pom.xml b/spring-cloud-test-support/pom.xml index d2b9b7b3..81fd19b5 100644 --- a/spring-cloud-test-support/pom.xml +++ b/spring-cloud-test-support/pom.xml @@ -7,7 +7,7 @@ org.springframework.cloud spring-cloud-commons-parent - 4.1.5-SNAPSHOT + 4.1.6-SNAPSHOT .. spring-cloud-test-support @@ -84,17 +84,6 @@ org.hibernate.validator hibernate-validator test - - - javax.validation - validation-api - - - - - jakarta.validation - jakarta.validation-api - test