Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(v3.0.x) Remove asciidoctorj deprecated methods usage #656

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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