From de1800ecf7d8d39470a5734539c0c248319a9b6e Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:13:44 +0100 Subject: [PATCH 01/17] Updated to Java 17 + version bumps --- Mustang-CLI/pom.xml | 8 +-- library/pom.xml | 14 +++-- .../java/org/mustangproject/CII/CIIToUBL.java | 2 +- .../ZUGFeRD/ZUGFeRDVisualizer.java | 2 +- pom.xml | 57 ++++++++++--------- validator/pom.xml | 10 ++-- .../validator/PDFValidator.java | 6 +- .../validator/ZUGFeRDValidator.java | 4 +- 8 files changed, 55 insertions(+), 48 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 14c1649b..703b33d1 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -13,7 +13,7 @@ jar UTF-8 - 11 + ${java.version} @@ -118,8 +118,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -209,7 +209,7 @@ - 11 + ${java.version} adopt diff --git a/library/pom.xml b/library/pom.xml index 88de56f6..3476064a 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -44,7 +44,7 @@ github -Xdoclint:none - 11 + ${java.version} true @@ -149,6 +149,12 @@ ${version.org.glassfish.jaxb} test + + org.slf4j + slf4j-simple + ${version.org.slf4j} + test + @@ -169,8 +175,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -331,7 +337,7 @@ - 11 + ${java.version} adopt diff --git a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java index 816f6992..8480e81b 100644 --- a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java +++ b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java @@ -3,7 +3,7 @@ package org.mustangproject.CII; import java.io.File; import java.io.Serializable; -import com.helger.commons.error.list.ErrorList; +import com.helger.diagnostics.error.list.ErrorList; import com.helger.en16931.cii2ubl.CIIToUBL23Converter; import com.helger.ubl23.UBL23Marshaller; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java index ec699252..e9170df7 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java @@ -20,7 +20,7 @@ */ package org.mustangproject.ZUGFeRD; -import com.helger.commons.io.stream.StreamHelper; +import com.helger.base.io.stream.StreamHelper; import javax.xml.XMLConstants; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.IOUtils; diff --git a/pom.xml b/pom.xml index 928bc4a8..49e5cc28 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,8 @@ github -Xdoclint:none - 11 + 17 + 17 true @@ -47,40 +48,40 @@ First the versions for plugins, then those for libraries. --> - 3.13.0 - 3.0.0-M1 - 1.6 - 3.4.2 - 3.0.1 - 2.5.3 - 3.1.0 - 3.5.3 - 3.3.1 - 3.5.3 - 3.1.0 - 1.9.5 + 3.15.0 + 3.1.4 + 3.2.8 + 3.5.0 + 3.12.0 + 3.3.1 + 3.5.0 + 3.6.1 + 3.4.0 + 3.5.5 + 3.2.0 + 2.2.1 1.0.0 - 8.0.0 + 9.1.1 1.7.0 - 1.5.18 - 2.17.3 - 2.3.1 - 8.0.6 - 1.10.0 - 2.20.0 - 4.0.2 - 12.8 - 3.0.6 + 1.5.32 + 2.21.1 + 3.1.3 + 9.1.1 + 1.11.0 + 2.21.0 + 4.0.5 + 12.9 + 3.0.7 2.11 3.1.12 - 2.1.5 - 4.0.5 + 2.2.0 + 4.0.7 5.13.4 2.0-rc1 2.0.17 - 1.26.5 - 2.10.3 + 1.28.2 + 2.11.0 @@ -244,7 +245,7 @@ - 11 + 17 adopt diff --git a/validator/pom.xml b/validator/pom.xml index 649d85ec..1e465b8a 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -26,7 +26,7 @@ UTF-8 false - 11 + ${java.version} @@ -141,8 +141,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -273,7 +273,7 @@ - 11 + ${java.version} adopt @@ -293,7 +293,7 @@ com.helger.maven ph-schematron-maven-plugin - ${version.com.helger.maven} + ${version.com.helger.maven.schematron} ${basedir}/src/main/resources/schematron ${basedir}/src/main/resources/xslt diff --git a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java index cc548951..b1947f92 100644 --- a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java @@ -113,7 +113,7 @@ public class PDFValidator extends Validator { ItemDetails itemDetails = ItemDetails.fromValues(pdfFilename); inputStream.mark(Integer.MAX_VALUE); processorResult = processor.process(itemDetails, inputStream); - pdfReport = processorResult.getValidationResult().toString().replaceAll( + pdfReport = processorResult.getValidationResults().get(0).toString().replaceAll( "<\\?xml version=\"1\\.0\" encoding=\"utf-8\"\\?>", "" ); @@ -329,11 +329,11 @@ public class PDFValidator extends Validator { //end final long endTime = Calendar.getInstance().getTimeInMillis(); - if (!processorResult.getValidationResult().isCompliant()) { + if (!processorResult.getValidationResults().get (0).isCompliant()) { context.setInvalid(); } - PDFAFlavour pdfaFlavourFromValidationResult = processorResult.getValidationResult().getPDFAFlavour(); + PDFAFlavour pdfaFlavourFromValidationResult = processorResult.getValidationResults().get (0).getPDFAFlavour(); if (Arrays.stream(PDF_A_3_FLAVOURS) .noneMatch(pdfaFlavourFromValidationResult::equals)) { context.addResultItem( diff --git a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java index 71bbdab3..dcd64c7d 100644 --- a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java @@ -26,15 +26,15 @@ import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; -import org.mustangproject.util.ByteArraySearcher; import org.mustangproject.XMLTools; +import org.mustangproject.util.ByteArraySearcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.InputSource; -import com.helger.commons.io.stream.StreamHelper; +import com.helger.base.io.stream.StreamHelper; import jakarta.xml.bind.DatatypeConverter; From 6c82f5ee48387ea7cb0aa64b2f2eb087d3e98d94 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:14:05 +0100 Subject: [PATCH 02/17] Added @TestMethodOrder to honour @Ordered annotation --- library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java index 522ff9bd..0ecc0339 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java @@ -30,8 +30,10 @@ import java.text.ParseException; import java.util.Date; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import org.mustangproject.BankDetails; import org.mustangproject.CII.CIIToUBL; import org.mustangproject.Contact; @@ -42,6 +44,7 @@ import org.mustangproject.TradeParty; import javax.xml.xpath.XPathExpressionException; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class UBLTest extends ResourceCase { final String TARGET_XML = "./target/testout-1Lieferschein.xml"; From a6db8ca21fb2dddbf6ca59efa17e1ce69b5b088c Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:14:20 +0100 Subject: [PATCH 03/17] Test fix for previously failing UBL tests --- .../org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 1297b1e8..6bbfbf9c 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -527,9 +527,12 @@ public class ZUGFeRDInvoiceImporter { BigDecimal duePayableAmount = null; if (lineDueNodes.getLength() > 0) { String duePayableAmountStr=XMLTools.trimOrNull(lineDueNodes.item(0)); - if ((zpp instanceof CalculatedInvoice) && (duePayableAmountStr!=null)) { + if (duePayableAmountStr!=null) { + // Always set it, because it is used in the calculation below duePayableAmount = new BigDecimal(duePayableAmountStr); - ((CalculatedInvoice) zpp).setDuePayable(duePayableAmount); + if (zpp instanceof CalculatedInvoice) { + ((CalculatedInvoice) zpp).setDuePayable(duePayableAmount); + } } } From 48d54a3f0c8b428ddf396cf8c768e723ef6147fd Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:23:50 +0100 Subject: [PATCH 04/17] Github to run with Java 17 as well --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 562b5c18..b7bd626d 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-java@v3 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ - java-version: '11' + java-version: '17' cache: 'maven' #cache/restore any dependencies to improve the workflow execution time - name: Build with Maven run: mvn -B package --file pom.xml \ No newline at end of file From 44b35e6e8bc231ef4e88ab60bec2123c0b6d19fc Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:24:23 +0100 Subject: [PATCH 05/17] Action update --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index b7bd626d..bda98837 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,8 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ java-version: '17' From 3eb4264c3e4cdb0b9f41ad162739816eb077d959 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:48:51 +0100 Subject: [PATCH 06/17] Even newer versions --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index bda98837..dd03b27b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,8 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ java-version: '17' From 07f0e32a6a2bc6d991033cf6160e6b4458441dfb Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Fri, 10 Apr 2026 13:53:25 +0200 Subject: [PATCH 07/17] Auto-close --- .../test/java/org/mustangproject/ZUGFeRD/DXTest.java | 4 +--- .../test/java/org/mustangproject/ZUGFeRD/FXTest.java | 4 +--- .../test/java/org/mustangproject/ZUGFeRD/XRTest.java | 12 +++--------- .../java/org/mustangproject/ZUGFeRD/ZF2PushTest.java | 6 ++---- 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java index 5e4a5316..04ed7fa0 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java @@ -335,10 +335,8 @@ public class DXTest extends MustangReaderTestCase { zf2p.setProfile(Profiles.getByName(EStandard.despatchadvice,"Pilot",1)); zf2p.generateXML(i); String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java index fbe986b3..1eeed4e6 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java @@ -62,10 +62,8 @@ public class FXTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java index 3109f1b7..495a0563 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java @@ -81,10 +81,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } @@ -134,10 +132,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_EDGE_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_EDGE_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } @@ -251,10 +247,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index ade0ed6d..38d4ec84 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -309,9 +309,7 @@ public class ZF2PushTest extends TestCase { String number = "123"; String priceStr = "3.00"; BigDecimal price = new BigDecimal(priceStr); - try { - InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); - + try(InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf")) { ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1(); ze.ignorePDFAErrors().load(SOURCE_PDF); ze.setProfile(Profiles.getByName("Extended")); @@ -359,7 +357,7 @@ public class ZF2PushTest extends TestCase { /*** - * you can activate intra community suppliy on item level + * you can activate intra community supply on item level */ public void testIntraCommunitySupplyItemExport() { From 4068bbad654594bb45e2acf7ccf2a2bcea038afd Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 13 Apr 2026 11:18:11 +0200 Subject: [PATCH 08/17] Version bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 49e5cc28..c3c09391 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 1.5.32 2.21.1 - 3.1.3 + 3.1.4 9.1.1 1.11.0 2.21.0 From 3531e8c7c8f1c53fc3b3e1fd565b7917322cf6f9 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Sun, 26 Apr 2026 23:04:05 +0200 Subject: [PATCH 09/17] Updated --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3c09391..5137a332 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 1.5.32 2.21.1 - 3.1.4 + 3.1.5 9.1.1 1.11.0 2.21.0 From 751d6ccf0b273960508e048fce5a94236a108a46 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Sun, 26 Apr 2026 23:15:56 +0200 Subject: [PATCH 10/17] Version bump --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5137a332..5e80c716 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 1.5.32 2.21.1 - 3.1.5 + 3.1.7 9.1.1 1.11.0 2.21.0 From 48c5c8b5cbc153067bd0e734530408509e0af282 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:13:44 +0100 Subject: [PATCH 11/17] Updated to Java 17 + version bumps --- Mustang-CLI/pom.xml | 8 ++-- library/pom.xml | 14 +++++-- .../java/org/mustangproject/CII/CIIToUBL.java | 2 +- .../ZUGFeRD/ZUGFeRDVisualizer.java | 2 +- pom.xml | 39 ++++++++++--------- validator/pom.xml | 10 ++--- .../validator/PDFValidator.java | 6 +-- .../validator/ZUGFeRDValidator.java | 4 +- 8 files changed, 46 insertions(+), 39 deletions(-) diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index 14c1649b..703b33d1 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -13,7 +13,7 @@ jar UTF-8 - 11 + ${java.version} @@ -118,8 +118,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -209,7 +209,7 @@ - 11 + ${java.version} adopt diff --git a/library/pom.xml b/library/pom.xml index 88de56f6..3476064a 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -44,7 +44,7 @@ github -Xdoclint:none - 11 + ${java.version} true @@ -149,6 +149,12 @@ ${version.org.glassfish.jaxb} test + + org.slf4j + slf4j-simple + ${version.org.slf4j} + test + @@ -169,8 +175,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -331,7 +337,7 @@ - 11 + ${java.version} adopt diff --git a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java index 816f6992..8480e81b 100644 --- a/library/src/main/java/org/mustangproject/CII/CIIToUBL.java +++ b/library/src/main/java/org/mustangproject/CII/CIIToUBL.java @@ -3,7 +3,7 @@ package org.mustangproject.CII; import java.io.File; import java.io.Serializable; -import com.helger.commons.error.list.ErrorList; +import com.helger.diagnostics.error.list.ErrorList; import com.helger.en16931.cii2ubl.CIIToUBL23Converter; import com.helger.ubl23.UBL23Marshaller; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java index cf9551aa..357a3b87 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java @@ -20,7 +20,7 @@ */ package org.mustangproject.ZUGFeRD; -import com.helger.commons.io.stream.StreamHelper; +import com.helger.base.io.stream.StreamHelper; import javax.xml.XMLConstants; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.IOUtils; diff --git a/pom.xml b/pom.xml index f7db1beb..ace43ed3 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,8 @@ github -Xdoclint:none - 11 + 17 + 17 true @@ -47,20 +48,20 @@ First the versions for plugins, then those for libraries. --> - 3.13.0 - 3.0.0-M1 - 1.6 - 3.4.2 - 3.0.1 - 2.5.3 - 3.1.0 - 3.5.3 - 3.3.1 - 3.5.3 - 3.1.0 - 1.9.5 + 3.15.0 + 3.1.4 + 3.2.8 + 3.5.0 + 3.12.0 + 3.3.1 + 3.5.0 + 3.6.1 + 3.4.0 + 3.5.5 + 3.2.0 + 2.2.1 1.0.0 - 8.0.0 + 9.1.1 1.7.0 1.5.18 @@ -74,13 +75,13 @@ 3.0.7 2.11 3.1.12 - 2.1.5 - 4.0.5 + 2.2.0 + 4.0.7 5.13.4 2.0-rc1 2.0.17 - 1.26.5 - 2.10.3 + 1.28.2 + 2.11.0 @@ -244,7 +245,7 @@ - 11 + 17 adopt diff --git a/validator/pom.xml b/validator/pom.xml index 649d85ec..1e465b8a 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -26,7 +26,7 @@ UTF-8 false - 11 + ${java.version} @@ -141,8 +141,8 @@ - 11 - 11 + ${java.version} + ${java.version} @@ -273,7 +273,7 @@ - 11 + ${java.version} adopt @@ -293,7 +293,7 @@ com.helger.maven ph-schematron-maven-plugin - ${version.com.helger.maven} + ${version.com.helger.maven.schematron} ${basedir}/src/main/resources/schematron ${basedir}/src/main/resources/xslt diff --git a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java index 08d0906f..15e480e1 100644 --- a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java @@ -113,7 +113,7 @@ public class PDFValidator extends Validator { ItemDetails itemDetails = ItemDetails.fromValues(pdfFilename); inputStream.mark(Integer.MAX_VALUE); processorResult = processor.process(itemDetails, inputStream); - pdfReport = processorResult.getValidationResult().toString().replaceAll( + pdfReport = processorResult.getValidationResults().get(0).toString().replaceAll( "<\\?xml version=\"1\\.0\" encoding=\"utf-8\"\\?>", "" ); @@ -324,11 +324,11 @@ public class PDFValidator extends Validator { //end final long endTime = Calendar.getInstance().getTimeInMillis(); - if (!processorResult.getValidationResult().isCompliant()) { + if (!processorResult.getValidationResults().get (0).isCompliant()) { context.setInvalid(); } - PDFAFlavour pdfaFlavourFromValidationResult = processorResult.getValidationResult().getPDFAFlavour(); + PDFAFlavour pdfaFlavourFromValidationResult = processorResult.getValidationResults().get (0).getPDFAFlavour(); if (Arrays.stream(PDF_A_3_FLAVOURS) .noneMatch(pdfaFlavourFromValidationResult::equals)) { context.addResultItem( diff --git a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java index e6a319a4..f71b79dd 100644 --- a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java @@ -24,15 +24,15 @@ import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; -import org.mustangproject.util.ByteArraySearcher; import org.mustangproject.XMLTools; +import org.mustangproject.util.ByteArraySearcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.InputSource; -import com.helger.commons.io.stream.StreamHelper; +import com.helger.base.io.stream.StreamHelper; import jakarta.xml.bind.DatatypeConverter; From 8f484dfc2c2c83c9d38a8969483512843bf7b581 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:14:05 +0100 Subject: [PATCH 12/17] Added @TestMethodOrder to honour @Ordered annotation --- library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java index 522ff9bd..0ecc0339 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java @@ -30,8 +30,10 @@ import java.text.ParseException; import java.util.Date; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; import org.mustangproject.BankDetails; import org.mustangproject.CII.CIIToUBL; import org.mustangproject.Contact; @@ -42,6 +44,7 @@ import org.mustangproject.TradeParty; import javax.xml.xpath.XPathExpressionException; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class UBLTest extends ResourceCase { final String TARGET_XML = "./target/testout-1Lieferschein.xml"; From 8722399455ad466e0de96293ebac4b6ae7061ede Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:23:50 +0100 Subject: [PATCH 13/17] Github to run with Java 17 as well --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 562b5c18..b7bd626d 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-java@v3 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ - java-version: '11' + java-version: '17' cache: 'maven' #cache/restore any dependencies to improve the workflow execution time - name: Build with Maven run: mvn -B package --file pom.xml \ No newline at end of file From 54c65d99473f3a29fd91117f4e3c5f470ca7da19 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:24:23 +0100 Subject: [PATCH 14/17] Action update --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index b7bd626d..bda98837 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,8 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ java-version: '17' From 5ec6f460fc03ed059f31f84074f91b24eba88fb1 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Mon, 16 Mar 2026 21:48:51 +0100 Subject: [PATCH 15/17] Even newer versions --- .github/workflows/maven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index bda98837..dd03b27b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,8 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 # the log states the default ~/.m2/toolchains.xml is being created pointing to the JDK with: distribution: 'adopt' # for latest JDKs use temurin https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/ java-version: '17' From 1abbccc878e073680c4972c77cac726c6fa2e7e1 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Fri, 10 Apr 2026 13:53:25 +0200 Subject: [PATCH 16/17] Auto-close --- .../test/java/org/mustangproject/ZUGFeRD/DXTest.java | 4 +--- .../test/java/org/mustangproject/ZUGFeRD/FXTest.java | 4 +--- .../test/java/org/mustangproject/ZUGFeRD/XRTest.java | 12 +++--------- .../java/org/mustangproject/ZUGFeRD/ZF2PushTest.java | 6 ++---- 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java index 5e4a5316..04ed7fa0 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DXTest.java @@ -335,10 +335,8 @@ public class DXTest extends MustangReaderTestCase { zf2p.setProfile(Profiles.getByName(EStandard.despatchadvice,"Pilot",1)); zf2p.generateXML(i); String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java index fbe986b3..1eeed4e6 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/FXTest.java @@ -62,10 +62,8 @@ public class FXTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java index 3109f1b7..495a0563 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java @@ -81,10 +81,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } @@ -134,10 +132,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_EDGE_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_EDGE_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } @@ -251,10 +247,8 @@ public class XRTest extends TestCase { assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']") .asDouble() .isEqualTo(1); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML)); + try(BufferedWriter writer = new BufferedWriter(new FileWriter(TARGET_XML))) { writer.write(theXML); - writer.close(); } catch (IOException e) { e.printStackTrace(); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 3408b9a0..3cddc296 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -309,9 +309,7 @@ public class ZF2PushTest extends TestCase { String number = "123"; String priceStr = "3.00"; BigDecimal price = new BigDecimal(priceStr); - try { - InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); - + try(InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf")) { ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1(); ze.ignorePDFAErrors().load(SOURCE_PDF); ze.setProfile(Profiles.getByName("Extended")); @@ -359,7 +357,7 @@ public class ZF2PushTest extends TestCase { /*** - * you can activate intra community suppliy on item level + * you can activate intra community supply on item level */ public void testIntraCommunitySupplyItemExport() { From 1b51a4d0ceb869f46c23b1f948e5ab7565405e00 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Sun, 26 Apr 2026 23:15:56 +0200 Subject: [PATCH 17/17] Version bump --- pom.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index ace43ed3..5e80c716 100644 --- a/pom.xml +++ b/pom.xml @@ -64,15 +64,15 @@ 9.1.1 1.7.0 - 1.5.18 - 2.17.3 - 2.3.1 - 8.0.6 - 1.10.0 - 2.20.0 - 4.0.2 - 12.8 - 3.0.7 + 1.5.32 + 2.21.1 + 3.1.7 + 9.1.1 + 1.11.0 + 2.21.0 + 4.0.5 + 12.9 + 3.0.7 2.11 3.1.12 2.2.0