diff --git a/api/src/main/java/org/itsallcode/openfasttrace/api/core/LinkedSpecificationItem.java b/api/src/main/java/org/itsallcode/openfasttrace/api/core/LinkedSpecificationItem.java index f2345902..6b9c6086 100644 --- a/api/src/main/java/org/itsallcode/openfasttrace/api/core/LinkedSpecificationItem.java +++ b/api/src/main/java/org/itsallcode/openfasttrace/api/core/LinkedSpecificationItem.java @@ -247,7 +247,7 @@ public List getNeedsArtifactTypes() /** * Get the artifact type which are covered. * - * @return the list of covered artifact types. + * @return the set of covered artifact types. */ public Set getCoveredArtifactTypes() { @@ -265,9 +265,9 @@ public Set getCoveredApprovedArtifactTypes() } /** - * Get a list of all artifact types that have unwanted coverage. + * Get a set of all artifact types that have unwanted coverage. * - * @return list of over-covered artifact types. + * @return set of over-covered artifact types. */ public Set getOverCoveredArtifactTypes() { @@ -400,9 +400,9 @@ private List getIncomingItems() /** * Check if the item is defect. - * - * An item counts a defect if the following applies: - * + *

+ * An item counts as a defect if the following applies: + *

*
      * has duplicates
      * or (not rejected
diff --git a/doc/changes/changes_4.2.0.md b/doc/changes/changes_4.2.0.md
index c73b97e5..ba0b8bac 100644
--- a/doc/changes/changes_4.2.0.md
+++ b/doc/changes/changes_4.2.0.md
@@ -1,4 +1,4 @@
-# OpenFastTrace 4.2.0, released 2025-06-09
+# OpenFastTrace 4.2.0, released 2025-06-13
 
 Code name: Markdown code blocks
 
diff --git a/pom.xml b/pom.xml
index 45ec8342..c65abd92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,9 +16,6 @@
              We use the minimal timestamp to suppress a warning by artifact:compare. -->
         1980-01-01T00:00:02Z
     
-    
-        3.9.9
-    
     
         parent
         api
diff --git a/testutil/pom.xml b/testutil/pom.xml
index 31fac171..8ea7417a 100644
--- a/testutil/pom.xml
+++ b/testutil/pom.xml
@@ -66,14 +66,6 @@
                     
                 
             
-            
-                org.apache.maven.plugins
-                maven-javadoc-plugin
-                
-                    
-                    true
-                
-            
             
                 org.apache.maven.plugins
                 maven-deploy-plugin
diff --git a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/OsCheck.java b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/OsCheck.java
index 4777b7cb..b8f41271 100644
--- a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/OsCheck.java
+++ b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/OsCheck.java
@@ -33,7 +33,14 @@ public OsCheck()
      */
     public enum OSType
     {
-        WINDOWS, MACOS, LINUX, OTHER
+        /** Windows OS */
+        WINDOWS,
+        /** macOS */
+        MACOS,
+        /** Linux */
+        LINUX,
+        /** Any other operating system */
+        OTHER
     }
 
     /**
diff --git a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImportAssertions.java b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImportAssertions.java
index 5d4180c0..7eec5e4c 100644
--- a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImportAssertions.java
+++ b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImportAssertions.java
@@ -35,6 +35,8 @@ private ImportAssertions()
      *            content to be imported
      * @param matcher
      *            matcher that defines expectation for imported data
+     * @param importerFactory
+     *            factory that generates the importer
      */
     public static void assertImportWithFactory(final Path path, final String input,
             final Matcher> matcher,
@@ -44,7 +46,8 @@ public static void assertImportWithFactory(final Path path, final String input,
     }
 
     /**
-     * Run an importer on the given text and return the imported specification items.
+     * Run an importer on the given text and return the imported specification
+     * items.
      * 
      * @param path
      *            path to use for the input file
diff --git a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImporterFactoryTestBase.java b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImporterFactoryTestBase.java
index 8653a0da..f76f9ce9 100644
--- a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImporterFactoryTestBase.java
+++ b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/importer/ImporterFactoryTestBase.java
@@ -42,7 +42,7 @@ protected ImporterFactoryTestBase()
     }
 
     @BeforeEach
-    public void initMocks()
+    void initMocks()
     {
         lenient().when(this.contextMock.getImportSettings()).thenReturn(ImportSettings.createDefault());
     }
diff --git a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/matcher/StringRegexpMatcher.java b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/matcher/StringRegexpMatcher.java
index 17c36be7..efd25c42 100644
--- a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/matcher/StringRegexpMatcher.java
+++ b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/matcher/StringRegexpMatcher.java
@@ -9,11 +9,23 @@
  */
 public class StringRegexpMatcher extends SubstringMatcher
 {
+    /**
+     * Create a new instance of the {@link StringRegexpMatcher}.
+     *
+     * @param regexp regular expression to match against
+     */
     public StringRegexpMatcher(final String regexp)
     {
         super("contains regexp", false, regexp);
     }
 
+    /**
+     * Check if the substring matches the given value with newlines removed.
+     *
+     * @param value value to match the substring against
+     *
+     * @return {@code true} if the given value matches the substring
+     */
     protected boolean evalSubstringOf(final String value)
     {
         return Pattern.matches(this.substring, value.replace("\n", ""));
diff --git a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/xml/IndentingXMLStreamWriter.java b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/xml/IndentingXMLStreamWriter.java
index b37e8bba..f3594a8e 100644
--- a/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/xml/IndentingXMLStreamWriter.java
+++ b/testutil/src/main/java/org/itsallcode/openfasttrace/testutil/xml/IndentingXMLStreamWriter.java
@@ -3,39 +3,29 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
+/**
+ * A stream writer for XML that adds indentation.
+ */
 public class IndentingXMLStreamWriter extends StreamWriterDelegate
 {
-    /** Two spaces; the default indentation. */
-    public static final String DEFAULT_INDENT = "  ";
-
-    /**
-     * "\n"; the normalized end-of-line representation in
-     * XML.
-     */
-    public static final String NORMAL_END_OF_LINE = "\n";
-
     private static final int WROTE_MARKUP = 1;
-
     private static final int WROTE_DATA = 2;
-
     private final String indent;
-
     private final String newLine;
-
     /** How deeply nested the current scope is. The root element is depth 1. */
     private int depth = 0; // document scope
-
     /** stack[depth] indicates what's been written into the current scope. */
     private int[] stack = new int[] { 0, 0, 0, 0 }; // nothing written yet
-
     /** Prefix that defines how deeply a line is indented. */
     private char[] linePrefix = null;
 
-    public IndentingXMLStreamWriter(final XMLStreamWriter out)
-    {
-        this(out, DEFAULT_INDENT, NORMAL_END_OF_LINE);
-    }
-
+    /**
+     * Create a new instance of the {@link IndentingXMLStreamWriter}.
+     *
+     * @param out stream writer to output to
+     * @param indent string used as the indentation prefix
+     * @param newLine newline character (for platform-specific output)
+     */
     public IndentingXMLStreamWriter(final XMLStreamWriter out, final String indent,
             final String newLine)
     {
@@ -205,7 +195,8 @@ public void writeEndDocument() throws XMLStreamException
     /**
      * Prepare to write markup by writing a new line and indentation.
      *
-     * @throws XMLStreamException here for interface compatibility only
+     * @throws XMLStreamException
+     *             here for interface compatibility only
      */
     protected void beforeMarkup() throws XMLStreamException
     {
@@ -236,7 +227,8 @@ protected void afterData()
     /**
      * Prepare to start an element by allocating stack space.
      *
-     * @throws XMLStreamException here for interface compatibility only
+     * @throws XMLStreamException
+     *             here for interface compatibility only
      */
     protected void beforeStartElement() throws XMLStreamException
     {
@@ -261,7 +253,8 @@ protected void afterStartElement()
     /**
      * Prepare to end an element by writing a new line and indentation.
      *
-     * @throws XMLStreamException here for interface compatibility only
+     * @throws XMLStreamException
+     *             here for interface compatibility only
      */
     protected void beforeEndElement() throws XMLStreamException
     {
@@ -283,7 +276,8 @@ protected void afterEndElement()
     /**
      * Note that a document was ended.
      *
-     * @throws XMLStreamException here for interface compatibility only
+     * @throws XMLStreamException
+     *             here for interface compatibility only
      */
     protected void afterEndDocument() throws XMLStreamException
     {
@@ -295,7 +289,14 @@ protected void afterEndDocument() throws XMLStreamException
         this.stack[this.depth] = 0; // start fresh
     }
 
-    /** Write a line separator followed by indentation. */
+    /**
+     * Write an indented line.
+     * 
+     * @param indentation
+     *            indentation depth
+     * @throws XMLStreamException
+     *             if the underlying {@link XMLStreamWriter} has a problem
+     */
     protected void writeNewLine(final int indentation) throws XMLStreamException
     {
         final int newLineLength = this.newLine.length();