Skip to content

Commit fee9c89

Browse files
authored
Fix Builders (#651)
Bump Asciidoctorj to v3.0.x: * Fix pathing issues related to * Tests * Update extensions examples used for integration testing * Fix pathing issues (same as above ☝️ ) * Fix the use of deprecated Options and Attributes builders in 'asciidoctor-converter-doxia-module'
1 parent 37f4a47 commit fee9c89

File tree

11 files changed

+53
-35
lines changed

11 files changed

+53
-35
lines changed

CHANGELOG.adoc

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ For a detailed view of what has changed, refer to the {uri-repo}/commits/main[co
1616
Build / Infrastructure::
1717

1818
* Fix javadoc check flake in CI (#814)
19+
* Bump AsciidoctorJ to v3.0.0 (#651)
1920

2021
== v3.0.0 (2024-01-30)
2122

asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParser.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import org.apache.maven.doxia.sink.Sink;
1414
import org.apache.maven.project.MavenProject;
1515
import org.asciidoctor.Asciidoctor;
16+
import org.asciidoctor.Attributes;
1617
import org.asciidoctor.AttributesBuilder;
18+
import org.asciidoctor.Options;
1719
import org.asciidoctor.OptionsBuilder;
1820
import org.asciidoctor.SafeMode;
1921
import org.asciidoctor.maven.log.LogHandler;
@@ -128,14 +130,14 @@ protected File resolveSiteDirectory(MavenProject project, Xpp3Dom siteConfig) {
128130
}
129131

130132
protected OptionsBuilder defaultOptions(File siteDirectory) {
131-
return OptionsBuilder.options()
133+
return Options.builder()
132134
.backend("xhtml")
133135
.safe(SafeMode.UNSAFE)
134-
.baseDir(new File(siteDirectory, ROLE_HINT));
136+
.baseDir(new File(siteDirectory, ROLE_HINT).getAbsoluteFile());
135137
}
136138

137139
protected AttributesBuilder defaultAttributes() {
138-
return AttributesBuilder.attributes()
140+
return Attributes.builder()
139141
.attribute("idprefix", "@")
140142
.attribute("showtitle", "@");
141143
}

asciidoctor-maven-commons/src/main/java/org/asciidoctor/maven/site/SiteConversionConfigurationParser.java

+22-18
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package org.asciidoctor.maven.site;
22

3-
import java.io.File;
4-
import java.util.ArrayList;
5-
import java.util.Arrays;
6-
import java.util.Collections;
7-
import java.util.List;
8-
import java.util.Optional;
9-
import java.util.stream.Collectors;
10-
import java.util.stream.Stream;
11-
123
import org.apache.maven.project.MavenProject;
4+
import org.asciidoctor.Attributes;
135
import org.asciidoctor.AttributesBuilder;
146
import org.asciidoctor.Options;
157
import org.asciidoctor.OptionsBuilder;
168
import org.asciidoctor.maven.commons.AsciidoctorHelper;
179
import org.asciidoctor.maven.commons.StringUtils;
1810
import org.codehaus.plexus.util.xml.Xpp3Dom;
1911

12+
import java.io.File;
13+
import java.util.ArrayList;
14+
import java.util.Arrays;
15+
import java.util.Collections;
16+
import java.util.List;
17+
import java.util.stream.Collectors;
18+
import java.util.stream.Stream;
19+
2020
import static org.asciidoctor.maven.commons.StringUtils.isNotBlank;
2121

2222
public class SiteConversionConfigurationParser {
@@ -33,17 +33,21 @@ public SiteConversionConfiguration processAsciiDocConfig(Xpp3Dom siteConfig,
3333

3434
AsciidoctorHelper.addProperties(project.getProperties(), presetAttributes);
3535

36-
final Xpp3Dom siteConfiguration = Optional.ofNullable(siteConfig)
37-
.map(sc -> sc.getChild("asciidoc"))
38-
.orElse(null);
36+
final Attributes attributes = presetAttributes.build();
37+
38+
if (siteConfig == null) {
39+
final Options options = presetOptions.attributes(attributes).build();
40+
return new SiteConversionConfiguration(options, Collections.emptyList());
41+
}
3942

40-
if (siteConfiguration == null) {
41-
final OptionsBuilder options = presetOptions.attributes(presetAttributes.build());
42-
return new SiteConversionConfiguration(options.build(), Collections.emptyList());
43+
final Xpp3Dom asciidocConfig = siteConfig.getChild("asciidoc");
44+
if (asciidocConfig == null) {
45+
final Options options = presetOptions.attributes(attributes).build();
46+
return new SiteConversionConfiguration(options, Collections.emptyList());
4347
}
4448

4549
final List<String> gemsToRequire = new ArrayList<>();
46-
for (Xpp3Dom asciidocOpt : siteConfiguration.getChildren()) {
50+
for (Xpp3Dom asciidocOpt : asciidocConfig.getChildren()) {
4751
String optName = asciidocOpt.getName();
4852

4953
if ("requires".equals(optName)) {
@@ -83,12 +87,12 @@ public SiteConversionConfiguration processAsciiDocConfig(Xpp3Dom siteConfig,
8387
}
8488
}
8589

86-
final Options options = presetOptions.attributes(presetAttributes.build()).build();
90+
final Options options = presetOptions.attributes(attributes).build();
8791
return new SiteConversionConfiguration(options, gemsToRequire);
8892
}
8993

9094
private File resolveProjectDir(MavenProject project, String path) {
9195
final File filePath = new File(path);
92-
return !filePath.isAbsolute() ? new File(project.getBasedir(), filePath.toString()): filePath;
96+
return !filePath.isAbsolute() ? new File(project.getBasedir(), filePath.toString()).getAbsoluteFile() : filePath;
9397
}
9498
}

asciidoctor-maven-plugin/src/test/java/org/asciidoctor/maven/AsciidoctorMojoExtensionsTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import static java.util.Collections.singletonList;
2424
import static org.asciidoctor.maven.io.TestFilesHelper.newOutputTestDirectory;
25+
import static org.asciidoctor.maven.test.TestUtils.ResourceBuilder.excludeAll;
2526
import static org.asciidoctor.maven.test.TestUtils.mockAsciidoctorMojo;
2627
import static org.assertj.core.api.Assertions.assertThat;
2728

@@ -167,6 +168,7 @@ void should_convert_to_html_with_a_preprocessor() throws MojoFailureException, M
167168
mojo.backend = "html";
168169
mojo.sourceDirectory = srcDir;
169170
mojo.sourceDocumentName = "processors-sample.adoc";
171+
mojo.resources = excludeAll();
170172
mojo.outputDirectory = outputDir;
171173
mojo.standalone = true;
172174
mojo.extensions = Arrays.asList(extensionConfiguration(ChangeAttributeValuePreprocessor.class));

asciidoctor-maven-plugin/src/test/java/org/asciidoctor/maven/io/TestFilesHelper.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@ public class TestFilesHelper {
1111
public static final String TEST_OUTPUT_BASE_PATH = "target/test-outputs/";
1212

1313
public static File newOutputTestDirectory() {
14-
return createDirectory(TEST_OUTPUT_BASE_PATH + UUID.randomUUID());
14+
return normalize(createDirectory(TEST_OUTPUT_BASE_PATH + UUID.randomUUID()));
1515
}
1616

1717
public static File newOutputTestDirectory(String subDir) {
18-
return createDirectory(TEST_OUTPUT_BASE_PATH + subDir + "/" + UUID.randomUUID());
18+
return normalize(createDirectory(TEST_OUTPUT_BASE_PATH + subDir + "/" + UUID.randomUUID()));
19+
}
20+
21+
// Since v3.0.0, path must be absolute https://github.com/asciidoctor/asciidoctorj/pull/1249.
22+
// Note: in real Mojo execution, paths are always absolute.
23+
private static File normalize(File file) {
24+
return file.getAbsoluteFile();
1925
}
2026

2127
private static File createDirectory(String path) {

asciidoctor-maven-plugin/src/test/java/org/asciidoctor/maven/test/processors/ChangeAttributeValuePreprocessor.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.asciidoctor.ast.Document;
66
import org.asciidoctor.extension.Preprocessor;
77
import org.asciidoctor.extension.PreprocessorReader;
8+
import org.asciidoctor.extension.Reader;
89

910
public class ChangeAttributeValuePreprocessor extends Preprocessor {
1011

@@ -16,9 +17,10 @@ public ChangeAttributeValuePreprocessor(Map<String, Object> config) {
1617
}
1718

1819
@Override
19-
public void process(Document document, PreprocessorReader reader) {
20+
public Reader process(Document document, PreprocessorReader reader) {
2021
System.out.println("Processing " + this.getClass().getSimpleName());
2122
System.out.println("Processing: blocks found: " + document.getBlocks().size());
2223
document.getAttributes().put("author", AUTHOR_NAME);
24+
return reader;
2325
}
2426
}

asciidoctor-maven-plugin/src/test/java/org/asciidoctor/maven/test/processors/FailingPreprocessor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.asciidoctor.ast.Document;
66
import org.asciidoctor.extension.Preprocessor;
77
import org.asciidoctor.extension.PreprocessorReader;
8+
import org.asciidoctor.extension.Reader;
89

910
public class FailingPreprocessor extends Preprocessor {
1011

@@ -14,7 +15,7 @@ public FailingPreprocessor(Map<String, Object> config) {
1415
}
1516

1617
@Override
17-
public void process(Document document, PreprocessorReader reader) {
18+
public Reader process(Document document, PreprocessorReader reader) {
1819
System.out.println("Processing " + this.getClass().getSimpleName());
1920
System.out.println("Processing: blocks found: " + document.getBlocks().size());
2021
throw new RuntimeException("That's all folks");
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
package org.asciidoctor.maven.test.processors;
22

3+
import org.asciidoctor.ast.PhraseNode;
4+
import org.asciidoctor.ast.StructuralNode;
5+
import org.asciidoctor.extension.InlineMacroProcessor;
6+
37
import java.util.HashMap;
48
import java.util.Map;
59

6-
import org.asciidoctor.ast.ContentNode;
7-
import org.asciidoctor.extension.InlineMacroProcessor;
8-
910
public class ManpageInlineMacroProcessor extends InlineMacroProcessor {
1011

1112
public ManpageInlineMacroProcessor(String macroName) {
1213
super(macroName);
1314
}
1415

1516
@Override
16-
public String process(ContentNode parent, String target, Map<String, Object> attributes) {
17-
17+
public PhraseNode process(StructuralNode parent, String target, Map<String, Object> attributes) {
1818
final Map<String, Object> options = new HashMap<>();
1919
options.put("type", ":link");
2020
options.put("target", target + ".html");
21-
return createPhraseNode(parent, "anchor", target, attributes, options).convert();
21+
return createPhraseNode(parent, "anchor", target, attributes, options);
2222
}
2323
}

asciidoctor-maven-plugin/src/test/java/org/asciidoctor/maven/test/processors/UriIncludeProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void process(Document document, PreprocessorReader reader, String target,
2828
Map<String, Object> attributes) {
2929
System.out.println("Processing " + this.getClass().getSimpleName());
3030
final String content = readContent(target);
31-
reader.push_include(content, target, target, 1, attributes);
31+
reader.pushInclude(content, target, target, 1, attributes);
3232
}
3333

3434
private String readContent(String target) {

docs/modules/plugin/pages/compatibility-matrix.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ Versions not listed below are not supported, please consider upgrading.
2020
|Asciidoctor Maven Plugin | AsciidoctorJ | Supported
2121

2222
|v3.x.x
23-
|v2.x.x
23+
|v2.x.x, v3.x.x
2424
|Yes
2525

2626
|v2.2.x
2727
|v2.x.x
28-
|Yes
28+
|Yes (EOL Dec, 2015)
2929

3030
|===

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<maven.version>3.9.9</maven.version>
7474
<doxia.version>1.12.0</doxia.version>
7575
<plexus-component-metadata.version>2.2.0</plexus-component-metadata.version>
76-
<asciidoctorj.version>2.5.13</asciidoctorj.version>
76+
<asciidoctorj.version>3.0.0</asciidoctorj.version>
7777
<jruby.version>9.4.6.0</jruby.version>
7878
</properties>
7979

0 commit comments

Comments
 (0)