You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/09/03 22:34:35 UTC

(maven-doxia) branch doxia-1093-linebreaker-commons-io created (now 57e5c457)

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a change to branch doxia-1093-linebreaker-commons-io
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git


      at 57e5c457 Read parser sources without commons-io

This branch includes the following new commits:

     new c5918976 Deprecate the unused LineBreaker for removal in 2.3.0
     new 57e5c457 Read parser sources without commons-io

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(maven-doxia) 02/02: Read parser sources without commons-io

Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch doxia-1093-linebreaker-commons-io
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 57e5c457a1fe2e5ef239d539b91156d5feb7c285
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Fri Sep 4 00:34:17 2026 +0200

    Read parser sources without commons-io
    
    The seven IOUtils call sites become plain copy loops; the Java 8 baseline rules
    out Reader.transferTo and InputStream.readAllBytes. commons-io drops to test
    scope in four modules and off the compile classpath of all six.
---
 doxia-core/pom.xml                                    |  5 +++--
 .../apache/maven/doxia/parser/AbstractXmlParser.java  | 19 ++++++++++++++++---
 doxia-modules/doxia-module-apt/pom.xml                |  4 ----
 .../org/apache/maven/doxia/module/apt/AptParser.java  |  7 +++++--
 doxia-modules/doxia-module-fml/pom.xml                |  5 +++--
 .../org/apache/maven/doxia/module/fml/FmlParser.java  |  7 +++++--
 doxia-modules/doxia-module-markdown/pom.xml           |  1 +
 .../maven/doxia/module/markdown/MarkdownParser.java   |  8 ++++++--
 doxia-modules/doxia-module-xdoc/pom.xml               |  9 +++++----
 .../apache/maven/doxia/module/xdoc/XdocParser.java    |  7 +++++--
 doxia-modules/doxia-module-xhtml5/pom.xml             |  4 ----
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java       |  7 +++++--
 12 files changed, 54 insertions(+), 29 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index a6e89865..c711847c 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -47,12 +47,13 @@ under the License.
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-xml</artifactId>
     </dependency>
+
+    <!-- test -->
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
+      <scope>test</scope>
     </dependency>
-
-    <!-- test -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-testing</artifactId>
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
index 63375a46..e94a2be6 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
@@ -20,10 +20,12 @@ package org.apache.maven.doxia.parser;
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
 import java.io.StringReader;
+import java.io.StringWriter;
 import java.net.URI;
 import java.net.URL;
 import java.nio.file.Paths;
@@ -34,7 +36,6 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.sink.Sink;
@@ -109,7 +110,13 @@ public abstract class AbstractXmlParser extends AbstractParser implements XmlMar
         if (isValidate()) {
             String content;
             try {
-                content = IOUtils.toString(new BufferedReader(src));
+                StringWriter contentWriter = new StringWriter();
+                char[] buffer = new char[8192];
+                int n;
+                while ((n = src.read(buffer)) != -1) {
+                    contentWriter.write(buffer, 0, n);
+                }
+                content = contentWriter.toString();
             } catch (IOException e) {
                 throw new ParseException("Error reading the model", e);
             }
@@ -717,7 +724,13 @@ public abstract class AbstractXmlParser extends AbstractParser implements XmlMar
                 if (is == null) {
                     throw new SAXException("Cannot open stream from the url: " + url);
                 }
-                return IOUtils.toByteArray(is);
+                ByteArrayOutputStream out = new ByteArrayOutputStream();
+                byte[] buffer = new byte[8192];
+                int n;
+                while ((n = is.read(buffer)) != -1) {
+                    out.write(buffer, 0, n);
+                }
+                return out.toByteArray();
             } catch (IOException e) {
                 throw new SAXException(e);
             }
