Use internal attributes for values that aren't directly referenced
Update `AntoraAsciidocAttributes` so that internal attributes are available for use in `antora-asciidoc-attributes.properties`. These attributes don't end up in the final `antora.yml` file. This commit also restore the `-version` properties for Spring Data. Closes gh-43080
This commit is contained in:
parent
d0e9168de0
commit
30efd52082
|
@ -83,13 +83,14 @@ public class AntoraAsciidocAttributes {
|
|||
|
||||
public Map<String, String> get() {
|
||||
Map<String, String> attributes = new LinkedHashMap<>();
|
||||
Map<String, String> internal = new LinkedHashMap<>();
|
||||
addBuildTypeAttribute(attributes);
|
||||
addGitHubAttributes(attributes);
|
||||
addVersionAttributes(attributes);
|
||||
addVersionAttributes(attributes, internal);
|
||||
addArtifactAttributes(attributes);
|
||||
addUrlJava(attributes);
|
||||
addUrlLibraryLinkAttributes(attributes);
|
||||
addPropertyAttributes(attributes);
|
||||
addPropertyAttributes(attributes, internal);
|
||||
return attributes;
|
||||
}
|
||||
|
||||
|
@ -115,7 +116,7 @@ public class AntoraAsciidocAttributes {
|
|||
return versionRoot.substring(0, lastDot) + ".x";
|
||||
}
|
||||
|
||||
private void addVersionAttributes(Map<String, String> attributes) {
|
||||
private void addVersionAttributes(Map<String, String> attributes, Map<String, String> internal) {
|
||||
this.libraries.forEach((library) -> {
|
||||
String name = "version-" + library.getLinkRootName();
|
||||
String value = library.getVersion().toString();
|
||||
|
@ -126,29 +127,33 @@ public class AntoraAsciidocAttributes {
|
|||
addDependencyVersion(attributes, "jackson-annotations", "com.fasterxml.jackson.core:jackson-annotations");
|
||||
addDependencyVersion(attributes, "jackson-core", "com.fasterxml.jackson.core:jackson-core");
|
||||
addDependencyVersion(attributes, "jackson-databind", "com.fasterxml.jackson.core:jackson-databind");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-commons");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-couchbase");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-cassandra");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-elasticsearch");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-jdbc");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-jpa");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-mongodb");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-neo4j");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-r2dbc");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-rest", "spring-data-rest-core");
|
||||
addSpringDataDependencyVersion(attributes, "spring-data-ldap");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-commons");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-couchbase");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-cassandra");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-elasticsearch");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-jdbc");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-jpa");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-mongodb");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-neo4j");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-r2dbc");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-rest", "spring-data-rest-core");
|
||||
addSpringDataDependencyVersion(attributes, internal, "spring-data-ldap");
|
||||
}
|
||||
|
||||
private void addSpringDataDependencyVersion(Map<String, String> attributes, String artifactId) {
|
||||
addSpringDataDependencyVersion(attributes, artifactId, artifactId);
|
||||
private void addSpringDataDependencyVersion(Map<String, String> attributes, Map<String, String> internal,
|
||||
String artifactId) {
|
||||
addSpringDataDependencyVersion(attributes, internal, artifactId, artifactId);
|
||||
}
|
||||
|
||||
private void addSpringDataDependencyVersion(Map<String, String> attributes, String name, String artifactId) {
|
||||
String version = getVersion("org.springframework.data:" + artifactId);
|
||||
private void addSpringDataDependencyVersion(Map<String, String> attributes, Map<String, String> internal,
|
||||
String name, String artifactId) {
|
||||
String groupAndArtifactId = "org.springframework.data:" + artifactId;
|
||||
addDependencyVersion(attributes, name, groupAndArtifactId);
|
||||
String version = getVersion(groupAndArtifactId);
|
||||
String majorMinor = Arrays.stream(version.split("\\.")).limit(2).collect(Collectors.joining("."));
|
||||
String antoraVersion = version.endsWith(DASH_SNAPSHOT) ? majorMinor + DASH_SNAPSHOT : majorMinor;
|
||||
attributes.put("version-" + name + "-docs", antoraVersion);
|
||||
attributes.put("version-" + name + "-javadoc", majorMinor + ".x");
|
||||
internal.put("antoraversion-" + name, antoraVersion);
|
||||
internal.put("dotxversion-" + name, majorMinor + ".x");
|
||||
}
|
||||
|
||||
private void addDependencyVersion(Map<String, String> attributes, String name, String groupAndArtifactId) {
|
||||
|
@ -173,6 +178,7 @@ public class AntoraAsciidocAttributes {
|
|||
}
|
||||
|
||||
private void addUrlLibraryLinkAttributes(Map<String, String> attributes) {
|
||||
Map<String, String> packageAttributes = new LinkedHashMap<>();
|
||||
this.libraries.forEach((library) -> {
|
||||
String prefix = "url-" + library.getLinkRootName() + "-";
|
||||
library.getLinks().forEach((name, link) -> {
|
||||
|
@ -181,22 +187,24 @@ public class AntoraAsciidocAttributes {
|
|||
link.packages()
|
||||
.stream()
|
||||
.map(this::packageAttributeName)
|
||||
.forEach((packageAttributeName) -> attributes.put(packageAttributeName, "{" + linkName + "}"));
|
||||
.forEach((packageAttributeName) -> packageAttributes.put(packageAttributeName,
|
||||
"{" + linkName + "}"));
|
||||
});
|
||||
});
|
||||
attributes.putAll(packageAttributes);
|
||||
}
|
||||
|
||||
private String packageAttributeName(String packageName) {
|
||||
return "javadoc-location-" + packageName.replace('.', '-');
|
||||
}
|
||||
|
||||
private void addPropertyAttributes(Map<String, String> attributes) {
|
||||
private void addPropertyAttributes(Map<String, String> attributes, Map<String, String> internal) {
|
||||
Properties properties = new Properties() {
|
||||
|
||||
@Override
|
||||
public synchronized Object put(Object key, Object value) {
|
||||
// Put directly because order is important for us
|
||||
return attributes.put(key.toString(), value.toString());
|
||||
return attributes.put(key.toString(), resolve(value.toString(), internal));
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -208,4 +216,11 @@ public class AntoraAsciidocAttributes {
|
|||
}
|
||||
}
|
||||
|
||||
private String resolve(String value, Map<String, String> internal) {
|
||||
for (Map.Entry<String, String> entry : internal.entrySet()) {
|
||||
value = value.replace("{" + entry.getKey() + "}", entry.getValue());
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -35,34 +35,34 @@ url-paketo-docs=https://paketo.io/docs
|
|||
url-paketo-docs-java-buildpack={url-paketo-docs}/buildpacks/language-family-buildpacks/java
|
||||
url-spring-boot-for-apache-geode-docs=https://docs.spring.io/spring-boot-data-geode-build/2.0.x/reference/html5
|
||||
url-spring-boot-for-apache-geode-site=https://github.com/spring-projects/spring-boot-data-geode
|
||||
url-spring-data-cassandra-javadoc=https://docs.spring.io/spring-data/cassandra/docs/{version-spring-data-cassandra-javadoc}/api
|
||||
url-spring-data-cassandra-javadoc=https://docs.spring.io/spring-data/cassandra/docs/{dotxversion-spring-data-cassandra}/api
|
||||
url-spring-data-cassandra-site=https://spring.io/projects/spring-data-cassandra
|
||||
url-spring-data-cassandra-docs=https://docs.spring.io/spring-data/cassandra/reference/{version-spring-data-cassandra-docs}
|
||||
url-spring-data-commons-javadoc=https://docs.spring.io/spring-data/commons/docs/{version-spring-data-commons-javadoc}/api
|
||||
url-spring-data-couchbase-docs=https://docs.spring.io/spring-data/couchbase/reference/{version-spring-data-couchbase-docs}
|
||||
url-spring-data-cassandra-docs=https://docs.spring.io/spring-data/cassandra/reference/{antoraversion-spring-data-cassandra}
|
||||
url-spring-data-commons-javadoc=https://docs.spring.io/spring-data/commons/docs/{dotxversion-spring-data-commons}/api
|
||||
url-spring-data-couchbase-docs=https://docs.spring.io/spring-data/couchbase/reference/{antoraversion-spring-data-couchbase}
|
||||
url-spring-data-couchbase-site=https://spring.io/projects/spring-data-couchbase
|
||||
url-spring-data-couchbase-javadoc=https://docs.spring.io/spring-data/couchbase/docs/{version-spring-data-couchbase-javadoc}/api
|
||||
url-spring-data-elasticsearch-javadoc=https://docs.spring.io/spring-data/elasticsearch/docs/{version-spring-data-elasticsearch-javadoc}/api
|
||||
url-spring-data-elasticsearch-docs=https://docs.spring.io/spring-data/elasticsearch/reference/{version-spring-data-elasticsearch-docs}
|
||||
url-spring-data-couchbase-javadoc=https://docs.spring.io/spring-data/couchbase/docs/{dotxversion-spring-data-couchbase}/api
|
||||
url-spring-data-elasticsearch-javadoc=https://docs.spring.io/spring-data/elasticsearch/docs/{dotxversion-spring-data-elasticsearch}/api
|
||||
url-spring-data-elasticsearch-docs=https://docs.spring.io/spring-data/elasticsearch/reference/{antoraversion-spring-data-elasticsearch}
|
||||
url-spring-data-elasticsearch-site=https://spring.io/projects/spring-data-elasticsearch
|
||||
url-spring-data-envers-site=https://spring.io/projects/spring-data-envers
|
||||
url-spring-data-geode-site=https://spring.io/projects/spring-data-geode
|
||||
url-spring-data-jdbc-docs=https://docs.spring.io/spring-data/relational/reference/{version-spring-data-jdbc-docs}
|
||||
url-spring-data-jpa-javadoc=https://docs.spring.io/spring-data/jpa/docs/{version-spring-data-jpa-javadoc}/api
|
||||
url-spring-data-jdbc-docs=https://docs.spring.io/spring-data/relational/reference/{antoraversion-spring-data-jdbc}
|
||||
url-spring-data-jpa-javadoc=https://docs.spring.io/spring-data/jpa/docs/{dotxversion-spring-data-jpa}/api
|
||||
url-spring-data-jpa-site=https://spring.io/projects/spring-data-jpa
|
||||
url-spring-data-jpa-docs=https://docs.spring.io/spring-data/jpa/reference/{version-spring-data-jpa-docs}
|
||||
url-spring-data-jpa-docs=https://docs.spring.io/spring-data/jpa/reference/{antoraversion-spring-data-jpa}
|
||||
url-spring-data-ldap-site=https://spring.io/projects/spring-data-ldap
|
||||
url-spring-data-ldap-docs=https://docs.spring.io/spring-data/ldap/reference/{version-spring-data-ldap-docs}
|
||||
url-spring-data-mongodb-javadoc=https://docs.spring.io/spring-data/mongodb/docs/{version-spring-data-mongodb-javadoc}/api
|
||||
url-spring-data-ldap-docs=https://docs.spring.io/spring-data/ldap/reference/{antoraversion-spring-data-ldap}
|
||||
url-spring-data-mongodb-javadoc=https://docs.spring.io/spring-data/mongodb/docs/{dotxversion-spring-data-mongodb}/api
|
||||
url-spring-data-mongodb-site=https://spring.io/projects/spring-data-mongodb
|
||||
url-spring-data-mongodb-docs=https://docs.spring.io/spring-data/mongodb/reference/{version-spring-data-mongodb-docs}
|
||||
url-spring-data-neo4j-javadoc=https://docs.spring.io/spring-data/neo4j/docs/{version-spring-data-neo4j-javadoc}/api
|
||||
url-spring-data-neo4j-docs=https://docs.spring.io/spring-data/neo4j/reference/{version-spring-data-neo4j-docs}
|
||||
url-spring-data-mongodb-docs=https://docs.spring.io/spring-data/mongodb/reference/{antoraversion-spring-data-mongodb}
|
||||
url-spring-data-neo4j-javadoc=https://docs.spring.io/spring-data/neo4j/docs/{dotxversion-spring-data-neo4j}/api
|
||||
url-spring-data-neo4j-docs=https://docs.spring.io/spring-data/neo4j/reference/{antoraversion-spring-data-neo4j}
|
||||
url-spring-data-neo4j-site=https://spring.io/projects/spring-data-neo4j
|
||||
url-spring-data-r2dbc-javadoc=https://docs.spring.io/spring-data/r2dbc/docs/{version-spring-data-r2dbc-javadoc}/api
|
||||
url-spring-data-r2dbc-docs=https://docs.spring.io/spring-data/relational/reference/{version-spring-data-r2dbc-docs}
|
||||
url-spring-data-r2dbc-javadoc=https://docs.spring.io/spring-data/r2dbc/docs/{dotxversion-spring-data-r2dbc}/api
|
||||
url-spring-data-r2dbc-docs=https://docs.spring.io/spring-data/relational/reference/{antoraversion-spring-data-r2dbc}
|
||||
url-spring-data-redis-site=https://spring.io/projects/spring-data-redis
|
||||
url-spring-data-rest-javadoc=https://docs.spring.io/spring-data/rest/docs/{version-spring-data-rest-javadoc}/api
|
||||
url-spring-data-rest-javadoc=https://docs.spring.io/spring-data/rest/docs/{dotxversion-spring-data-rest}/api
|
||||
url-spring-data-site=https://spring.io/projects/spring-data
|
||||
url-jackson-annotations=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-annotations/{version-jackson-annotations}
|
||||
url-jackson-core=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/{version-jackson-core}
|
||||
|
|
|
@ -97,16 +97,22 @@ class AntoraAsciidocAttributesTests {
|
|||
void versionReferenceFromSpringDataDependencyReleaseVersion() {
|
||||
AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes("1.2.3", true, BuildType.OPEN_SOURCE, null,
|
||||
mockDependencyVersions("3.2.5"), null);
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb-docs", "3.2");
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb-javadoc", "3.2.x");
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb", "3.2.5");
|
||||
assertThat(attributes.get()).containsEntry("url-spring-data-mongodb-docs",
|
||||
"https://docs.spring.io/spring-data/mongodb/reference/3.2");
|
||||
assertThat(attributes.get()).containsEntry("url-spring-data-mongodb-javadoc",
|
||||
"https://docs.spring.io/spring-data/mongodb/docs/3.2.x/api");
|
||||
}
|
||||
|
||||
@Test
|
||||
void versionReferenceFromSpringDataDependencySnapshotVersion() {
|
||||
AntoraAsciidocAttributes attributes = new AntoraAsciidocAttributes("1.2.3", true, BuildType.OPEN_SOURCE, null,
|
||||
mockDependencyVersions("3.2.0-SNAPSHOT"), null);
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb-docs", "3.2-SNAPSHOT");
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb-javadoc", "3.2.x");
|
||||
assertThat(attributes.get()).containsEntry("version-spring-data-mongodb", "3.2.0-SNAPSHOT");
|
||||
assertThat(attributes.get()).containsEntry("url-spring-data-mongodb-docs",
|
||||
"https://docs.spring.io/spring-data/mongodb/reference/3.2-SNAPSHOT");
|
||||
assertThat(attributes.get()).containsEntry("url-spring-data-mongodb-javadoc",
|
||||
"https://docs.spring.io/spring-data/mongodb/docs/3.2.x/api");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue