Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package domtrip for openSUSE:Factory checked 
in at 2026-07-21 23:10:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/domtrip (Old)
 and      /work/SRC/openSUSE:Factory/.domtrip.new.24530 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "domtrip"

Tue Jul 21 23:10:25 2026 rev:3 rq:1366877 version:1.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/domtrip/domtrip.changes  2026-06-04 
18:57:22.480453023 +0200
+++ /work/SRC/openSUSE:Factory/.domtrip.new.24530/domtrip.changes       
2026-07-21 23:10:43.234954254 +0200
@@ -1,0 +2,22 @@
+Tue Jul 21 05:53:21 UTC 2026 - Fridrich Strba <[email protected]>
+
+- Update to upstream version 1.6.0
+  * New features and improvements
+    + Fix #254: Add Editor.insertCommentBefore/After methods
+    + Add COMBINE_REMOVE constant to MavenPomElements.Attributes
+  * Dependency updates
+    + bump version.quarkus.platform from 3.36.0 to 3.37.1
+    + bump org.junit.jupiter:junit-jupiter from 6.1.0 to 6.1.1
+    + bump eu.maveniverse.maven.nisse:extension from 0.9.2 to 0.9.3
+    + bump eu.maveniverse.maven.parent:parent from 55 to 56
+    + bump version.quarkus-roq from 2.1.3 to 2.1.5
+    + bump actions/checkout from 6 to 7
+    + bump jaxen:jaxen from 2.0.4 to 2.0.6
+  * Maintenance
+    + Deps: parent POM 55 and others
+- Removed patch:
+  * domtrip-ant-build-system.patch
+    + distribute the ant build system as domtrip-build.tar.xz
+      tarball instead
+
+-------------------------------------------------------------------

Old:
----
  1.5.2.tar.gz
  domtrip-ant-build-system.patch

New:
----
  1.6.0.tar.gz
  domtrip-build.tar.xz

----------(Old B)----------
  Old:- Removed patch:
  * domtrip-ant-build-system.patch
    + distribute the ant build system as domtrip-build.tar.xz
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ domtrip.spec ++++++
--- /var/tmp/diff_new_pack.tlnBNM/_old  2026-07-21 23:10:43.814974085 +0200
+++ /var/tmp/diff_new_pack.tlnBNM/_new  2026-07-21 23:10:43.818974222 +0200
@@ -17,13 +17,13 @@
 
 
 Name:           domtrip
-Version:        1.5.2
+Version:        1.6.0
 Release:        0
 Summary:        Lossless XML Editing for Java
 License:        EPL-2.0
 URL:            https://github.com/maveniverse/domtrip
 Source0:        
https://github.com/maveniverse/%{name}/archive/refs/tags/%{version}.tar.gz
-Patch0:         %{name}-ant-build-system.patch
+Source1:        %{name}-build.tar.xz
 BuildRequires:  ant
 BuildRequires:  fdupes
 BuildRequires:  java-devel >= 9
@@ -44,8 +44,7 @@
 This package contains the API documentation for %{name}.
 
 %prep
-%setup -q
-%patch -P 0 -p1
+%setup -q -a1
 
 %pom_xpath_inject pom:project/pom:properties "
 <nisse.jgit.dynamicVersion>%{version}</nisse.jgit.dynamicVersion>"

++++++ 1.5.2.tar.gz -> 1.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/ci.yml 
new/domtrip-1.6.0/.github/workflows/ci.yml
--- old/domtrip-1.5.2/.github/workflows/ci.yml  2026-05-28 07:41:57.000000000 
+0200
+++ new/domtrip-1.6.0/.github/workflows/ci.yml  2026-07-08 13:30:36.000000000 
+0200
@@ -15,7 +15,7 @@
 
     steps:
     - name: Checkout code
-      uses: actions/checkout@v6
+      uses: actions/checkout@v7
       with:
         fetch-depth: 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/deploy-website.yml 
