Skip to content

Commit

Permalink
Remove asciidoctorj deprecated methods usage (#656)
Browse files Browse the repository at this point in the history
* Fix maven properties not being applied to site conversion when no config is present
* Refactor SiteConversionConfigurationParser to simplify code
* Remove the use of deprecated AsciidoctorJ methods
  • Loading branch information
abelsromero committed Jun 17, 2023
1 parent 5baa665 commit bbbd28a
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 77 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ For a detailed view of what has changed, refer to the {uri-repo}/commits/main[co

Bug Fixes::

* Fixed default value for eruby which caused a fail when using erb templates (#610)
* Upgrade Asciidoctorj to v2.5.10 and jRuby to v9.4.2.0 (#647)
* Fix default value for eruby which caused a fail when using erb templates (#610)
* Fix maven properties not being injected as attributes during site conversion (#656)

Improvements::

Expand All @@ -27,6 +27,7 @@ Improvements::
* Set minimal Maven version to v3.8.5 (#629)
* Replace deprecated 'headerFooter' by 'standalone' in configuration (#649)
* Remove internal use of 'destinationDir' AsciidoctorJ method (no changes for users) (#650)
* Upgrade Asciidoctorj to v2.5.10 and jRuby to v9.4.2.0 (#647)

Build / Infrastructure::

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,14 @@ protected File resolveSiteDirectory(MavenProject project, Xpp3Dom siteConfig) {
}

protected OptionsBuilder defaultOptions(File siteDirectory) {
return OptionsBuilder.options()
return Options.builder()
.backend("xhtml")
.safe(SafeMode.UNSAFE)
.baseDir(new File(siteDirectory, ROLE_HINT));
}

protected AttributesBuilder defaultAttributes() {
return AttributesBuilder.attributes()
return Attributes.builder()
.attribute("idprefix", "@")
.attribute("showtitle", "@");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,4 @@ public Options getOptions() {
public List<String> getRequires() {
return requires;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,14 @@

import org.apache.maven.project.MavenProject;
import org.asciidoctor.AttributesBuilder;
import org.asciidoctor.Options;
import org.asciidoctor.OptionsBuilder;
import org.asciidoctor.maven.commons.AsciidoctorHelper;
import org.asciidoctor.maven.commons.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand All @@ -29,21 +27,19 @@ public SiteConversionConfiguration processAsciiDocConfig(Xpp3Dom siteConfig,
OptionsBuilder presetOptions,
AttributesBuilder presetAttributes) {

if (siteConfig == null) {
OptionsBuilder options = presetOptions.attributes(presetAttributes);
return new SiteConversionConfiguration(options.get(), Collections.emptyList());
}
AsciidoctorHelper.addProperties(project.getProperties(), presetAttributes);

final Xpp3Dom asciidocConfig = siteConfig.getChild("asciidoc");
if (asciidocConfig == null) {
OptionsBuilder options = presetOptions.attributes(presetAttributes);
return new SiteConversionConfiguration(options.get(), Collections.emptyList());
}
final Xpp3Dom siteConfiguration = Optional.ofNullable(siteConfig)
.map(sc -> sc.getChild("asciidoc"))
.orElse(null);

AsciidoctorHelper.addProperties(project.getProperties(), presetAttributes);
if (siteConfiguration == null) {
final OptionsBuilder options = presetOptions.attributes(presetAttributes.build());
return new SiteConversionConfiguration(options.build(), Collections.emptyList());
}

final List<String> gemsToRequire = new ArrayList<>();
for (Xpp3Dom asciidocOpt : asciidocConfig.getChildren()) {
for (Xpp3Dom asciidocOpt : siteConfiguration.getChildren()) {
String optName = asciidocOpt.getName();

if ("requires".equals(optName)) {
Expand Down Expand Up @@ -83,15 +79,12 @@ public SiteConversionConfiguration processAsciiDocConfig(Xpp3Dom siteConfig,
}
}

return new SiteConversionConfiguration(presetOptions.attributes(presetAttributes).get(), gemsToRequire);
final Options options = presetOptions.attributes(presetAttributes.build()).build();
return new SiteConversionConfiguration(options, gemsToRequire);
}

private File resolveProjectDir(MavenProject project, String path) {
File filePath = new File(path);
if (!filePath.isAbsolute()) {
filePath = new File(project.getBasedir(), filePath.toString());
}
return filePath;
final File filePath = new File(path);
return !filePath.isAbsolute() ? new File(project.getBasedir(), filePath.toString()): filePath;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.apache.maven.model.Model;
import org.apache.maven.project.MavenProject;
import org.asciidoctor.Attributes;
import org.asciidoctor.AttributesBuilder;
import org.asciidoctor.Options;
import org.asciidoctor.OptionsBuilder;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.junit.jupiter.api.Test;
Expand All @@ -22,8 +24,8 @@ public class SiteConversionConfigurationParserTest {
public void should_return_default_configuration_when_site_xml_is_null() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();

// when
SiteConversionConfiguration configuration = new SiteConversionConfigurationParser(project)
Expand All @@ -40,8 +42,8 @@ public void should_return_default_configuration_when_site_xml_is_null() {
public void should_return_default_configuration_when_asciidoc_xml_is_null() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.siteNode()
.build();
// when
Expand All @@ -59,8 +61,8 @@ public void should_return_default_configuration_when_asciidoc_xml_is_null() {
public void should_return_simple_single_requires() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("requires")
.addChild("require", "gem")
Expand All @@ -82,8 +84,8 @@ public void should_return_simple_single_requires() {
public void should_return_multiple_requires() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("requires")
.addChild("require", "gem_1", "gem_2", "gem_3")
Expand All @@ -105,8 +107,8 @@ public void should_return_multiple_requires() {
public void should_return_multiple_requires_when_defined_in_single_element() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("requires")
.addChild("require", "gem_1,gem_2, gem_3")
Expand All @@ -128,8 +130,8 @@ public void should_return_multiple_requires_when_defined_in_single_element() {
public void should_remove_empty_and_blank_requires() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("requires")
.addChild("require", "gem_1,,gem_2", "", ",,", "gem_3")
Expand All @@ -151,14 +153,14 @@ public void should_remove_empty_and_blank_requires() {
public void should_return_attributes() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("attributes")
.addChild("imagesdir", "./images")
.parent().addChild("source-highlighter", "coderay")
.parent().addChild("sectnums")
.parent().addChild("toc", null)
.parent().addChild("toc")
.build();

// when
Expand All @@ -182,8 +184,8 @@ public void should_return_attributes() {
public void should_map_null_attributes_as_empty_string() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("attributes")
.addChild("toc", null)
Expand All @@ -208,8 +210,8 @@ public void should_map_null_attributes_as_empty_string() {
public void should_map_true_boolean_attribute_as_empty_string_value() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("attributes")
.addChild("toc", "true")
Expand All @@ -234,8 +236,8 @@ public void should_map_true_boolean_attribute_as_empty_string_value() {
public void should_map_false_boolean_attribute_as_null_value() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("attributes")
.addChild("toc", "false")
Expand All @@ -260,8 +262,8 @@ public void should_map_false_boolean_attribute_as_null_value() {
public void should_return_template_dirs_when_defined_as_templateDirs_dir() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("templateDirs")
.addChild("dir", "path")
Expand All @@ -288,8 +290,8 @@ public void should_return_template_dirs_when_defined_as_templateDirs_dir() {
public void should_return_template_dirs_when_defined_as_template_dirs_dir() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("template_dirs")
.addChild("dir", "path")
Expand All @@ -316,8 +318,8 @@ public void should_return_template_dirs_when_defined_as_template_dirs_dir() {
public void should_not_return_empty_template_dirs() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("template_dirs")
.addChild("dir", "")
Expand All @@ -339,8 +341,8 @@ public void should_not_return_empty_template_dirs() {
public void should_return_baseDir_dirs_when_defined_as_template_dirs_dir() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("baseDir", "path")
.build();
Expand All @@ -362,8 +364,8 @@ public void should_return_baseDir_dirs_when_defined_as_template_dirs_dir() {
public void should_return_any_configuration_inside_asciidoc_node_as_option() {
// given
final MavenProject project = fakeProject();
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode()
.addChild("option-1", "value-1")
.parent().addChild("option_2", "value-2")
Expand All @@ -389,14 +391,39 @@ public void should_return_any_configuration_inside_asciidoc_node_as_option() {
}

@Test
public void should_return_and_format_any_maven_project_property_as_attribute() {
public void should_return_and_format_any_maven_project_property_as_attribute_when_site_config_is_not_present() {
// given
final Map<String, String> projectProperties = new HashMap<>();
projectProperties.put("mvn.property-test1", "value-1");
projectProperties.put("mvn-property.test2", "value_2");
final MavenProject project = fakeProject(projectProperties);
OptionsBuilder emptyOptions = OptionsBuilder.options();
AttributesBuilder emptyAttributes = AttributesBuilder.attributes();
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();

// when
SiteConversionConfiguration configuration = new SiteConversionConfigurationParser(project)
.processAsciiDocConfig(null, emptyOptions, emptyAttributes);

// then
final Map<String, Object> optionsMap = configuration.getOptions().map();
assertThat(optionsMap)
.containsOnlyKeys(ATTRIBUTES);
Map attributes = (Map) optionsMap.get(ATTRIBUTES);
assertThat(attributes).containsExactlyInAnyOrderEntriesOf(map(
entry("mvn-property-test1", "value-1"),
entry("mvn-property-test2", "value_2")
));
}

@Test
public void should_return_and_format_any_maven_project_property_as_attribute_when_site_config_is_present() {
// given
final Map<String, String> projectProperties = new HashMap<>();
projectProperties.put("mvn.property-test1", "value-1");
projectProperties.put("mvn-property.test2", "value_2");
final MavenProject project = fakeProject(projectProperties);
OptionsBuilder emptyOptions = Options.builder();
AttributesBuilder emptyAttributes = Attributes.builder();
Xpp3Dom siteConfig = Xpp3DoomBuilder.asciidocNode().build();

// when
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ public void processSources(List<File> sourceFiles, ResourcesProcessor resourcesP
if (!uniquePaths.add(destinationPath))
getLog().warn("Duplicated destination found: overwriting file: " + destinationPath.getAbsolutePath());

convertFile(asciidoctor, optionsBuilder.asMap(), source);
convertFile(asciidoctor, optionsBuilder.build(), source);

try {
// process log messages according to mojo configuration
Expand Down Expand Up @@ -359,7 +359,7 @@ protected List<File> findSourceFiles(File sourceDirectory) {
finder.find(sourceDirectoryPath, sourceDocumentExtensions);
}

protected void convertFile(Asciidoctor asciidoctor, Map<String, Object> options, File f) {
protected void convertFile(Asciidoctor asciidoctor, Options options, File f) {
asciidoctor.convertFile(f, options);
logConvertedFile(f);
}
Expand All @@ -384,7 +384,7 @@ protected boolean ensureOutputExists() {
*/
protected OptionsBuilder createOptionsBuilder(AsciidoctorMojo configuration, AttributesBuilder attributesBuilder) {

final OptionsBuilder optionsBuilder = OptionsBuilder.options()
final OptionsBuilder optionsBuilder = Options.builder()
.backend(configuration.getBackend())
.safe(SafeMode.UNSAFE)
.standalone(configuration.standalone)
Expand All @@ -411,13 +411,10 @@ protected OptionsBuilder createOptionsBuilder(AsciidoctorMojo configuration, Att
if (!configuration.getTemplateDirs().isEmpty())
optionsBuilder.templateDirs(templateDirs.toArray(new File[]{}));

if (!attributesBuilder.asMap().isEmpty())
optionsBuilder.attributes(attributesBuilder);

optionsBuilder.attributes(attributesBuilder.build());
return optionsBuilder;
}


/**
* Creates an AttributesBuilder instance with the attributes defined in the configuration.
*
Expand All @@ -427,7 +424,7 @@ protected OptionsBuilder createOptionsBuilder(AsciidoctorMojo configuration, Att
*/
protected AttributesBuilder createAttributesBuilder(AsciidoctorMojo configuration, MavenProject mavenProject) {

final AttributesBuilder attributesBuilder = AttributesBuilder.attributes();
final AttributesBuilder attributesBuilder = Attributes.builder();

if (configuration.isEmbedAssets()) {
attributesBuilder.linkCss(false);
Expand Down

0 comments on commit bbbd28a

Please sign in to comment.