This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch feature/only-warn-for-duplicate-anchor-names in repository https://gitbox.apache.org/repos/asf/maven-doxia.git
commit 887bd2542f2aaad5c4d5e59c0f72f434dc7971ea Author: Konrad Windszus <k...@apache.org> AuthorDate: Tue Mar 12 18:00:22 2024 +0100 [DOXIA-732] Don't fail for duplicate anchor names Emit warning with location prefix Pass document locator through SinkWrappers correctly --- .../java/org/apache/maven/doxia/sink/impl/SinkWrapper.java | 12 ++++++++++++ .../maven/doxia/sink/impl/UniqueAnchorNamesValidator.java | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkWrapper.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkWrapper.java index 8f582052..05b28b49 100644 --- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkWrapper.java +++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkWrapper.java @@ -19,6 +19,7 @@ package org.apache.maven.doxia.sink.impl; import org.apache.maven.doxia.parser.Parser; +import org.apache.maven.doxia.sink.Locator; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributes; @@ -526,4 +527,15 @@ public class SinkWrapper extends AbstractSink { public void close() { delegate.close(); } + + @Override + public void setDocumentLocator(Locator locator) { + delegate.setDocumentLocator(locator); + } + + @Override + public Locator getDocumentLocator() { + return delegate.getDocumentLocator(); + } + } diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/UniqueAnchorNamesValidator.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/UniqueAnchorNamesValidator.java index eaf8f4a0..9dcca2e6 100644 --- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/UniqueAnchorNamesValidator.java +++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/UniqueAnchorNamesValidator.java @@ -23,12 +23,16 @@ import java.util.Set; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Validates that each anchor name only appears once per document. Otherwise fails with an {@link IllegalStateException}. */ public class UniqueAnchorNamesValidator extends SinkWrapper { + private static final Logger LOGGER = LoggerFactory.getLogger(UniqueAnchorNamesValidator.class); + private final Set<String> usedAnchorNames; public UniqueAnchorNamesValidator(Sink sink) { @@ -46,8 +50,10 @@ public class UniqueAnchorNamesValidator extends SinkWrapper { private void enforceUniqueAnchor(String name) { if (!usedAnchorNames.add(name)) { - throw new IllegalStateException( - getLocationLogPrefix() + "Anchor name \"" + name + "\" used more than once"); + LOGGER.warn( + "{}Anchor name \"{}\" used more than once", + getLocationLogPrefix(), + name); } } }