Skip to content

Commit b14a2a9

Browse files
committed
Merge branch '3.3.x'
2 parents 3216687 + 9efb516 commit b14a2a9

File tree

7 files changed

+61
-25
lines changed

7 files changed

+61
-25
lines changed

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

+6-4
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ private void addVersionAttributes(Map<String, String> attributes, Map<String, St
127127
addDependencyVersion(attributes, "jackson-annotations", "com.fasterxml.jackson.core:jackson-annotations");
128128
addDependencyVersion(attributes, "jackson-core", "com.fasterxml.jackson.core:jackson-core");
129129
addDependencyVersion(attributes, "jackson-databind", "com.fasterxml.jackson.core:jackson-databind");
130+
addDependencyVersion(attributes, "jackson-dataformat-xml",
131+
"com.fasterxml.jackson.dataformat:jackson-dataformat-xml");
130132
addSpringDataDependencyVersion(attributes, internal, "spring-data-commons");
131133
addSpringDataDependencyVersion(attributes, internal, "spring-data-couchbase");
132134
addSpringDataDependencyVersion(attributes, internal, "spring-data-cassandra");
@@ -185,16 +187,16 @@ private void addUrlJava(Map<String, String> attributes) {
185187
private void addUrlLibraryLinkAttributes(Map<String, String> attributes) {
186188
Map<String, String> packageAttributes = new LinkedHashMap<>();
187189
this.libraries.forEach((library) -> {
188-
String prefix = "url-" + library.getLinkRootName() + "-";
189-
library.getLinks().forEach((name, link) -> {
190-
String linkName = prefix + name;
190+
library.getLinks().forEach((name, links) -> links.forEach((link) -> {
191+
String linkRootName = (link.rootName() != null) ? link.rootName() : library.getLinkRootName();
192+
String linkName = "url-" + linkRootName + "-" + name;
191193
attributes.put(linkName, link.url(library));
192194
link.packages()
193195
.stream()
194196
.map(this::packageAttributeName)
195197
.forEach((packageAttributeName) -> packageAttributes.put(packageAttributeName,
196198
"{" + linkName + "}"));
197-
});
199+
}));
198200
});
199201
attributes.putAll(packageAttributes);
200202
}

buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ public static class LibraryHandler {
256256

257257
private String linkRootName;
258258

259-
private final Map<String, Link> links = new HashMap<>();
259+
private final Map<String, List<Link>> links = new HashMap<>();
260260

261261
@Inject
262262
public LibraryHandler(Project project, String version) {
@@ -458,7 +458,7 @@ public void managedBy(String managedBy) {
458458

459459
public static class LinksHandler {
460460

461-
private final Map<String, Link> links = new HashMap<>();
461+
private final Map<String, List<Link>> links = new HashMap<>();
462462

463463
public void site(String linkTemplate) {
464464
site(asFactory(linkTemplate));
@@ -500,6 +500,10 @@ public void javadoc(Function<LibraryVersion, String> linkFactory, String... pack
500500
add("javadoc", linkFactory, packages);
501501
}
502502

503+
public void javadoc(String rootName, Function<LibraryVersion, String> linkFactory, String... packages) {
504+
add(rootName, "javadoc", linkFactory, packages);
505+
}
506+
503507
public void releaseNotes(String linkTemplate) {
504508
releaseNotes(asFactory(linkTemplate));
505509
}
@@ -517,7 +521,13 @@ public void add(String name, Function<LibraryVersion, String> linkFactory) {
517521
}
518522

519523
public void add(String name, Function<LibraryVersion, String> linkFactory, String[] packages) {
520-
this.links.put(name, new Link(linkFactory, (packages != null) ? List.of(packages) : null));
524+
add(null, name, linkFactory, packages);
525+
}
526+
527+
private void add(String rootName, String name, Function<LibraryVersion, String> linkFactory,
528+
String[] packages) {
529+
Link link = new Link(rootName, linkFactory, (packages != null) ? List.of(packages) : null);
530+
this.links.computeIfAbsent(name, (key) -> new ArrayList<>()).add(link);
521531
}
522532

523533
private Function<LibraryVersion, String> asFactory(String linkTemplate) {

buildSrc/src/main/java/org/springframework/boot/build/bom/CheckLinks.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void releaseNotes() {
5959
RestTemplate restTemplate = new RestTemplate(requestFactory);
6060
restTemplate.setErrorHandler(new IgnoringErrorHandler());
6161
for (Library library : this.bom.getLibraries()) {
62-
library.getLinks().forEach((name, link) -> {
62+
library.getLinks().forEach((name, links) -> links.forEach((link) -> {
6363
URI uri;
6464
try {
6565
uri = new URI(link.url(library));
@@ -70,7 +70,7 @@ void releaseNotes() {
7070
catch (URISyntaxException ex) {
7171
throw new RuntimeException(ex);
7272
}
73-
});
73+
}));
7474
}
7575
}
7676

buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public class Library {
6868

6969
private final String linkRootName;
7070

71-
private final Map<String, Link> links;
71+
private final Map<String, List<Link>> links;
7272

7373
/**
7474
* Create a new {@code Library} with the given {@code name}, {@code version}, and
@@ -89,7 +89,7 @@ public class Library {
8989
*/
9090
public Library(String name, String calendarName, LibraryVersion version, List<Group> groups,
9191
List<ProhibitedVersion> prohibitedVersions, boolean considerSnapshots, VersionAlignment versionAlignment,
92-
String alignsWithBom, String linkRootName, Map<String, Link> links) {
92+
String alignsWithBom, String linkRootName, Map<String, List<Link>> links) {
9393
this.name = name;
9494
this.calendarName = (calendarName != null) ? calendarName : name;
9595
this.version = version;
@@ -148,16 +148,22 @@ public String getAlignsWithBom() {
148148
return this.alignsWithBom;
149149
}
150150

151-
public Map<String, Link> getLinks() {
151+
public Map<String, List<Link>> getLinks() {
152152
return this.links;
153153
}
154154

155155
public String getLinkUrl(String name) {
156-
Link link = getLink(name);
157-
return (link != null) ? link.url(this) : null;
156+
List<Link> links = getLinks(name);
157+
if (links == null || links.isEmpty()) {
158+
return null;
159+
}
160+
if (links.size() > 1) {
161+
throw new IllegalStateException("Expected a single '%s' link for %s".formatted(name, getName()));
162+
}
163+
return links.get(0).url(this);
158164
}
159165

160-
public Link getLink(String name) {
166+
public List<Link> getLinks(String name) {
161167
return this.links.get(name);
162168
}
163169

@@ -524,7 +530,7 @@ public String toString() {
524530

525531
}
526532

527-
public record Link(Function<LibraryVersion, String> factory, List<String> packages) {
533+
public record Link(String rootName, Function<LibraryVersion, String> factory, List<String> packages) {
528534

529535
private static final Pattern PACKAGE_EXPAND = Pattern.compile("^(.*)\\[(.*)\\]$");
530536

buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/UpgradeBom.java

+1-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
import org.springframework.boot.build.bom.BomExtension;
3030
import org.springframework.boot.build.bom.Library.LibraryVersion;
31-
import org.springframework.boot.build.bom.Library.Link;
3231
import org.springframework.boot.build.bom.bomr.github.Issue;
3332
import org.springframework.boot.build.properties.BuildProperties;
3433

@@ -77,7 +76,7 @@ protected String commitMessage(Upgrade upgrade, int issueNumber) {
7776
@Override
7877
protected String issueBody(Upgrade upgrade, Issue existingUpgrade) {
7978
LibraryVersion upgradeVersion = new LibraryVersion(upgrade.getVersion());
80-
String releaseNotesLink = getReleaseNotesLink(upgrade, upgradeVersion);
79+
String releaseNotesLink = upgrade.getLibrary().getLinkUrl("releaseNotes");
8180
List<String> lines = new ArrayList<>();
8281
String description = upgrade.getLibrary().getName() + " " + upgradeVersion;
8382
if (releaseNotesLink != null) {
@@ -92,9 +91,4 @@ protected String issueBody(Upgrade upgrade, Issue existingUpgrade) {
9291
return String.join("\\r\\n\\r\\n", lines);
9392
}
9493

95-
private String getReleaseNotesLink(Upgrade upgrade, LibraryVersion upgradeVersion) {
96-
Link releaseNotesLink = upgrade.getLibrary().getLink("releaseNotes");
97-
return (releaseNotesLink != null) ? releaseNotesLink.url(upgradeVersion) : null;
98-
}
99-
10094
}

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

+2
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ url-spring-data-site=https://spring.io/projects/spring-data
7575
url-jackson-annotations-javadoc=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-annotations/{version-jackson-annotations}
7676
url-jackson-core-javadoc=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/{version-jackson-core}
7777
url-jackson-databind-javadoc=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/{version-jackson-databind}
78+
url-jackson-dataformat-xml-javadoc=https://javadoc.io/doc/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/{version-jackson-dataformat-xml}
7879

7980
# === Javadoc Locations ===
8081

@@ -92,6 +93,7 @@ javadoc-location-org-springframework-data-r2dbc={url-spring-data-r2dbc-javadoc}
9293
javadoc-location-org-springframework-data-redis={url-spring-data-redis-javadoc}
9394
javadoc-location-org-springframework-data-rest={url-spring-data-rest-javadoc}
9495
javadoc-location-com-fasterxml-jackson-databind={url-jackson-databind-javadoc}
96+
javadoc-location-com-fasterxml-jackson-dataformat-xml={url-jackson-dataformat-xml-javadoc}
9597

9698
# === API References ===
9799

spring-boot-project/spring-boot-dependencies/build.gradle

+24-2
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ bom {
260260
}
261261
links {
262262
site("https://docs.couchbase.com/java-sdk/current/hello-world/overview.html")
263+
javadoc("https://javadoc.io/doc/com.couchbase.client/java-client/{version}")
263264
releaseNotes("https://docs.couchbase.com/java-sdk/current/project-docs/sdk-release-notes.html")
264265
}
265266
}
@@ -553,6 +554,10 @@ bom {
553554
"HikariCP"
554555
]
555556
}
557+
links {
558+
site("https://github.com/brettwooldridge/HikariCP")
559+
javadoc("https://javadoc.io/doc/com.zaxxer/HikariCP/{version}", "com.zaxxer.hikari")
560+
}
556561
}
557562
library("HSQLDB", "2.7.4") {
558563
group("org.hsqldb") {
@@ -817,6 +822,13 @@ bom {
817822
"jakarta.websocket-client-api"
818823
]
819824
}
825+
links {
826+
releaseNotes("https://github.com/jakartaee/jaxb-api/releases/tag/{version}")
827+
javadoc("jakarta-websocket-server", version -> "https://jakarta.ee/specifications/websocket/%s.%s/apidocs/server"
828+
.formatted(version.major(), version.minor()), "jakarta.websocket.server")
829+
javadoc("jakarta-websocket-client", version -> "https://jakarta.ee/specifications/websocket/%s.%s/apidocs/client"
830+
.formatted(version.major(), version.minor()), "jakarta.websocket")
831+
}
820832
}
821833
library("Jakarta WS RS", "3.1.0") {
822834
group("jakarta.ws.rs") {
@@ -833,6 +845,8 @@ bom {
833845
}
834846
links {
835847
releaseNotes("https://github.com/jakartaee/jaxb-api/releases/tag/{version}")
848+
javadoc(version -> "https://jakarta.ee/specifications/xml-binding/%s.%s/apidocs"
849+
.formatted(version.major(), version.minor()), "jakarta.xml.bind")
836850
}
837851
}
838852
library("Jakarta XML SOAP", "3.0.2") {
@@ -965,6 +979,7 @@ bom {
965979
}
966980
links {
967981
site("https://eclipse.dev/jetty")
982+
javadoc(version -> "https://javadoc.jetty.org/jetty-%s".formatted(version.major()))
968983
releaseNotes("https://github.com/jetty/jetty.project/releases/tag/jetty-{version}")
969984
}
970985
}
@@ -1174,6 +1189,7 @@ bom {
11741189
}
11751190
links {
11761191
site("https://www.liquibase.com")
1192+
javadoc("https://javadoc.io/doc/org.liquibase/liquibase-core/{version}")
11771193
releaseNotes("https://github.com/liquibase/liquibase/releases/tag/v{version}")
11781194
}
11791195
}
@@ -1185,6 +1201,8 @@ bom {
11851201
}
11861202
links {
11871203
site("https://logging.apache.org/log4j")
1204+
javadoc("log4j-api", version -> "https://logging.apache.org/log4j/%s.x/javadoc/log4j-api/index.html".formatted(version.major()))
1205+
javadoc("log4j-core", version -> "https://logging.apache.org/log4j/%s.x/javadoc/log4j-core/index.html".formatted(version.major()))
11881206
docs(version -> "https://logging.apache.org/log4j/%s.x/manual".formatted(version.major()))
11891207
releaseNotes("https://github.com/apache/logging-log4j2/releases/tag/rel%2F{version}")
11901208
}
@@ -1198,6 +1216,7 @@ bom {
11981216
}
11991217
links {
12001218
site("https://logback.qos.ch")
1219+
javadoc("https://logback.qos.ch/apidocs")
12011220
}
12021221
}
12031222
library("Lombok", "1.18.34") {
@@ -1208,6 +1227,7 @@ bom {
12081227
}
12091228
links {
12101229
site("https://projectlombok.org")
1230+
javadoc("https://projectlombok.org/api/")
12111231
}
12121232
}
12131233
library("MariaDB", "3.4.1") {
@@ -2328,6 +2348,8 @@ bom {
23282348
}
23292349
links {
23302350
site("https://www.thymeleaf.org/")
2351+
javadoc("thymeleaf", version -> "https://www.thymeleaf.org/apidocs/thymeleaf/%s".formatted(version), "org.thymeleaf")
2352+
javadoc("thymeleaf-spring6", version -> "https://www.thymeleaf.org/apidocs/thymeleaf-spring6/%s".formatted(version), "org.thymeleaf.spring6")
23312353
releaseNotes("https://github.com/thymeleaf/thymeleaf/releases/tag/thymeleaf-{version}")
23322354
}
23332355
}
@@ -2373,9 +2395,9 @@ bom {
23732395
}
23742396
links {
23752397
site("https://tomcat.apache.org")
2398+
javadoc(version -> "https://tomcat.apache.org/tomcat-%s.%s-doc/api".formatted(version.major(), version.minor()))
23762399
docs(version -> "https://tomcat.apache.org/tomcat-%s.%s-doc".formatted(version.major(), version.minor()))
2377-
releaseNotes(version -> "https://tomcat.apache.org/tomcat-%s.%s-doc/changelog.html"
2378-
.formatted(version.major(), version.minor()))
2400+
releaseNotes(version -> "https://tomcat.apache.org/tomcat-%s.%s-doc/changelog.html".formatted(version.major(), version.minor()))
23792401
}
23802402
}
23812403
library("UnboundID LDAPSDK", "6.0.11") {

0 commit comments

Comments
 (0)