new/domtrip-1.6.0/.github/workflows/deploy-website.yml
--- old/domtrip-1.5.2/.github/workflows/deploy-website.yml      2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.github/workflows/deploy-website.yml      2026-07-08 
13:30:36.000000000 +0200
@@ -19,7 +19,7 @@
     
     steps:
     - name: Checkout
-      uses: actions/checkout@v6
+      uses: actions/checkout@v7
       with:
         fetch-depth: 0 # Fetch all history for proper git info
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/release-drafter.yml 
new/domtrip-1.6.0/.github/workflows/release-drafter.yml
--- old/domtrip-1.5.2/.github/workflows/release-drafter.yml     2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.github/workflows/release-drafter.yml     2026-07-08 
13:30:36.000000000 +0200
@@ -25,7 +25,7 @@
 
       - name: Checkout
         if: github.event_name == 'push'
-        uses: actions/checkout@v6
+        uses: actions/checkout@v7
         with:
           fetch-depth: 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/release.yml 
new/domtrip-1.6.0/.github/workflows/release.yml
--- old/domtrip-1.5.2/.github/workflows/release.yml     2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.github/workflows/release.yml     2026-07-08 
13:30:36.000000000 +0200
@@ -24,7 +24,7 @@
     steps:
 
       - name: Checkout ${{ github.ref_name }}
-        uses: actions/checkout@v6
+        uses: actions/checkout@v7
         with:
           fetch-depth: 0
           ref: ${{ github.ref }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/snapshot.yml 
new/domtrip-1.6.0/.github/workflows/snapshot.yml
--- old/domtrip-1.5.2/.github/workflows/snapshot.yml    2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.github/workflows/snapshot.yml    2026-07-08 
13:30:36.000000000 +0200
@@ -16,7 +16,7 @@
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v6
+        uses: actions/checkout@v7
         with:
           fetch-depth: 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.github/workflows/sonarcloud.yml 
new/domtrip-1.6.0/.github/workflows/sonarcloud.yml
--- old/domtrip-1.5.2/.github/workflows/sonarcloud.yml  2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.github/workflows/sonarcloud.yml  2026-07-08 
13:30:36.000000000 +0200
@@ -16,7 +16,7 @@
 
     steps:
     - name: Checkout code
-      uses: actions/checkout@v6
+      uses: actions/checkout@v7
       with:
         fetch-depth: 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.mvn/extensions.xml 
new/domtrip-1.6.0/.mvn/extensions.xml
--- old/domtrip-1.5.2/.mvn/extensions.xml       2026-05-28 07:41:57.000000000 
+0200
+++ new/domtrip-1.6.0/.mvn/extensions.xml       2026-07-08 13:30:36.000000000 
+0200
@@ -3,6 +3,6 @@
   <extension>
     <groupId>eu.maveniverse.maven.nisse</groupId>
     <artifactId>extension</artifactId>
-    <version>0.9.1</version>
+    <version>0.9.3</version>
   </extension>
 </extensions>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/.mvn/wrapper/maven-wrapper.properties 
new/domtrip-1.6.0/.mvn/wrapper/maven-wrapper.properties
--- old/domtrip-1.5.2/.mvn/wrapper/maven-wrapper.properties     2026-05-28 
07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/.mvn/wrapper/maven-wrapper.properties     2026-07-08 
13:30:36.000000000 +0200
@@ -1,19 +1,3 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-wrapperVersion=3.3.2
+wrapperVersion=3.3.4
 distributionType=only-script
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.14/apache-maven-3.9.14-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/domtrip-1.5.2/core/src/main/java/eu/maveniverse/domtrip/Editor.java 
new/domtrip-1.6.0/core/src/main/java/eu/maveniverse/domtrip/Editor.java
--- old/domtrip-1.5.2/core/src/main/java/eu/maveniverse/domtrip/Editor.java     
2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/core/src/main/java/eu/maveniverse/domtrip/Editor.java     
2026-07-08 13:30:36.000000000 +0200
@@ -604,6 +604,117 @@
         return comment;
     }
 
