Skip to content

Commit 4e7c9a4

Browse files
committed
Merge remote-tracking branch 'origin/main' into draft-interface-clients-autoconfiguration
# Conflicts: # spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json
2 parents db379ca + 7920e37 commit 4e7c9a4

File tree

124 files changed

+2399
-853
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+2399
-853
lines changed

antora/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

buildSrc/src/main/java/org/springframework/boot/build/antora/AntoraAsciidocAttributes.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public Map<String, String> get() {
7878
addGitHubAttributes(attributes);
7979
addVersionAttributes(attributes);
8080
addUrlArtifactRepository(attributes);
81+
addUrlJava(attributes);
8182
addUrlLibraryLinkAttributes(attributes);
8283
addPropertyAttributes(attributes);
8384
return attributes;
@@ -109,8 +110,12 @@ private void addVersionAttributes(Map<String, String> attributes) {
109110
});
110111
attributes.put("version-native-build-tools", (String) this.projectProperties.get("nativeBuildToolsVersion"));
111112
attributes.put("version-graal", (String) this.projectProperties.get("graalVersion"));
113+
addDependencyVersion(attributes, "jackson-annotations", "com.fasterxml.jackson.core:jackson-annotations");
114+
addDependencyVersion(attributes, "jackson-core", "com.fasterxml.jackson.core:jackson-core");
115+
addDependencyVersion(attributes, "jackson-databind", "com.fasterxml.jackson.core:jackson-databind");
112116
addSpringDataDependencyVersion(attributes, "spring-data-commons");
113117
addSpringDataDependencyVersion(attributes, "spring-data-couchbase");
118+
addSpringDataDependencyVersion(attributes, "spring-data-cassandra");
114119
addSpringDataDependencyVersion(attributes, "spring-data-elasticsearch");
115120
addSpringDataDependencyVersion(attributes, "spring-data-jdbc");
116121
addSpringDataDependencyVersion(attributes, "spring-data-jpa");
@@ -125,15 +130,23 @@ private void addSpringDataDependencyVersion(Map<String, String> attributes, Stri
125130
}
126131

127132
private void addSpringDataDependencyVersion(Map<String, String> attributes, String name, String artifactId) {
128-
String version = this.dependencyVersions.get("org.springframework.data:" + artifactId);
129-
Assert.notNull(version, () -> "No version found for Spring Data artifact " + artifactId);
133+
addDependencyVersion(attributes, name, "org.springframework.data:" + artifactId);
134+
}
135+
136+
private void addDependencyVersion(Map<String, String> attributes, String name, String groupAndArtifactId) {
137+
String version = this.dependencyVersions.get(groupAndArtifactId);
138+
Assert.notNull(version, () -> "No version found for " + groupAndArtifactId);
130139
attributes.put("version-" + name, version);
131140
}
132141

133142
private void addUrlArtifactRepository(Map<String, String> attributes) {
134143
attributes.put("url-artifact-repository", this.artifactRelease.getDownloadRepo());
135144
}
136145

