From d9d6f8149fd9dbbbd9bdd2056242ba2c166a7d3d Mon Sep 17 00:00:00 2001 From: Abel Salgado Romero Date: Tue, 13 Feb 2024 20:05:11 +0100 Subject: [PATCH] WIP --- asciidoctor-converter-doxia-module/pom.xml | 2 +- .../src/it/maven-site-plugin/pom.xml | 4 +- .../it/maven-site-plugin/src/site/site.xml | 2 +- .../site/AsciidoctorConverterDoxiaParser.java | 15 +++-- ...AsciidoctorConverterDoxiaParserModule.java | 6 +- asciidoctor-parser-doxia-module/pom.xml | 2 +- .../src/it/maven-site-plugin/pom.xml | 4 +- .../it/maven-site-plugin/src/site/site.xml | 3 +- .../parser/AsciidoctorAstDoxiaParser.java | 38 +++++------ .../AsciidoctorAstDoxiaParserModule.java | 6 +- .../processors/SectionNodeProcessor.java | 64 ++++++++----------- .../test/TestNodeProcessorFactory.java | 4 +- .../pages/compatibility-matrix.adoc | 2 +- pom.xml | 5 +- 14 files changed, 78 insertions(+), 79 deletions(-) diff --git a/asciidoctor-converter-doxia-module/pom.xml b/asciidoctor-converter-doxia-module/pom.xml index 14fd010e..6be7a007 100644 --- a/asciidoctor-converter-doxia-module/pom.xml +++ b/asciidoctor-converter-doxia-module/pom.xml @@ -46,7 +46,7 @@ org.apache.maven.doxia doxia-site-renderer - 1.11.1 + ${doxia.version} test diff --git a/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/pom.xml b/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/pom.xml index df89a4b6..f02ac1c5 100644 --- a/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/pom.xml +++ b/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/pom.xml @@ -22,14 +22,14 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.4.5 + 3.5.0 org.apache.maven.plugins maven-site-plugin - 3.12.1 + 4.0.0-M13 ${project.basedir}/src/site/asciidoc diff --git a/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/src/site/site.xml b/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/src/site/site.xml index 71ea0778..93872048 100644 --- a/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/src/site/site.xml +++ b/asciidoctor-converter-doxia-module/src/it/maven-site-plugin/src/site/site.xml @@ -14,6 +14,6 @@ org.apache.maven.skins maven-fluido-skin - 1.12.0 + 2.0.0-M6 diff --git a/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParser.java b/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParser.java index d2f8af37..7203b700 100644 --- a/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParser.java +++ b/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParser.java @@ -5,7 +5,6 @@ import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.logging.Logger; import org.apache.maven.doxia.parser.AbstractTextParser; import org.apache.maven.doxia.parser.ParseException; @@ -24,6 +23,8 @@ import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This class is used by the Doxia framework @@ -37,6 +38,8 @@ @Component(role = Parser.class, hint = AsciidoctorConverterDoxiaParser.ROLE_HINT) public class AsciidoctorConverterDoxiaParser extends AbstractTextParser { + private final Logger logger = LoggerFactory.getLogger(AsciidoctorConverterDoxiaParser.class); + @Inject protected Provider mavenProjectProvider; @@ -56,7 +59,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept source = ""; } } catch (IOException ex) { - getLog().error("Could not read AsciiDoc source: " + ex.getLocalizedMessage()); + logger.error("Could not read AsciiDoc source: " + ex.getLocalizedMessage()); return; } @@ -84,7 +87,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept try { // process log messages according to mojo configuration - new LogRecordsProcessors(logHandler, siteDirectory, errorMessage -> getLog().error(errorMessage)) + new LogRecordsProcessors(logHandler, siteDirectory, errorMessage -> logger.error(errorMessage)) .processLogRecords(memoryLogHandler); } catch (Exception exception) { throw new ParseException(exception.getMessage(), exception); @@ -100,10 +103,10 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept private MemoryLogHandler asciidoctorLoggingSetup(Asciidoctor asciidoctor, LogHandler logHandler, File siteDirectory) { final MemoryLogHandler memoryLogHandler = new MemoryLogHandler(logHandler.getOutputToConsole(), - logRecord -> getLog().info(LogRecordFormatter.format(logRecord, siteDirectory))); + logRecord -> logger.info(LogRecordFormatter.format(logRecord, siteDirectory))); asciidoctor.registerLogHandler(memoryLogHandler); // disable default console output of AsciidoctorJ - Logger.getLogger("asciidoctor").setUseParentHandlers(false); + java.util.logging.Logger.getLogger("asciidoctor").setUseParentHandlers(false); return memoryLogHandler; } @@ -145,7 +148,7 @@ private void requireLibrary(Asciidoctor asciidoctor, String require) { try { asciidoctor.requireLibrary(require); } catch (Exception ex) { - getLog().error(ex.getLocalizedMessage()); + logger.error(ex.getLocalizedMessage()); } } } diff --git a/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParserModule.java b/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParserModule.java index cb39ac9a..ae83e2fb 100644 --- a/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParserModule.java +++ b/asciidoctor-converter-doxia-module/src/main/java/org/asciidoctor/maven/site/AsciidoctorConverterDoxiaParserModule.java @@ -1,8 +1,8 @@ package org.asciidoctor.maven.site; +import javax.inject.Named; + import org.apache.maven.doxia.parser.module.AbstractParserModule; -import org.apache.maven.doxia.parser.module.ParserModule; -import org.codehaus.plexus.component.annotations.Component; /** * This class is the entry point for integration with the Maven Site Plugin @@ -12,7 +12,7 @@ * * @author jdlee */ -@Component(role = ParserModule.class, hint = AsciidoctorConverterDoxiaParser.ROLE_HINT) +@Named(AsciidoctorConverterDoxiaParser.ROLE_HINT) public class AsciidoctorConverterDoxiaParserModule extends AbstractParserModule { /** diff --git a/asciidoctor-parser-doxia-module/pom.xml b/asciidoctor-parser-doxia-module/pom.xml index 2817dbbc..0858d5c5 100644 --- a/asciidoctor-parser-doxia-module/pom.xml +++ b/asciidoctor-parser-doxia-module/pom.xml @@ -51,7 +51,7 @@ org.apache.maven.doxia doxia-site-renderer - 1.11.1 + ${doxia.version} test diff --git a/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/pom.xml b/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/pom.xml index 2ab11cb7..025e5409 100644 --- a/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/pom.xml +++ b/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/pom.xml @@ -17,13 +17,13 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.4.5 + 3.5.0 org.apache.maven.plugins maven-site-plugin - 3.12.1 + 4.0.0-M13 ${project.basedir}/src/site/asciidoc diff --git a/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/src/site/site.xml b/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/src/site/site.xml index 9ae5a719..e339f0d2 100644 --- a/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/src/site/site.xml +++ b/asciidoctor-parser-doxia-module/src/it/maven-site-plugin/src/site/site.xml @@ -9,9 +9,10 @@ ${reports} + org.apache.maven.skins maven-fluido-skin - 1.12.0 + 2.0.0-M8 diff --git a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParser.java b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParser.java index ebe72db0..3a7da6cf 100644 --- a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParser.java +++ b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParser.java @@ -1,15 +1,14 @@ package org.asciidoctor.maven.site.parser; import javax.inject.Inject; +import javax.inject.Named; import javax.inject.Provider; import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.logging.Logger; import org.apache.maven.doxia.parser.AbstractTextParser; import org.apache.maven.doxia.parser.ParseException; -import org.apache.maven.doxia.parser.Parser; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.project.MavenProject; import org.asciidoctor.Asciidoctor; @@ -23,14 +22,15 @@ import org.asciidoctor.maven.log.LogRecordFormatter; import org.asciidoctor.maven.log.LogRecordsProcessors; import org.asciidoctor.maven.log.MemoryLogHandler; -import org.asciidoctor.maven.site.HeaderMetadata; import org.asciidoctor.maven.site.HeadParser; +import org.asciidoctor.maven.site.HeaderMetadata; import org.asciidoctor.maven.site.SiteConversionConfiguration; import org.asciidoctor.maven.site.SiteConversionConfigurationParser; import org.asciidoctor.maven.site.SiteLogHandlerDeserializer; -import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static org.asciidoctor.maven.commons.StringUtils.isNotBlank; @@ -42,9 +42,11 @@ * @author abelsromero * @since 3.0.0 */ -@Component(role = Parser.class, hint = AsciidoctorAstDoxiaParser.ROLE_HINT) +@Named(AsciidoctorAstDoxiaParser.ROLE_HINT) public class AsciidoctorAstDoxiaParser extends AbstractTextParser { + private final Logger logger = LoggerFactory.getLogger(AsciidoctorAstDoxiaParser.class); + @Inject protected Provider mavenProjectProvider; @@ -64,7 +66,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept source = ""; } } catch (IOException ex) { - getLog().error("Could not read AsciiDoc source: " + ex.getLocalizedMessage()); + logger.error("Could not read AsciiDoc source: " + ex.getLocalizedMessage()); return; } @@ -79,7 +81,7 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept final Asciidoctor asciidoctor = Asciidoctor.Factory.create(); SiteConversionConfiguration conversionConfig = new SiteConversionConfigurationParser(project) - .processAsciiDocConfig(siteConfig, defaultOptions(siteDirectory), defaultAttributes()); + .processAsciiDocConfig(siteConfig, defaultOptions(siteDirectory), defaultAttributes()); for (String require : conversionConfig.getRequires()) { requireLibrary(asciidoctor, require); } @@ -88,14 +90,14 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept final MemoryLogHandler memoryLogHandler = asciidoctorLoggingSetup(asciidoctor, logHandler, siteDirectory); if (isNotBlank(reference)) - getLog().debug("Document loaded: " + reference); + logger.debug("Document loaded: " + reference); Document document = asciidoctor.load(source, conversionConfig.getOptions()); try { // process log messages according to mojo configuration - new LogRecordsProcessors(logHandler, siteDirectory, errorMessage -> getLog().error(errorMessage)) - .processLogRecords(memoryLogHandler); + new LogRecordsProcessors(logHandler, siteDirectory, errorMessage -> logger.error(errorMessage)) + .processLogRecords(memoryLogHandler); } catch (Exception exception) { throw new ParseException(exception.getMessage(), exception); @@ -116,10 +118,10 @@ public void parse(Reader reader, Sink sink, String reference) throws ParseExcept private MemoryLogHandler asciidoctorLoggingSetup(Asciidoctor asciidoctor, LogHandler logHandler, File siteDirectory) { final MemoryLogHandler memoryLogHandler = new MemoryLogHandler(logHandler.getOutputToConsole(), - logRecord -> getLog().info(LogRecordFormatter.format(logRecord, siteDirectory))); + logRecord -> logger.info(LogRecordFormatter.format(logRecord, siteDirectory))); asciidoctor.registerLogHandler(memoryLogHandler); // disable default console output of AsciidoctorJ - Logger.getLogger("asciidoctor").setUseParentHandlers(false); + java.util.logging.Logger.getLogger("asciidoctor").setUseParentHandlers(false); return memoryLogHandler; } @@ -145,15 +147,15 @@ protected File resolveSiteDirectory(MavenProject project, Xpp3Dom siteConfig) { protected OptionsBuilder defaultOptions(File siteDirectory) { return Options.builder() - .backend("xhtml") - .safe(SafeMode.UNSAFE) - .baseDir(new File(siteDirectory, ROLE_HINT)); + .backend("xhtml") + .safe(SafeMode.UNSAFE) + .baseDir(new File(siteDirectory, ROLE_HINT)); } protected AttributesBuilder defaultAttributes() { return Attributes.builder() - .attribute("idprefix", "@") - .attribute("showtitle", "@"); + .attribute("idprefix", "@") + .attribute("showtitle", "@"); } private void requireLibrary(Asciidoctor asciidoctor, String require) { @@ -161,7 +163,7 @@ private void requireLibrary(Asciidoctor asciidoctor, String require) { try { asciidoctor.requireLibrary(require); } catch (Exception ex) { - getLog().error(ex.getLocalizedMessage()); + logger.error(ex.getLocalizedMessage()); } } } diff --git a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParserModule.java b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParserModule.java index 0ecd381d..1d1a7292 100644 --- a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParserModule.java +++ b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/AsciidoctorAstDoxiaParserModule.java @@ -1,8 +1,8 @@ package org.asciidoctor.maven.site.parser; +import javax.inject.Named; + import org.apache.maven.doxia.parser.module.AbstractParserModule; -import org.apache.maven.doxia.parser.module.ParserModule; -import org.codehaus.plexus.component.annotations.Component; /** * This class is the entry point for integration with the Maven Site Plugin @@ -13,7 +13,7 @@ * @author abelsromero * @since 3.0.0 */ -@Component(role = ParserModule.class, hint = AsciidoctorAstDoxiaParser.ROLE_HINT) +@Named(AsciidoctorAstDoxiaParser.ROLE_HINT) public class AsciidoctorAstDoxiaParserModule extends AbstractParserModule { /** diff --git a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/SectionNodeProcessor.java b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/SectionNodeProcessor.java index c637fbb1..5fd4a0f2 100644 --- a/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/SectionNodeProcessor.java +++ b/asciidoctor-parser-doxia-module/src/main/java/org/asciidoctor/maven/site/parser/processors/SectionNodeProcessor.java @@ -5,6 +5,8 @@ import org.asciidoctor.ast.StructuralNode; import org.asciidoctor.jruby.ast.impl.SectionImpl; import org.asciidoctor.maven.site.parser.NodeProcessor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Section title processor. @@ -15,6 +17,8 @@ */ public class SectionNodeProcessor extends AbstractSinkNodeProcessor implements NodeProcessor { + private final Logger logger = LoggerFactory.getLogger(SectionNodeProcessor.class); + /** * Constructor. * @@ -36,45 +40,33 @@ public void process(StructuralNode node) { private void sectionTitle(Sink sink, int level, String title, Section node) { final String formattedTitle = formatTitle(title, node); - switch (level) { - case 0: - // Kept for completeness, real document title is treated in - // DocumentNodeProcessor - sink.rawText("

" + formattedTitle + "

"); - break; - case 1: - sink.sectionTitle1(); - sink.text(formattedTitle); - sink.sectionTitle1_(); - break; - case 2: - sink.sectionTitle2(); - sink.text(formattedTitle); - sink.sectionTitle2_(); - break; - case 3: - sink.sectionTitle3(); - sink.text(formattedTitle); - sink.sectionTitle3_(); - break; - case 4: - sink.sectionTitle4(); - sink.text(formattedTitle); - sink.sectionTitle4_(); - break; - case 5: - sink.sectionTitle5(); - sink.text(formattedTitle); - sink.sectionTitle5_(); - break; - case 6: - sink.sectionTitle6(); - sink.text(formattedTitle); - sink.sectionTitle6_(); - break; + + if (level == 0) { + // Kept for completeness, real document title is treated in + // DocumentNodeProcessor + sink.sectionTitle1(); + sink.text(formattedTitle); + sink.sectionTitle1_(); + } else { + // Asciidoctor supports up o 6 levels, but Xhtml5BaseSink only up to 5 + int siteLevel = level + 1; + if (level >= 5) { + // TODO generate code manually or request change + logger.warn("Site module does not support level 6 sections. Re-writing as 5"); + siteLevel = 5; + } + sink.sectionTitle(siteLevel, null); + anchor(sink, node); + sink.text(formattedTitle); + sink.sectionTitle_(siteLevel); } } + private void anchor(Sink sink, Section node) { + sink.anchor(node.getId()); + sink.anchor_(); + } + private String formatTitle(String title, Section node) { final Boolean numbered = node.isNumbered(); final Long sectnumlevels = getSectnumlevels(node); diff --git a/asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/test/TestNodeProcessorFactory.java b/asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/test/TestNodeProcessorFactory.java index 875e5404..f94cedf3 100644 --- a/asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/test/TestNodeProcessorFactory.java +++ b/asciidoctor-parser-doxia-module/src/test/java/org/asciidoctor/maven/site/parser/processors/test/TestNodeProcessorFactory.java @@ -5,8 +5,6 @@ import lombok.SneakyThrows; import org.apache.commons.lang3.tuple.Pair; import org.apache.maven.doxia.sink.Sink; -import org.apache.maven.doxia.siterenderer.RenderingContext; -import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink; import org.asciidoctor.maven.site.parser.NodeProcessor; import org.mockito.Mockito; @@ -20,6 +18,6 @@ public static Pair create(Class clazz) { } public static Sink createSink() { - return new SiteRendererSink(Mockito.mock(RenderingContext.class)); + return new SiteRendererSink(Mockito.mock(DocumentRendetingContext.class)); } } diff --git a/docs/modules/site-integration/pages/compatibility-matrix.adoc b/docs/modules/site-integration/pages/compatibility-matrix.adoc index 3d43d1d0..d0a42cb1 100644 --- a/docs/modules/site-integration/pages/compatibility-matrix.adoc +++ b/docs/modules/site-integration/pages/compatibility-matrix.adoc @@ -11,7 +11,7 @@ Since v3.x.x the Asciidoctor Maven Plugin has been split into independent compon |Asciidoctor Doxia Module | Maven Site Plugin | Supported |v3.x.x -|v3.1x.x +|v3.1x.x ~ v4.x.x |Yes |=== diff --git a/pom.xml b/pom.xml index ae616207..6f720e99 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,10 @@ UTF-8 11 3.9.6 - 1.12.0 + + 2.0.0-M9 2.2.0 2.5.11 9.4.5.0