+    /**
+     * Inserts a comment before the specified reference element.
+     *
+     * <p>This method creates a new comment and inserts it immediately before
+     * the reference element in the parent's child list. The comment's 
whitespace
+     * is automatically inferred from the reference element's context, matching
+     * the behavior of {@link #insertElementBefore(Element, String)}.</p>
+     *
+     * <h3>Example:</h3>
+     * <pre>{@code
+     * // Before:
+     * // <plugins>
+     * //     <plugin>...</plugin>
+     * // </plugins>
+     *
+     * editor.insertCommentBefore(pluginElement, " Override version inherited 
from parent ");
+     *
+     * // After:
+     * // <plugins>
+     * //     <!-- Override version inherited from parent -->
+     * //     <plugin>...</plugin>
+     * // </plugins>
+     * }</pre>
+     *
+     * @param referenceElement the element to insert the comment before
+     * @param text the comment text (without the {@code <!-- -->} delimiters)
+     * @return the newly created comment
+     * @throws DomTripException if the reference element is null, has no 
parent, or is not found in its parent
+     * @see #insertCommentAfter(Element, String)
+     * @see #addComment(ContainerNode, String)
+     */
+    public Comment insertCommentBefore(Element referenceElement, String text) 
throws DomTripException {
+        return insertCommentRelativeTo(referenceElement, text, 0);
+    }
+
+    /**
+     * Inserts a comment after the specified reference element.
+     *
+     * <p>This method creates a new comment and inserts it immediately after
+     * the reference element in the parent's child list. The comment's 
whitespace
+     * is automatically inferred from the reference element's context, matching
+     * the behavior of {@link #insertElementAfter(Element, String)}.</p>
+     *
+     * <h3>Example:</h3>
+     * <pre>{@code
+     * // Before:
+     * // <plugins>
+     * //     <plugin>...</plugin>
+     * //     <plugin>...</plugin>
+     * // </plugins>
+     *
+     * editor.insertCommentAfter(firstPlugin, " Next plugin section ");
+     *
+     * // After:
+     * // <plugins>
+     * //     <plugin>...</plugin>
+     * //     <!-- Next plugin section -->
+     * //     <plugin>...</plugin>
+     * // </plugins>
+     * }</pre>
+     *
+     * @param referenceElement the element to insert the comment after
+     * @param text the comment text (without the {@code <!-- -->} delimiters)
+     * @return the newly created comment
+     * @throws DomTripException if the reference element is null, has no 
parent, or is not found in its parent
+     * @see #insertCommentBefore(Element, String)
+     * @see #addComment(ContainerNode, String)
+     */
+    public Comment insertCommentAfter(Element referenceElement, String text) 
throws DomTripException {
+        return insertCommentRelativeTo(referenceElement, text, 1);
+    }
+
+    /**
+     * Shared implementation for {@link #insertCommentBefore} and {@link 
#insertCommentAfter}.
+     * Validates inputs, creates the comment with inferred whitespace, and 
inserts it at the
+     * reference element's index plus the given offset.
+     *
+     * @param referenceElement the element to position relative to
+     * @param text the comment text
+     * @param indexOffset 0 to insert before the reference element, 1 to 
insert after
+     * @return the newly created comment
+     */
+    private Comment insertCommentRelativeTo(Element referenceElement, String 
text, int indexOffset)
+            throws DomTripException {
+        if (referenceElement == null) {
+            throw new DomTripException("Reference element cannot be null");
+        }
+
+        ContainerNode parent = referenceElement.parent();
+        if (parent == null) {
+            throw new DomTripException("Reference element has no parent");
+        }
+
+        int index = parent.children.indexOf(referenceElement);
+        if (index < 0) {
+            throw new DomTripException("Reference element not found in 
parent");
+        }
+
+        Comment comment = new Comment(text != null ? text : "");
+
+        // Normalize whitespace and adjust index (same as element insertion)
+        index = normalizeWhitespaces(parent, index);
+
+        // Infer proper indentation from the parent context
+        String properIndentation = inferIndentation(parent);
+        comment.precedingWhitespace(lineEnding + properIndentation);
+
+        parent.insertChild(index + indexOffset, comment);
+        return comment;
+    }
+
     // ========== ELEMENT COMMENTING METHODS ==========
 
     /**
@@ -881,29 +992,7 @@
      * @throws DomTripException if the insertion fails
      */
     public Element insertElementBefore(Element referenceElement, String 
elementName) throws DomTripException {
-        if (referenceElement == null) {
-            throw new DomTripException("Reference element cannot be null");
-        }
-        if (elementName == null || elementName.trim().isEmpty()) {
-            throw new DomTripException("Element name cannot be null or empty");
-        }
-
-        ContainerNode parent = referenceElement.parent();
-        if (parent == null) {
-            throw new DomTripException("Reference element has no parent");
-        }
-
-        int index = parent.children.indexOf(referenceElement);
-        if (index < 0) {
-            throw new DomTripException("Reference element not found in 
parent");
-        }
-
-        Element newElement = new Element(elementName.trim());
-
-        // Use centralized node insertion with automatic whitespace 
normalization
-        insertChild(parent, newElement, index);
-
-        return newElement;
+        return insertElementRelativeTo(referenceElement, elementName, 0);
     }
 
     /**
@@ -943,6 +1032,21 @@
      * @throws DomTripException if the insertion fails
      */
     public Element insertElementAfter(Element referenceElement, String 
elementName) throws DomTripException {
+        return insertElementRelativeTo(referenceElement, elementName, 1);
+    }
+
+    /**
+     * Shared implementation for {@link #insertElementBefore} and {@link 
#insertElementAfter}.
+     * Validates inputs, creates the element, and inserts it at the reference 
element's index
+     * plus the given offset.
+     *
+     * @param referenceElement the element to position relative to
+     * @param elementName the name of the new element
+     * @param indexOffset 0 to insert before the reference element, 1 to 
insert after
+     * @return the newly created element
+     */
+    private Element insertElementRelativeTo(Element referenceElement, String 
elementName, int indexOffset)
+            throws DomTripException {
         if (referenceElement == null) {
             throw new DomTripException("Reference element cannot be null");
         }
@@ -963,7 +1067,7 @@
         Element newElement = new Element(elementName.trim());
 
         // Use centralized node insertion with automatic whitespace 
normalization
-        insertChild(parent, newElement, index + 1);
+        insertChild(parent, newElement, index + indexOffset);
 
         return newElement;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/domtrip-1.5.2/core/src/test/java/eu/maveniverse/domtrip/EditorCommentingTest.java
 
new/domtrip-1.6.0/core/src/test/java/eu/maveniverse/domtrip/EditorCommentingTest.java
--- 
old/domtrip-1.5.2/core/src/test/java/eu/maveniverse/domtrip/EditorCommentingTest.java
       2026-05-28 07:41:57.000000000 +0200
+++ 
new/domtrip-1.6.0/core/src/test/java/eu/maveniverse/domtrip/EditorCommentingTest.java
       2026-07-08 13:30:36.000000000 +0200
@@ -220,6 +220,271 @@
         assertEquals(xml, result);
     }
 
+    // ========== insertCommentBefore / insertCommentAfter tests ==========
+
+    @Test
+    void testInsertCommentBeforeElement() throws DomTripException {
+        String xml = """
+            <root>
+                <first>content1</first>
+                <second>content2</second>
+            </root>""";
+        String expected = """
+            <root>
+                <first>content1</first>
+                <!-- inserted comment -->
+                <second>content2</second>
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element second = doc.root().childElement("second").orElseThrow();
+
+        Comment comment = editor.insertCommentBefore(second, " inserted 
comment ");
+
+        assertNotNull(comment);
+        assertEquals(" inserted comment ", comment.content());
+        assertEquals(doc.root(), comment.parent());
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentAfterElement() throws DomTripException {
+        String xml = """
+            <root>
+                <first>content1</first>
+                <second>content2</second>
+            </root>""";
+        String expected = """
+            <root>
+                <first>content1</first>
+                <!-- inserted comment -->
+                <second>content2</second>
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element first = doc.root().childElement("first").orElseThrow();
+
+        Comment comment = editor.insertCommentAfter(first, " inserted comment 
");
+
+        assertNotNull(comment);
+        assertEquals(" inserted comment ", comment.content());
+        assertEquals(doc.root(), comment.parent());
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentBeforeFirstElement() throws DomTripException {
+        String xml = """
+            <root>
+                <first>content1</first>
+                <second>content2</second>
+            </root>""";
+        String expected = """
+            <root>
+                <!-- before first -->
+                <first>content1</first>
+                <second>content2</second>
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element first = doc.root().childElement("first").orElseThrow();
+
+        editor.insertCommentBefore(first, " before first ");
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentAfterLastElement() throws DomTripException {
+        String xml = """
+            <root>
+                <first>content1</first>
+                <second>content2</second>
+            </root>""";
+        String expected = """
+            <root>
+                <first>content1</first>
+                <second>content2</second>
+                <!-- after last -->
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element second = doc.root().childElement("second").orElseThrow();
+
+        editor.insertCommentAfter(second, " after last ");
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentBeforeWithDeepNesting() throws DomTripException {
+        String xml = """
+            <root>
+                <dependencies>
+                    <dependency>
+                        <groupId>junit</groupId>
+                    </dependency>
+                </dependencies>
+            </root>""";
+        String expected = """
+            <root>
+                <dependencies>
+                    <!-- Override version inherited from parent -->
+                    <dependency>
+                        <groupId>junit</groupId>
+                    </dependency>
+                </dependencies>
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element dependency = doc.root()
+                .childElement("dependencies")
+                .orElseThrow()
+                .childElement("dependency")
+                .orElseThrow();
+
+        editor.insertCommentBefore(dependency, " Override version inherited 
from parent ");
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentBeforeNullElement() {
+        assertThrows(DomTripException.class, () -> 
editor.insertCommentBefore(null, "text"));
+    }
+
+    @Test
+    void testInsertCommentAfterNullElement() {
+        assertThrows(DomTripException.class, () -> 
editor.insertCommentAfter(null, "text"));
+    }
+
+    @Test
+    void testInsertCommentBeforeOrphanElement() {
+        Element orphan = new Element("orphan");
+        assertThrows(DomTripException.class, () -> 
editor.insertCommentBefore(orphan, "text"));
+    }
+
+    @Test
+    void testInsertCommentAfterOrphanElement() {
+        Element orphan = new Element("orphan");
+        assertThrows(DomTripException.class, () -> 
editor.insertCommentAfter(orphan, "text"));
+    }
+
+    @Test
+    void testInsertCommentWithNullText() throws DomTripException {
+        String xml = """
+            <root>
+                <child>content</child>
+            </root>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element child = doc.root().childElement("child").orElseThrow();
+
+        Comment comment = editor.insertCommentBefore(child, null);
+
+        assertNotNull(comment);
+        assertEquals("", comment.content());
+    }
+
+    @Test
+    void testInsertCommentBeforeInMavenPluginScenario() throws 
DomTripException {
+        String xml = """
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>""";
+        String expected = """
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                    </plugin>
+                    <!-- Override version inherited from parent -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element plugins = doc.root().childElement("plugins").orElseThrow();
+        Element secondPlugin = plugins.childElements()
+                .filter(e -> "plugin".equals(e.name()))
+                .skip(1)
+                .findFirst()
+                .orElseThrow();
+
+        editor.insertCommentBefore(secondPlugin, " Override version inherited 
from parent ");
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
+    @Test
+    void testInsertCommentAfterInMavenPluginScenario() throws DomTripException 
{
+        String xml = """
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>""";
+        String expected = """
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                    </plugin>
+                    <!-- Next section -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>""";
+
+        Document doc = Document.of(xml);
+        editor = new Editor(doc);
+        Element plugins = doc.root().childElement("plugins").orElseThrow();
+        Element firstPlugin = plugins.childElement("plugin").orElseThrow();
+
+        editor.insertCommentAfter(firstPlugin, " Next section ");
+
+        String result = editor.toXml();
+        assertEquals(expected, result);
+    }
+
     @Test
     void testUncommentElementWithPrettyPrint() throws DomTripException {
         String xml = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/jaxen/pom.xml 
new/domtrip-1.6.0/jaxen/pom.xml
--- old/domtrip-1.5.2/jaxen/pom.xml     2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/jaxen/pom.xml     2026-07-08 13:30:36.000000000 +0200
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>jaxen</groupId>
       <artifactId>jaxen</artifactId>
-      <version>2.0.3</version>
+      <version>2.0.6</version>
     </dependency>
 
     <dependency>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/domtrip-1.5.2/maven/src/main/java/eu/maveniverse/domtrip/maven/MavenPomElements.java
 
new/domtrip-1.6.0/maven/src/main/java/eu/maveniverse/domtrip/maven/MavenPomElements.java
--- 
old/domtrip-1.5.2/maven/src/main/java/eu/maveniverse/domtrip/maven/MavenPomElements.java
    2026-05-28 07:41:57.000000000 +0200
+++ 
new/domtrip-1.6.0/maven/src/main/java/eu/maveniverse/domtrip/maven/MavenPomElements.java
    2026-07-08 13:30:36.000000000 +0200
@@ -155,6 +155,7 @@
         public static final String COMBINE_OVERRIDE = "override";
         public static final String COMBINE_MERGE = "merge";
         public static final String COMBINE_APPEND = "append";
+        public static final String COMBINE_REMOVE = "remove";
 
         private Attributes() {
             // Utility class
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/mvnw new/domtrip-1.6.0/mvnw
--- old/domtrip-1.5.2/mvnw      2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/mvnw      2026-07-08 13:30:36.000000000 +0200
@@ -19,7 +19,7 @@
 # ----------------------------------------------------------------------------
 
 # ----------------------------------------------------------------------------
-# Apache Maven Wrapper startup batch script, version 3.3.2
+# Apache Maven Wrapper startup batch script, version 3.3.4
 #
 # Optional ENV vars
 # -----------------
@@ -105,14 +105,17 @@
   printf "%s" "${1}" | tr -d '[:space:]'
 }
 
+scriptDir="$(dirname "$0")"
+scriptName="$(basename "$0")"
+
 # parse distributionUrl and optional distributionSha256Sum, requires 
.mvn/wrapper/maven-wrapper.properties
 while IFS="=" read -r key value; do
   case "${key-}" in
   distributionUrl) distributionUrl=$(trim "${value-}") ;;
   distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
   esac
-done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
-[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in 
${0%/*}/.mvn/wrapper/maven-wrapper.properties"
+done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in 
$scriptDir/.mvn/wrapper/maven-wrapper.properties"
 
 case "${distributionUrl##*/}" in
 maven-mvnd-*bin.*)
@@ -130,7 +133,7 @@
   distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
   ;;
 maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
-*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
 esac
 
 # apply MVNW_REPOURL and calculate MAVEN_HOME
@@ -227,7 +230,7 @@
     echo "Please disable validation by removing 'distributionSha256Sum' from 
your maven-wrapper.properties." >&2
     exit 1
   elif command -v sha256sum >/dev/null; then
-    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | 
sha256sum -c >/dev/null 2>&1; then
+    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | 
sha256sum -c - >/dev/null 2>&1; then
       distributionSha256Result=true
     fi
   elif command -v shasum >/dev/null; then
@@ -252,8 +255,41 @@
 else
   tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} 
"$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed 
to untar"
 fi
-printf %s\\n "$distributionUrl" 
>"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
-mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d 
"$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
+
+# Find the actual extracted directory name (handles snapshots where filename 
!= directory name)
+actualDistributionDir=""
+
+# First try the expected directory name (for regular distributions)
+if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
+  if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
+    actualDistributionDir="$distributionUrlNameMain"
+  fi
+fi
+
+# If not found, search for any directory with the Maven executable (for 
snapshots)
+if [ -z "$actualDistributionDir" ]; then
+  # enable globbing to iterate over items
+  set +f
+  for dir in "$TMP_DOWNLOAD_DIR"/*; do
+    if [ -d "$dir" ]; then
+      if [ -f "$dir/bin/$MVN_CMD" ]; then
+        actualDistributionDir="$(basename "$dir")"
+        break
+      fi
+    fi
+  done
+  set -f
+fi
+
+if [ -z "$actualDistributionDir" ]; then
+  verbose "Contents of $TMP_DOWNLOAD_DIR:"
+  verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
+  die "Could not find Maven distribution directory in extracted archive"
+fi
+
+verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+printf %s\\n "$distributionUrl" 
>"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d 
"$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
 
 clean || :
 exec_maven "$@"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/mvnw.cmd new/domtrip-1.6.0/mvnw.cmd
--- old/domtrip-1.5.2/mvnw.cmd  2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/mvnw.cmd  2026-07-08 13:30:36.000000000 +0200
@@ -19,7 +19,7 @@
 @REM 
----------------------------------------------------------------------------
 
 @REM 
----------------------------------------------------------------------------
-@REM Apache Maven Wrapper startup batch script, version 3.3.2
+@REM Apache Maven Wrapper startup batch script, version 3.3.4
 @REM
 @REM Optional ENV vars
 @REM   MVNW_REPOURL - repo url base for downloading maven distribution
@@ -40,7 +40,7 @@
 @SET __MVNW_ARG0_NAME__=
 @SET MVNW_USERNAME=
 @SET MVNW_PASSWORD=
-@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
+@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
 @echo Cannot start maven from wrapper >&2 && exit /b 1
 @GOTO :EOF
 : end batch / begin powershell #>
@@ -73,16 +73,30 @@
 # apply MVNW_REPOURL and calculate MAVEN_HOME
 # maven home pattern: 
~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
 if ($env:MVNW_REPOURL) {
-  $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { 
"/maven/mvnd/" }
-  $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl 
-replace '^.*'+$MVNW_REPO_PATTERN,'')"
+  $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else 
{ "/maven/mvnd/" }
+  $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl 
-replace "^.*$MVNW_REPO_PATTERN",'')"
 }
 $distributionUrlName = $distributionUrl -replace '^.*/',''
 $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' 
-replace '-bin$',''
-$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
+
+$MAVEN_M2_PATH = "$HOME/.m2"
 if ($env:MAVEN_USER_HOME) {
-  $MAVEN_HOME_PARENT = 
"$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
+  $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
+}
+
+if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
+    New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
 }
-$MAVEN_HOME_NAME = 
([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl)
 | ForEach-Object {$_.ToString("x2")}) -join ''
+
+$MAVEN_WRAPPER_DISTS = $null
+if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
+  $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
+} else {
+  $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
+}
+
+$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
+$MAVEN_HOME_NAME = 
([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl)
 | ForEach-Object {$_.ToString("x2")}) -join ''
 $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
 
 if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
@@ -134,7 +148,33 @@
 
 # unzip and move
 Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath 
"$TMP_DOWNLOAD_DIR" | Out-Null
-Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName 
$MAVEN_HOME_NAME | Out-Null
+
+# Find the actual extracted directory name (handles snapshots where filename 
!= directory name)
+$actualDistributionDir = ""
+
+# First try the expected directory name (for regular distributions)
+$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
+$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
+if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path 
$expectedMvnPath -PathType Leaf)) {
+  $actualDistributionDir = $distributionUrlNameMain
+}
+
+# If not found, search for any directory with the Maven executable (for 
snapshots)
+if (!$actualDistributionDir) {
+  Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
+    $testPath = Join-Path $_.FullName "bin/$MVN_CMD"
+    if (Test-Path -Path $testPath -PathType Leaf) {
+      $actualDistributionDir = $_.Name
+    }
+  }
+}
+
+if (!$actualDistributionDir) {
+  Write-Error "Could not find Maven distribution directory in extracted 
archive"
+}
+
+Write-Verbose "Found extracted Maven distribution directory: 
$actualDistributionDir"
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName 
$MAVEN_HOME_NAME | Out-Null
 try {
   Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination 
$MAVEN_HOME_PARENT | Out-Null
 } catch {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/pom.xml new/domtrip-1.6.0/pom.xml
--- old/domtrip-1.5.2/pom.xml   2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/pom.xml   2026-07-08 13:30:36.000000000 +0200
@@ -14,7 +14,7 @@
   <parent>
     <groupId>eu.maveniverse.maven.parent</groupId>
     <artifactId>parent</artifactId>
-    <version>53</version>
+    <version>56</version>
   </parent>
 
   <groupId>eu.maveniverse.maven.domtrip</groupId>
@@ -41,7 +41,7 @@
     <maven.compiler.release>8</maven.compiler.release>
     <maven.compiler.testRelease>21</maven.compiler.testRelease>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.junit>6.1.0</version.junit>
+    <version.junit>6.1.1</version.junit>
   </properties>
 
 </project>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/domtrip-1.5.2/website/pom.xml 
new/domtrip-1.6.0/website/pom.xml
--- old/domtrip-1.5.2/website/pom.xml   2026-05-28 07:41:57.000000000 +0200
+++ new/domtrip-1.6.0/website/pom.xml   2026-07-08 13:30:36.000000000 +0200
@@ -23,8 +23,8 @@
   <properties>
     <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
     <quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
-    <version.quarkus.platform>3.36.0</version.quarkus.platform>
-    <version.quarkus-roq>2.1.2</version.quarkus-roq>
+    <version.quarkus.platform>3.37.1</version.quarkus.platform>
+    <version.quarkus-roq>2.1.5</version.quarkus-roq>
   </properties>
 
   <dependencyManagement>

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.tlnBNM/_old  2026-07-21 23:10:44.250988992 +0200
+++ /var/tmp/diff_new_pack.tlnBNM/_new  2026-07-21 23:10:44.254989128 +0200
@@ -1,6 +1,6 @@
-mtime: 1780549738
-commit: 10c2c2b5c684191d726eca7b420a3323b57ffad7713b6e7799f4d394057e6276
+mtime: 1784613546
+commit: feb2d6d5c2901f068d2b78d291e5525f96957db4ba193381a650367de7643145
 url: https://src.opensuse.org/java-packages/domtrip
-revision: 10c2c2b5c684191d726eca7b420a3323b57ffad7713b6e7799f4d394057e6276
+revision: feb2d6d5c2901f068d2b78d291e5525f96957db4ba193381a650367de7643145
 projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-07-21 07:59:06.000000000 +0200
@@ -0,0 +1,5 @@
+*.obscpio
+*.osc
+_build.*
+_service:*
+.pbuild

Reply via email to