146+
private void addUrlJava(Map<String, String> attributes) {
147+
attributes.put("url-javase-javadoc", "https://docs.oracle.com/en/java/javase/17/docs/api/");
148+
}
149+
137150
private void addUrlLibraryLinkAttributes(Map<String, String> attributes) {
138151
this.libraries.forEach((library) -> {
139152
String prefix = "url-" + library.getLinkRootName() + "-";

buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-asciidoc-attributes.properties

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ url-paketo-docs=https://paketo.io/docs
3333
url-paketo-docs-java-buildpack={url-paketo-docs}/buildpacks/language-family-buildpacks/java
3434
url-spring-boot-for-apache-geode-docs=https://docs.spring.io/spring-boot-data-geode-build/2.0.x/reference/html5
3535
url-spring-boot-for-apache-geode-site=https://github.com/spring-projects/spring-boot-data-geode
36+
url-spring-data-cassandra-javadoc=https://docs.spring.io/spring-data/cassandra/docs/{version-spring-data-cassandra}/api
3637
url-spring-data-cassandra-site=https://spring.io/projects/spring-data-cassandra
3738
url-spring-data-commons-javadoc=https://docs.spring.io/spring-data/commons/docs/{version-spring-data-commons}/api
3839
url-spring-data-couchbase-docs=https://docs.spring.io/spring-data/couchbase/reference/{version-spring-data-couchbase}
3940
url-spring-data-couchbase-site=https://spring.io/projects/spring-data-couchbase
41+
url-spring-data-couchbase-javadoc=https://docs.spring.io/spring-data/couchbase/docs/{version-spring-data-couchbase}/api
42+
url-spring-data-elasticsearch-javadoc=https://docs.spring.io/spring-data/elasticsearch/docs/{version-spring-data-elasticsearch}/api
4043
url-spring-data-elasticsearch-docs=https://docs.spring.io/spring-data/elasticsearch/reference/{version-spring-data-elasticsearch}
4144
url-spring-data-elasticsearch-site=https://spring.io/projects/spring-data-elasticsearch
4245
url-spring-data-envers-site=https://spring.io/projects/spring-data-envers
@@ -50,13 +53,17 @@ url-spring-data-ldap-site=https://spring.io/projects/spring-data-ldap
5053
url-spring-data-mongodb-javadoc=https://docs.spring.io/spring-data/mongodb/docs/{version-spring-data-mongodb}/api
5154
url-spring-data-mongodb-site=https://spring.io/projects/spring-data-mongodb
5255
url-spring-data-mongodb-docs=https://docs.spring.io/spring-data/mongodb/reference/{version-spring-data-mongodb}
56+
url-spring-data-neo4j-javadoc=https://docs.spring.io/spring-data/neo4j/docs/{version-spring-data-neo4j}/api
5357
url-spring-data-neo4j-docs=https://docs.spring.io/spring-data/neo4j/reference/{version-spring-data-neo4j}
5458
url-spring-data-neo4j-site=https://spring.io/projects/spring-data-neo4j
5559
url-spring-data-r2dbc-javadoc=https://docs.spring.io/spring-data/r2dbc/docs/{version-spring-data-r2dbc}/api
5660
url-spring-data-r2dbc-docs=https://docs.spring.io/spring-data/relational/reference/{version-spring-data-r2dbc}
5761
url-spring-data-redis-site=https://spring.io/projects/spring-data-redis
5862
url-spring-data-rest-javadoc=https://docs.spring.io/spring-data/rest/docs/{version-spring-data-rest}/api
5963
url-spring-data-site=https://spring.io/projects/spring-data
64+
url-jackson-annotations=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-annotations/{version-jackson-annotations}
65+
url-jackson-core=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/{version-jackson-core}
66+
url-jackson-databind=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/{version-jackson-databind}
6067

6168
# === API References ===
6269

buildSrc/src/test/java/org/springframework/boot/build/antora/AntoraAsciidocAttributesTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ private Library mockLibrary(Map<String, Function<LibraryVersion, String>> links)
154154
private Map<String, String> mockDependencyVersions() {
155155
Map<String, String> versions = new LinkedHashMap<>();
156156
addMockSpringDataVersion(versions, "spring-data-commons");
157+
addMockSpringDataVersion(versions, "spring-data-cassandra");
157158
addMockSpringDataVersion(versions, "spring-data-couchbase");
158159
addMockSpringDataVersion(versions, "spring-data-elasticsearch");
159160
addMockSpringDataVersion(versions, "spring-data-jdbc");
@@ -162,11 +163,18 @@ private Map<String, String> mockDependencyVersions() {
162163
addMockSpringDataVersion(versions, "spring-data-neo4j");
163164
addMockSpringDataVersion(versions, "spring-data-r2dbc");
164165
addMockSpringDataVersion(versions, "spring-data-rest-core");
166+
addMockJacksonVersion(versions, "jackson-annotations");
167+
addMockJacksonVersion(versions, "jackson-core");
168+
addMockJacksonVersion(versions, "jackson-databind");
165169
return versions;
166170
}
167171

168172
private void addMockSpringDataVersion(Map<String, String> versions, String artifactId) {
169173
versions.put("org.springframework.data:" + artifactId, "1.2.3");
170174
}
171175

176+
private void addMockJacksonVersion(Map<String, String> versions, String artifactId) {
177+
versions.put("com.fasterxml.jackson.core:" + artifactId, "2.3.4");
178+
}
179+
172180
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,6 @@
3030
"description": "Whether to enable default metrics exporters.",
3131
"defaultValue": true
3232
},
33-
{
34-
"name": "management.endpoint.configprops.show-values",
35-
"defaultValue": "never"
36-
},
37-
{
38-
"name": "management.endpoint.env.show-values",
39-
"defaultValue": "never"
40-
},
4133
{
4234
"name": "management.endpoint.health.probes.add-additional-paths",
4335
"type": "java.lang.Boolean",
@@ -50,10 +42,6 @@
5042
"description": "Whether to enable liveness and readiness probes.",
5143
"defaultValue": false
5244
},
53-
{
54-
"name": "management.endpoint.health.show-details",
55-
"defaultValue": "never"
56-
},
5745
{
5846
"name": "management.endpoint.health.status.order",
5947
"defaultValue": [
@@ -69,10 +57,6 @@
6957
"description": "Whether to validate health group membership on startup. Validation fails if a group includes or excludes a health contributor that does not exist.",
7058
"defaultValue": true
7159
},
72-
{
73-
"name": "management.endpoint.quartz.show-values",
74-
"defaultValue": "never"
75-
},
7660
{
7761
"name": "management.endpoints.enabled-by-default",
7862
"type": "java.lang.Boolean",
@@ -107,26 +91,6 @@
10791
"health"
10892
]
10993
},
110-
{
111-
"name": "management.ganglia.metrics.export.addressing-mode",
112-
"defaultValue": "multicast"
113-
},
114-
{
115-
"name": "management.ganglia.metrics.export.duration-units",
116-
"defaultValue": "milliseconds"
117-
},
118-
{
119-
"name": "management.graphite.metrics.export.duration-units",
120-
"defaultValue": "milliseconds"
121-
},
122-
{
123-
"name": "management.graphite.metrics.export.protocol",
124-
"defaultValue": "pickled"
125-
},
126-
{
127-
"name": "management.graphite.metrics.export.rate-units",
128-
"defaultValue": "seconds"
129-
},
13094
{
13195
"name": "management.health.cassandra.enabled",
13296
"type": "java.lang.Boolean",
@@ -277,10 +241,6 @@
277241
"errors"
278242
]
279243
},
280-
{
281-
"name": "management.influx.metrics.export.consistency",
282-
"defaultValue": "one"
283-
},
284244
{
285245
"name": "management.info.build.enabled",
286246
"type": "java.lang.Boolean",
@@ -305,10 +265,6 @@
305265
"description": "Whether to enable git info.",
306266
"defaultValue": true
307267
},
308-
{
309-
"name": "management.info.git.mode",
310-
"defaultValue": "simple"
311-
},
312268
{
313269
"name": "management.info.java.enabled",
314270
"type": "java.lang.Boolean",
@@ -2085,31 +2041,11 @@
20852041
"description": "Whether auto-configuration of Micrometer annotations is enabled.",
20862042
"defaultValue": false
20872043
},
2088-
{
2089-
"name": "management.otlp.logging.compression",
2090-
"defaultValue": "none"
2091-
},
2092-
{
2093-
"name": "management.otlp.metrics.export.base-time-unit",
2094-
"defaultValue": "milliseconds"
2095-
},
2096-
{
2097-
"name": "management.otlp.tracing.compression",
2098-
"defaultValue": "none"
2099-
},
21002044
{
21012045
"name": "management.otlp.tracing.export.enabled",
21022046
"type": "java.lang.Boolean",
21032047
"description": "Whether auto-configuration of tracing is enabled to export OTLP traces."
21042048
},
2105-
{
2106-
"name": "management.prometheus.metrics.export.histogram-flavor",
2107-
"defaultValue": "prometheus"
2108-
},
2109-
{
2110-
"name": "management.prometheus.metrics.export.pushgateway.shutdown-operation",
2111-
"defaultValue": "none"
2112-
},
21132049
{
21142050
"name": "management.server.add-application-context-header",
21152051
"type": "java.lang.Boolean",
@@ -2210,22 +2146,6 @@
22102146
"name": "management.server.ssl.trust-store-type",
22112147
"description": "Type of the trust store."
22122148
},
2213-
{
2214-
"name": "management.signalfx.metrics.export.published-histogram-type",
2215-
"defaultValue": "default"
2216-
},
2217-
{
2218-
"name": "management.simple.metrics.export.mode",
2219-
"defaultValue": "cumulative"
2220-
},
2221-
{
2222-
"name": "management.statsd.metrics.export.flavor",
2223-
"defaultValue": "datadog"
2224-
},
2225-
{
2226-
"name": "management.statsd.metrics.export.protocol",
2227-
"defaultValue": "udp"
2228-
},
22292149
{
22302150
"name": "management.trace.http.enabled",
22312151
"deprecation": {

spring-boot-project/spring-boot-autoconfigure/src/dockerTest/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfigurationTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.testcontainers.elasticsearch.ElasticsearchContainer;
2121
import org.testcontainers.junit.jupiter.Container;
2222
import org.testcontainers.junit.jupiter.Testcontainers;
23+
import reactor.core.publisher.Mono;
2324

2425
import org.springframework.boot.autoconfigure.AutoConfigurations;
2526
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
@@ -30,6 +31,7 @@
3031
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientAutoConfiguration;
3132
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration;
3233
import org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearchClientAutoConfiguration;
34+
import org.springframework.boot.test.context.FilteredClassLoader;
3335
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3436
import org.springframework.boot.testsupport.container.TestImage;
3537
import org.springframework.context.annotation.Configuration;
@@ -62,6 +64,14 @@ class ReactiveElasticsearchRepositoriesAutoConfigurationTests {
6264
"spring.elasticsearch.uris=" + elasticsearch.getHost() + ":" + elasticsearch.getFirstMappedPort(),
6365
"spring.elasticsearch.socket-timeout=30s");
6466

67+
@Test
68+
void backsOffWithoutReactor() {
69+
this.contextRunner.withUserConfiguration(TestConfiguration.class)
70+
.withClassLoader(new FilteredClassLoader(Mono.class))
71+
.run((context) -> assertThat(context)
72+
.doesNotHaveBean(ReactiveElasticsearchRepositoriesAutoConfiguration.class));
73+
}
74+
6575
@Test
6676
void testDefaultRepositoryConfiguration() {
6777
this.contextRunner.withUserConfiguration(TestConfiguration.class)

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.autoconfigure.data.elasticsearch;
1818

19+
import reactor.core.publisher.Mono;
20+
1921
import org.springframework.boot.autoconfigure.AutoConfiguration;
2022
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2123
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -36,7 +38,7 @@
3638
* @see EnableReactiveElasticsearchRepositories
3739
*/
3840
@AutoConfiguration
39-
@ConditionalOnClass({ ReactiveElasticsearchClient.class, ReactiveElasticsearchRepository.class })
41+
@ConditionalOnClass({ ReactiveElasticsearchClient.class, ReactiveElasticsearchRepository.class, Mono.class })
4042
@ConditionalOnProperty(prefix = "spring.data.elasticsearch.repositories", name = "enabled", havingValue = "true",
4143
matchIfMissing = true)
4244
@ConditionalOnMissingBean(ReactiveElasticsearchRepositoryFactoryBean.class)

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/graphql/reactive/GraphQlWebFluxAutoConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.springframework.http.HttpHeaders;
5656
import org.springframework.http.HttpMethod;
5757
import org.springframework.http.HttpStatus;
58+
import org.springframework.http.MediaType;
5859
import org.springframework.http.codec.ServerCodecConfigurer;
5960
import org.springframework.web.cors.CorsConfiguration;
6061
import org.springframework.web.reactive.HandlerMapping;
@@ -112,6 +113,7 @@ public RouterFunction<ServerResponse> graphQlRouterFunction(GraphQlHttpHandler h
112113
RouterFunctions.Builder builder = RouterFunctions.route();
113114
builder.route(GraphQlRequestPredicates.graphQlHttp(path), httpHandler::handleRequest);
114115
builder.route(GraphQlRequestPredicates.graphQlSse(path), sseHandler::handleRequest);
116+
builder.POST(path, this::unsupportedMediaType);
115117
builder.GET(path, this::onlyAllowPost);
116118
if (properties.getGraphiql().isEnabled()) {
117119
GraphiQlHandler graphQlHandler = new GraphiQlHandler(path, properties.getWebsocket().getPath());
@@ -124,6 +126,14 @@ public RouterFunction<ServerResponse> graphQlRouterFunction(GraphQlHttpHandler h
124126
return builder.build();
125127
}
126128

129+
private Mono<ServerResponse> unsupportedMediaType(ServerRequest request) {
130+
return ServerResponse.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE).headers(this::acceptJson).build();
131+
}
132+
133+
private void acceptJson(HttpHeaders headers) {
134+
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
135+
}
136+
127137
private Mono<ServerResponse> onlyAllowPost(ServerRequest request) {
128138
return ServerResponse.status(HttpStatus.METHOD_NOT_ALLOWED).headers(this::onlyAllowPost).build();
129139
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/graphql/servlet/GraphQlWebMvcAutoConfiguration.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ public RouterFunction<ServerResponse> graphQlRouterFunction(GraphQlHttpHandler h
117117
RouterFunctions.Builder builder = RouterFunctions.route();
118118
builder.route(GraphQlRequestPredicates.graphQlHttp(path), httpHandler::handleRequest);
119119
builder.route(GraphQlRequestPredicates.graphQlSse(path), sseHandler::handleRequest);
120+
builder.POST(path, this::unsupportedMediaType);
120121
builder.GET(path, this::onlyAllowPost);
121122
if (properties.getGraphiql().isEnabled()) {
122123
GraphiQlHandler graphiQLHandler = new GraphiQlHandler(path, properties.getWebsocket().getPath());
@@ -129,6 +130,14 @@ public RouterFunction<ServerResponse> graphQlRouterFunction(GraphQlHttpHandler h
129130
return builder.build();
130131
}
131132

133+
private ServerResponse unsupportedMediaType(ServerRequest request) {
134+
return ServerResponse.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE).headers(this::acceptJson).build();
135+
}
136+
137+
private void acceptJson(HttpHeaders headers) {
138+
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
139+
}
140+
132141
private ServerResponse onlyAllowPost(ServerRequest request) {
133142
return ServerResponse.status(HttpStatus.METHOD_NOT_ALLOWED).headers(this::onlyAllowPost).build();
134143
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/HttpInterfaceClientsAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
* @author Olga Maciaszek-Sharma
4545
*/
4646
@AutoConfiguration(after = { RestTemplateAutoConfiguration.class, RestClientAutoConfiguration.class,
47-
WebClientAutoConfiguration.class})
47+
WebClientAutoConfiguration.class })
4848
@Import(HttpInterfaceClientsImportRegistrar.class)
4949
@EnableConfigurationProperties(HttpInterfaceClientsProperties.class)
5050
public class HttpInterfaceClientsAutoConfiguration {

0 commit comments

Comments
 (0)