You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2025/03/01 20:00:50 UTC

(maven-changes-plugin) branch MCHANGES-467 created (now 835e0ad)

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

elharo pushed a change to branch MCHANGES-467
in repository https://gitbox.apache.org/repos/asf/maven-changes-plugin.git


      at 835e0ad  DO NOT MERGE Gemini "fix for MCHANGES-467

This branch includes the following new commits:

     new 835e0ad  DO NOT MERGE Gemini "fix for MCHANGES-467

The 1 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-changes-plugin) 01/01: DO NOT MERGE Gemini "fix for MCHANGES-467

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

elharo pushed a commit to branch MCHANGES-467
in repository https://gitbox.apache.org/repos/asf/maven-changes-plugin.git

commit 835e0ada3a844606d7146b632704144ceec6dc7a
Author: Elliotte Rusty Harold <el...@ibiblio.org>
AuthorDate: Sat Mar 1 14:59:57 2025 -0500

    DO NOT MERGE Gemini "fix for MCHANGES-467
---
 .../maven/plugins/changes/FeedGenerator.java       | 60 +++++++++++++++++++++-
 1 file changed, 58 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java b/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
index 7a9019e..40fddf2 100644
--- a/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
+++ b/src/main/java/org/apache/maven/plugins/changes/FeedGenerator.java
@@ -18,6 +18,7 @@
  */
 package org.apache.maven.plugins.changes;
 
+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.Writer;
 import java.text.DateFormat;
@@ -25,6 +26,7 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.io.OutputStream;
 import java.util.Locale;
 import java.util.ResourceBundle;
 
@@ -161,19 +163,42 @@ public class FeedGenerator {
     }
 
     /**
-     * Extract a feed and export it to a Writer.
+     * Extract a feed and export it to a Writer. This method is deprecated, use
+     * {@link #export(List, String, OutputStream)} instead.
      *
      * @param releases the List of Releases. Only the last release is used in the feed.
      * @param feedType The type of the feed to generate. See {@link #isSupportedFeedType(java.lang.String)} for
      *            supported values.
      * @param writer a Writer. Note that this is not flushed nor closed upon exit.
      * @throws IOException if an error occurs during export
+     * @deprecated Use {@link #export(List, String, OutputStream)} instead.
      */
+    @Deprecated
     public void export(final List<Release> releases, final String feedType, final Writer writer) throws IOException {
+        export(releases, feedType, new BufferedOutputStream(new WriterOutputStream(writer)));
+    }
+
+    /**
+     * Extract a feed and export it to an OutputStream.
+     *
+     * @param releases the List of Releases. Only the last release is used in the feed.
+     * @param feedType The type of the feed to generate. See {@link #isSupportedFeedType(java.lang.String)} for
+     *            supported values.
+     * @param outputStream an OutputStream. Note that this is not flushed nor closed upon exit.
+     * @throws IOException if an error occurs during export
+     * @since 1.3
+     */
+    public void export(final List<Release> releases, final String feedType, final OutputStream outputStream)
+            throws IOException {
         feed.setFeedType(feedType);
         feed.setTitle(title);
         feed.setAuthor(author);
         feed.setPublishedDate(new Date());
+        exportInternal(releases, outputStream);
+    }
+
+    private void exportInternal(final List<Release> releases, final OutputStream outputStream) throws IOException {
+
         feed.setLink(link);
         feed.setDescription(rbundle.getString("report.changes.text.rssfeed.description"));
         feed.setLanguage(rbundle.getLocale().getLanguage());
@@ -181,7 +206,7 @@ public class FeedGenerator {
 
         try {
             new SyndFeedOutput().output(feed, writer);
-        } catch (FeedException ex) {
+        } catch (FeedException ex) { //NOPMD
             throw new IOException(ex.getMessage(), ex);
         }
     }
@@ -235,4 +260,35 @@ public class FeedGenerator {
             return new Date();
         }
     }
+
+    /**
+     * Simple {@link OutputStream} implementation that writes to a {@link Writer}.
+     *
+     * @since 1.3
+     */
+    private static class WriterOutputStream extends OutputStream {
+        private final Writer writer;
+
+        WriterOutputStream(final Writer writer) {
+            this.writer = writer;
+        }
+
+        @Override
+        public void write(final int b) throws IOException {
+            writer.write(b);
+        }
+
+        @Override
+        public void write(final byte[] b) throws IOException {
+            writer.write(new String(b));
+        }
+
+        @Override
+        public void write(final byte[] b, final int off, final int len) throws IOException {
+            writer.write(new String(b, off, len));
+        }
+
+    }
+
+
 }