validator/CHANGELOG.md
2025-11-06 13:23:14 +01:00

11 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

1.6.0 - 2025-11-07

Added

  • (CORE) GitHub #127 New API method Result.getCustomFailedAsserts() to access failed asserts with custom error levels

Fixed

Changed

  • (CORE) Migration from javax to jakarta xml bind
  • (DOC) GitHub PR#132 Updated the link to the example Validator scenario configuration
  • (BUILD) Support for building and compilation is restricted to the following Java versions:
    • Java 11: any version ≥ 11.0.23
    • Java 12 to 16 will not work
    • Java 17: any version ≥ 17.0.11
    • Java 18 to 20 will not work
    • Any version from Java 21 onwards will work
    • The reason for this is the usage of the -proc:full compiler parameter which in turn is needed for Lombok usage in JDK 23+.

Removed

  • (CORE) java 8 support. new default jdk 11

1.5.2 - 2025-09-01

Fixed

  • (BUILD) #148 Regression that due to renaming from validationtool to validator the distribution zip did not contain all jars anymore

1.5.1 - 2025-09-01

Fixed

  • (CORE) #130 Check result to stdout causes an exception. This also fixes GitHub #131
  • (CORE) #131 UnsupportedOperationException because of read-only list. This also fixes GitHub #136
  • (CLI) #104 made the usage of the -r parameter optional, if only one unnamed scenario is used
  • (CLI) #145 If the CLI is invoked without any parameter, the usage is shown twice
  • (DOC) #129 API documentation is outdated. This also fixes GitHub #130
  • (BUILD) #62 Surefire Test Error running de.kosit.validationtool.impl.xml.RemoteResolvingStrategyTest fails without http.proxy setting
  • (BUILD) #110 reactivated the GitLab CI environment

Added

  • (BUILD) #140 prepare pom.xml to be able to release to Maven Central
  • (BUILD) #144 created a Maven profile to release on Maven Central

Changed

  • (CORE) #109 dependencies were updated to the latest Java 1.8 compatible versions
  • (CORE) #136 removed IDE project folders from git
  • (BUILD) #135 protected specific git branches
  • (BUILD) #137 GitLab CI should only run on Java LTS versions as well as the latest Java version
  • (BUILD) #147 Change Maven coordinates from de.kosit:validationtool to org.kosit:validator

1.5.0

Fixed

  • (CLI) #93 Remove usage information, when validation failed
  • (CLI) #95 NPE when using empty repository definition (-r "")
  • (CORE) GitHub #101 Role is null in FailedAssert

Added

  • (CLI) Support for multiple configurations and multiple repositories. See cli documentation for details
  • (API) Possibility to use preconfigured Saxon Processor instance for validation

Changed

1.4.2

Fixed

  • (CLI) #74 fix ansi output of the cli version
  • #80 using classloader to initialize jaxb context (to support usage in OSGi environments)
  • #75 Improve logging on invalid documents

1.4.1

Fixed

  • Allow more than 3 customLevel elements in scenarios (see xrechnung configuration issue 49)
  • Remove saxon signature from java8 uber-jar (see 67)

1.4.0

Fixed

  • date conversion when using ConfigurationBuilder#date(Date)
  • (CLI) #51 Suffix of report xml is missing
  • #53 Fix copyright and licensing information
  • #56 namespace element content needs trimming
  • [DAEMON] #57 Reading large inputs correctly

Added

  • read saxon XdmNode with InputFactory
  • (CLI) custom output without the various log messages
  • (CLI) options to set the log level (-X = full debug output, -l <level> set a specific level)
  • (CLI) return code is not 0 on rejected results
  • (CLI) read (single) test target from stdin
  • [DAEMON] name inputs via request URI

Changed

  • InputFactory has methods to read any java.xml.transform.Source as Input not only StreamSources
  • InputFactory uses a generated UUID as name for SourceInput, if no "real" name can be derived
  • saxon dependency update (minor, 9.9.1-7)
  • [DAEMON] proper status codes when returning results (see daemon documentation)

1.3.1

Fixed

  • getFailedAsserts() and isSchematronValid() in DefaultResult.java do not reflect actual schematron validation result
  • processing aborts on schematron execution errors (e.g. errors within schematron logic). The validator now generates a report in such cases.
  • exception while resolving when using XSLT's unparsed-text() function within report generation

Added

  • (CLI) summary report

Changed

  • engine info contains version number of the validator (configurations can output this in the report for maintainance puposes)
  • options to customize serialized report file names (cmdline only) via --report-prefix and --report-postfix
  • remove unused dependency Apache Commons HTTP

1.3.0

Added

  • Added a builder style configuration API to configure scenarios
  • Added an option to configure xml security e.g. to load from http sources or not from a specific repository (so loading is configurable less restrictive, default strategy is to only load from a local repository)
  • Support java.xml.transform.Source as Input

Changed

  • Inputs are NOT read into memory (e.g. Byte-Array) prior processing within the validator. This reduces memory consumption.
  • Overall processing of xml files is based on Saxon s9api. No JAXP or SAX classes are used by the validator (this further improves performance and memory consumption)

Deprecations

  • CheckConfiguration is deprecated now. Use Configuration.load(...) or Configuration.build(...)

1.2.1

Fixed

  • Validator is creating invalid createReportInput xml in case of no scenario match

1.2.0

Added

  • Provide access to schematron result through Result.java
    • Result#getFailedAsserts() returns a list of failed asserts found by schematron
    • Result#isSchematronValid() convinience access to evaluate whether schematron was processed without any * FailedAsserts*

Changed

  • Result#getAcceptRecommendation() does not only work when acceptMatch is configured in the scenario
    • schema correctness is a precondition, if the checked instance is not valid, this evaluates to REJECTED
    • if acceptMatch is configured, the result is based on the boolean result of the xpath expression evaluated against the generated report
    • if no acceptMatch is configured, the result is based on evaluation of schema and schematron correctness
    • UNDEFINED is only returned, when processing is stopped somehow
  • Result#isAcceptable() can now evaluate to true, when no acceptMatch is configured (see above)

1.1.3

Fixed

  • XXE vulnerability when reading xml documents with Saxon #44
  • validator unintentionally stopped when schematron processing has errors. See #41.

1.1.2

Fixed

  • NPE in Result.getReportDocument for malformed xml input

1.1.1

Added

  • Convenience method for accessing information about well-formedness in Result
  • Convenience method for accessing information about schema validation result in Result

Fixed

  • NPE when validating non-XML files

1.1.0

Added

  • Enhanced API-Usage e.g. return Result object with processing information
  • Support loading scenarios and content from a JAR-File
  • Simple Daemon-Mode exposing validation functionality via http
  • cli option to serialize the 'report input' xml document to cwd (current working directory)
  • Documentation in docs folder

Changed

  • Use s9api (e.g. XdmNode) internally for loading and holding xml objects (further memory optimization)
  • Builds with java 8 and >= 11
  • Packages for java8 and java >= 11 (with jaxb included)
  • Translated README.md

1.0.2

Fixed

  • Memory issues when validating multiple targets

1.0.1

Changed

  • Removed XRechnung configuration from release artifacts and source (moved to own repository )

1.0.0

  • Initial Release