From 9da568414409115cfda544b400b574621f3e0d1d Mon Sep 17 00:00:00 2001 From: Ioannis Rosuochatzakis Date: Thu, 26 Mar 2026 12:36:21 +0100 Subject: [PATCH 1/4] docs: Update changelog for 1.6.0 release --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4632fe..9d68945 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,40 @@ -# eForms Core Library 1.5.0 Release Notes +# eForms Core Library 1.6.0 Release Notes -The eForms Core Library is a collection of utilities that are used by our sample applications as well as the EFX Toolkit for Java Developers. +The eForms Core Library is a collection of utilities used by the EFX Toolkit for Java Developers and other eForms applications. ## In this release -This release fixes an issue in the XPathProcessor that could cause a redundant predicate production when contextualising XPaths with multiple predicates. +### SDK entity improvements -The versions of various dependencies was updated: Apache Commons IO 2.19.0, Apache Commons Lang 3.18.0, Jackson 2.18.3, logback 1.5.18. +- Versioned SDK entity classes (`SdkFieldV1`, `SdkFieldV2`, `SdkNodeV1`, `SdkNodeV2`, etc.) have been moved from the EFX Toolkit into the core library, consolidating version-specific implementations in a single location. +- `SdkNode` now supports parent node references and ancestor chain traversal via `getAncestry()`. The return type is `List` (ordered) rather than `Set`. +- `SdkField` now exposes repeatability information, parent node references, and parsed XPath metadata via `getXpathInfo()`. +- Repository classes (`SdkNodeRepository`, `SdkFieldRepository`) now use two-pass loading to wire parent-child relationships during initialization. + +### Privacy and data type support + +- Added `PrivacySettings` to `SdkField`, providing access to privacy code, justification, publication date, and related field references. +- Introduced `SdkDataType` entity and `SdkDataTypeRepository` for field type-level metadata including privacy masking values. +- Separated `duration` as a distinct data type from `measure`. + +### Notice subtype management + +- Added `SdkNoticeSubtype` entity with intelligent ID parsing (prefix/number/suffix decomposition) and correct sorting order. +- Added `SdkNoticeTypeRepository` to load and manage notice subtypes. +- Renamed `getSdkNoticeType()` to `getSdkNoticeSubtype()` for semantic accuracy. + +### Utilities + +- Moved `NoticeDocument` and `SafeDocumentBuilder` from the eforms-notice-viewer into the core library. `NoticeDocument` provides secure XML parsing with accessors for notice subtype, SDK version, and language detection. `SafeDocumentBuilder` implements XXE prevention following OWASP guidelines. + +### Component registry + +- Added component types for dependency extraction (`EFX_COMPUTE_DEPENDENCY_EXTRACTOR`, `EFX_VALIDATION_DEPENDENCY_EXTRACTOR`) and EFX rules translation (`EFX_RULES_TRANSLATOR`). +- Renamed `VALIDATOR_MARKUP_GENERATOR` to `VALIDATOR_GENERATOR`. + +### Dependencies + +- Updated versions of various dependencies. ## Download From 41cc66ee63c77635e92b793a74e9e689e024c0f1 Mon Sep 17 00:00:00 2001 From: Ioannis Rosuochatzakis Date: Thu, 26 Mar 2026 12:40:01 +0100 Subject: [PATCH 2/4] docs: Update package READMEs for 1.6.0 --- src/main/java/eu/europa/ted/eforms/sdk/README.md | 4 +++- src/main/java/eu/europa/ted/eforms/sdk/entity/README.md | 8 ++++---- .../java/eu/europa/ted/eforms/sdk/repository/README.md | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/europa/ted/eforms/sdk/README.md b/src/main/java/eu/europa/ted/eforms/sdk/README.md index 39fdd00..32102b1 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/README.md +++ b/src/main/java/eu/europa/ted/eforms/sdk/README.md @@ -4,6 +4,8 @@ The `eu.europa.ted.eforms.sdk` package contains the core classes and packages th The main packages included here are: -* `component`: Provides a solution for handling multiple major versions of the SDK in parallel. +* `component`: Provides a solution for handling multiple major versions of the SDK in parallel. +* `entity`: Provides abstract entity classes for representing SDK metadata (fields, nodes, codelists, notice subtypes, data types). +* `repository`: Provides classes for reading SDK entities from JSON and Genericode files. * `resource`: Provides a solution for automatically discovering and downloading new versions of the eForms SDK. diff --git a/src/main/java/eu/europa/ted/eforms/sdk/entity/README.md b/src/main/java/eu/europa/ted/eforms/sdk/entity/README.md index a9f0bc6..ff413cf 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/entity/README.md +++ b/src/main/java/eu/europa/ted/eforms/sdk/entity/README.md @@ -1,14 +1,14 @@ # Common Entities -The entities in this package can be used while reading data from the eForms SDK. Currently there are only four entities implemented here: +The entities in this package can be used while reading data from the eForms SDK. The following entities are implemented here: -* `SdkField`: Can hold basic information about a field. -* `SdkNode`: Can hold basic information about a node and reconstruct the node hierarchy. +* `SdkField`: Can hold basic information about a field, including repeatability, parent node, XPath metadata, and privacy settings. +* `SdkNode`: Can hold basic information about a node and reconstruct the node hierarchy via parent references and ancestor chain traversal. * `SdkCodelist`: Can hold codelist information including its codes. * `SdkNoticeSubtype`: Can hold information about a notice subtype from the SDK's notice-types.json file. +* `SdkDataType`: Can hold field type-level metadata including privacy masking values. All the classes are abstract so that they can have specific implementations for different major versions of the eForms SDK if needed. This package also includes a factory class (`SdkEntityFactory`) that is meant to be used for instantiating concrete implementations of these abstract entity classes for different major versions of the eForms SDK. -_There is no rocket science in the code in this package. You are welcome to reuse it. It is intended to be used primarily by the EFX Toolkit and our sample applications._ diff --git a/src/main/java/eu/europa/ted/eforms/sdk/repository/README.md b/src/main/java/eu/europa/ted/eforms/sdk/repository/README.md index 36e2912..598c7be 100644 --- a/src/main/java/eu/europa/ted/eforms/sdk/repository/README.md +++ b/src/main/java/eu/europa/ted/eforms/sdk/repository/README.md @@ -10,4 +10,5 @@ This package contains: * `SdkFieldRepository`: can populate a `HashMap` with `SdkField` objects read form `fields.json` * `SdkNodeRepository`: can populate a `HashMap` with `SdkNode` objects read form `fields.json` * `SdkCodelistRepository`: can populate a `HashMap` with `SdkCodelist` objects (including all codelist codes), by reading the `.gc` files from the `codelists` folder of the eForms SDK. -* `SdkNoticeTypeRepository`: can populate a `HashMap` with `SdkNoticeSubtype` objects read from `notice-types.json` \ No newline at end of file +* `SdkNoticeTypeRepository`: can populate a `HashMap` with `SdkNoticeSubtype` objects read from `notice-types.json` +* `SdkDataTypeRepository`: can populate a `HashMap` with `SdkDataType` objects \ No newline at end of file From dd3a3c6f3d73bb82fd7a61feae87965196b8d6c7 Mon Sep 17 00:00:00 2001 From: Ioannis Rosuochatzakis Date: Thu, 26 Mar 2026 12:48:05 +0100 Subject: [PATCH 3/4] docs: Fix component type rename description in changelog --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d68945..a5eabc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ The eForms Core Library is a collection of utilities used by the EFX Toolkit for ### SDK entity improvements - Versioned SDK entity classes (`SdkFieldV1`, `SdkFieldV2`, `SdkNodeV1`, `SdkNodeV2`, etc.) have been moved from the EFX Toolkit into the core library, consolidating version-specific implementations in a single location. -- `SdkNode` now supports parent node references and ancestor chain traversal via `getAncestry()`. The return type is `List` (ordered) rather than `Set`. +- `SdkNode` now supports parent node references and ancestor chain traversal via `getAncestry()`. - `SdkField` now exposes repeatability information, parent node references, and parsed XPath metadata via `getXpathInfo()`. - Repository classes (`SdkNodeRepository`, `SdkFieldRepository`) now use two-pass loading to wire parent-child relationships during initialization. @@ -21,7 +21,6 @@ The eForms Core Library is a collection of utilities used by the EFX Toolkit for - Added `SdkNoticeSubtype` entity with intelligent ID parsing (prefix/number/suffix decomposition) and correct sorting order. - Added `SdkNoticeTypeRepository` to load and manage notice subtypes. -- Renamed `getSdkNoticeType()` to `getSdkNoticeSubtype()` for semantic accuracy. ### Utilities @@ -30,7 +29,6 @@ The eForms Core Library is a collection of utilities used by the EFX Toolkit for ### Component registry - Added component types for dependency extraction (`EFX_COMPUTE_DEPENDENCY_EXTRACTOR`, `EFX_VALIDATION_DEPENDENCY_EXTRACTOR`) and EFX rules translation (`EFX_RULES_TRANSLATOR`). -- Renamed `VALIDATOR_MARKUP_GENERATOR` to `VALIDATOR_GENERATOR`. ### Dependencies From 2b6928168d90e7b36cdc1309809b110515220557 Mon Sep 17 00:00:00 2001 From: Ioannis Rosuochatzakis Date: Thu, 26 Mar 2026 13:43:12 +0100 Subject: [PATCH 4/4] pom: Set version to 1.6.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9e664eb..90bb10f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ eu.europa.ted.eforms eforms-core-java - 1.6.0-SNAPSHOT + 1.6.0 eForms Core Library API and tools for eForms applications.