diff --git a/doxia-modules/doxia-module-apt/pom.xml b/doxia-modules/doxia-module-apt/pom.xml
index e10bf0df..6bba0e7e 100644
--- a/doxia-modules/doxia-module-apt/pom.xml
+++ b/doxia-modules/doxia-module-apt/pom.xml
@@ -37,10 +37,6 @@ under the License.
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
     <dependency>
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
index f8cd9e71..54022f38 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
@@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.StringTokenizer;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
@@ -208,7 +207,11 @@ public class AptParser extends AbstractTextParser implements AptMarkup {
 
         try {
             StringWriter contentWriter = new StringWriter();
-            IOUtils.copy(source, contentWriter);
+            char[] buffer = new char[8192];
+            int n;
+            while ((n = source.read(buffer)) != -1) {
+                contentWriter.write(buffer, 0, n);
+            }
             sourceContent = contentWriter.toString();
         } catch (IOException e) {
             throw new AptParseException(e);
diff --git a/doxia-modules/doxia-module-fml/pom.xml b/doxia-modules/doxia-module-fml/pom.xml
index 9ba1057f..7d4eda1e 100644
--- a/doxia-modules/doxia-module-fml/pom.xml
+++ b/doxia-modules/doxia-module-fml/pom.xml
@@ -45,12 +45,13 @@ under the License.
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
+
+    <!-- test -->
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
+      <scope>test</scope>
     </dependency>
-
-    <!-- test -->
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-test-docs</artifactId>
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
index 11add66b..ef8669db 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
@@ -31,7 +31,6 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
@@ -91,7 +90,11 @@ public class FmlParser extends AbstractXmlParser implements FmlMarkup {
 
         try (Reader reader = source) {
             StringWriter contentWriter = new StringWriter();
-            IOUtils.copy(reader, contentWriter);
+            char[] buffer = new char[8192];
+            int n;
+            while ((n = reader.read(buffer)) != -1) {
+                contentWriter.write(buffer, 0, n);
+            }
             sourceContent = contentWriter.toString();
         } catch (IOException ex) {
             throw new ParseException("Error reading the input source", ex);
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 3cc932f1..69c94935 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -59,6 +59,7 @@ under the License.
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
+      <scope>test</scope>
     </dependency>
 
     <dependency>
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
index 091c5a65..06d15837 100644
--- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
@@ -50,7 +50,6 @@ import com.vladsch.flexmark.html.HtmlRenderer;
 import com.vladsch.flexmark.util.ast.Node;
 import com.vladsch.flexmark.util.ast.TextCollectingVisitor;
 import com.vladsch.flexmark.util.data.MutableDataSet;
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.markup.TextMarkup;
 import org.apache.maven.doxia.module.xhtml5.Xhtml5Parser;
@@ -284,7 +283,12 @@ public class MarkdownParser extends AbstractTextParser implements TextMarkup {
      */
     String toXhtml(Reader source) throws IOException {
         // Read the source
-        StringBuilder markdownText = new StringBuilder(IOUtils.toString(source));
+        StringBuilder markdownText = new StringBuilder();
+        char[] buffer = new char[8192];
+        int n;
+        while ((n = source.read(buffer)) != -1) {
+            markdownText.append(buffer, 0, n);
+        }
 
         // Now, build the HTML document
         StringBuilder html = new StringBuilder(1000);
diff --git a/doxia-modules/doxia-module-xdoc/pom.xml b/doxia-modules/doxia-module-xdoc/pom.xml
index bdee8cd4..b31ef437 100644
--- a/doxia-modules/doxia-module-xdoc/pom.xml
+++ b/doxia-modules/doxia-module-xdoc/pom.xml
@@ -41,16 +41,17 @@ under the License.
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-xml</artifactId>
     </dependency>
 
     <!-- test -->
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-test-docs</artifactId>
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
index 0bc8a14b..4a37432c 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
@@ -30,7 +30,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
@@ -90,7 +89,11 @@ public class XdocParser extends Xhtml1BaseParser implements XdocMarkup {
 
         try (Reader reader = source) {
             StringWriter contentWriter = new StringWriter();
-            IOUtils.copy(reader, contentWriter);
+            char[] buffer = new char[8192];
+            int n;
+            while ((n = reader.read(buffer)) != -1) {
+                contentWriter.write(buffer, 0, n);
+            }
             sourceContent = contentWriter.toString();
         } catch (IOException ex) {
             throw new ParseException("Error reading the input source", ex);
diff --git a/doxia-modules/doxia-module-xhtml5/pom.xml b/doxia-modules/doxia-module-xhtml5/pom.xml
index 4362744e..acdbb5ca 100644
--- a/doxia-modules/doxia-module-xhtml5/pom.xml
+++ b/doxia-modules/doxia-module-xhtml5/pom.xml
@@ -41,10 +41,6 @@ under the License.
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-xml</artifactId>
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
index 4cfae0af..1f0aad16 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
@@ -29,7 +29,6 @@ import java.io.StringWriter;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
@@ -269,7 +268,11 @@ public class Xhtml5Parser extends Xhtml5BaseParser implements Xhtml5Markup {
 
         try (Reader reader = source) {
             StringWriter contentWriter = new StringWriter();
-            IOUtils.copy(reader, contentWriter);
+            char[] buffer = new char[8192];
+            int n;
+            while ((n = reader.read(buffer)) != -1) {
+                contentWriter.write(buffer, 0, n);
+            }
             sourceContent = contentWriter.toString();
         } catch (IOException ex) {
             throw new ParseException("Error reading the input source", ex);


(maven-doxia) 01/02: Deprecate the unused LineBreaker for removal in 2.3.0

Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch doxia-1093-linebreaker-commons-io
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit c59189769d097e5bf494a72a54b2c61059f808dd
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Fri Sep 4 00:34:17 2026 +0200

    Deprecate the unused LineBreaker for removal in 2.3.0
    
    Nothing in Doxia or the Maven repositories calls it, and its write loop swallows
    every exception, so a failing writer would truncate output silently. Deprecated
    rather than deleted because the class is public API of a released module.
---
 doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
index 8c29c5da..c5fa5963 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
@@ -24,7 +24,11 @@ import java.io.Writer;
 
 /**
  * Allows to specify the line-length of an output writer.
+ *
+ * @deprecated no longer used by Doxia and scheduled for removal in 2.3.0. It also swallows every
+ * write failure, so a failing writer would produce a silently truncated file.
  */
+@Deprecated
 public class LineBreaker {
     /** The default maximal line length. */
     public static final int DEFAULT_MAX_LINE_LENGTH = 78;