diff --git a/CHANGELOG.md b/CHANGELOG.md index 87c556c2..53f7c986 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,98 +1,96 @@ # Prowide Core - CHANGELOG -#### 10.2.6 - April 2025 +#### 9.5.6 - April 2025 * (CU-86b49rvw4) Updated label for Fields 14[P,Q,R]/16W/29[Q,W] * (PW-2239) BIC Branch check for all upper and lower case * (PW-2239) Notify Test and Training BIC usage in DN. -#### 10.2.5 - December 2024 +#### 9.5.5 - December 2024 * Update apache-commons-lang3 from 3.14.0 to 3.17.0 fixing derived apache-text dependency vulnerabilities * Minor thread safety fix in the `PropertyLoaded` class, used by the `SafeXmlUtils` * Gradle wrapper update to 8.12 -#### 10.2.4 - November 2024 +#### 9.5.4 - November 2024 * Rolling back SHA-256 checksum algorithm to MD5 in the MT message model -#### 10.2.3 - November 2024 +#### 9.5.3 - November 2024 * (PW-2040) Updated the BBAN validation data file to the IBAN REGISTRY Jul 2024 release * (PW-2006) Fixed `getMUR` and `setMUR` in `SwiftMessage` to prioritize field 108 in block 4 over block 3 for system messages (category 0) * Added new `MtSequenceEnum` with all the available inner sequences of specific MT schemas * Added `isSystemMessage()` to SwiftMessage to check if the message is a category 0 message (010. 011, etc...) + * Added new `MtSequenceEnum` with all the available inner sequences of specific MT schemas -#### 10.2.2 - October 2024 +#### 9.5.2 - October 2024 * Added new `FieldEnum` with all the available field names * Code security improvements as per CodeQL recommendations -#### 10.2.1 - June 2024 +#### 9.5.1 - June 2024 * (PW-1913) Added IBAN validation for Egypt local account structure * Restore deprecated method in MT210 class -#### 10.2.0 - May 2024 +#### 9.5.0 - May 2024 * SWIFT Standard release update 2024 (live 16 November 2025) * Yearly revision of deprecation phase (see https://dev.prowidesoftware.com/SRU2024/getting-started/deprecation/) - * Dependency update: commons-lang3 -> 3.14.0 - * Dependency update: gson -> 2.11.0 + * Dependency update: commons-lang3 -> 3.14.0' + * Dependency update: gson -> 2.11.0' -#### 10.1.15 - May 2024 +#### 9.4.16 - May 2024 * (PW-1862) Added NarrativeFragment class for detailed line information in StructuredNarrative fragments * Fixed SwiftMessage getPDE(): return empty value instead of null when codeword exists and has no value * Added isPercentage() helper method to field 37K -#### 10.1.14 - March 2024 +#### 9.4.15 - March 2024 * (PW-1812) Updated the narrative resolver, format 2 (used in field 72 for example), to allow empty values as part of the narrative fragment * Updated validators for BIC, country, and currency constraints to utilize keywords for i18n-compatible messages * Deprecated unnecessary methods in the SafeXmlUtils class -#### 10.1.13 - December 2023 +#### 9.4.14 - December 2023 * (PW-1718) Changed the getComponentLabel(component) in Field59F to be dynamic based on the line identifiers (similar to existing API in Field50F) -#### 10.1.12 - November 2023 +#### 9.4.13 - November 2023 * (PW-1697) Fixed validation/parse pattern in field 29O * (PW-1697) MT306 changes in field 30I * Added DistinguishedName with Builder in order to encapsulate the BIC branch name logic -#### 10.1.11 - November 2023 +#### 9.4.12 - November 2023 * (PW-1697) Fixed validation pattern in fields 14[H,K,L,M,N,O] and 29J -#### 10.1.10 - November 2023 +#### 9.4.11 - November 2023 * (PW-1695) Fixed a stack overflow in the fields fromJson implementation when a malformed JSON input contains empty field names * (PW-1688) Added missing field labels for SRU2023 changes in the pw_swift_*.properties file -#### 10.1.9 - October 2023 +#### 9.4.10 - October 2023 * (PW-1675) update to Field 31R to support also two date components as requested by SCORE messages * Added 36B and 36D getters to MT543 -#### 10.1.8 - October 2023 +#### 9.4.9 - October 2023 * (PW-1659) Field 24G deprecated Name and Address for Narrative -#### 10.1.7 - October 2023 +#### 9.4.8 - October 2023 * Added default methods for sender, receiver, and identifier extraction to the MessageExtractionStrategy * Added JSON to the `FileFormat` enumeration -#### 10.1.6 - September 2023 +#### 9.4.7 - September 2023 * (PW-1478) Fixed Field 44J parse and getValue to enable proper data preservation when the field contains multiline content -#### 10.1.5 - September 2023 +#### 9.4.6 - September 2023 * Added support for an optional `pw-swift-core.properties` to customize the behavior of the SafeXmlUtils class -#### 10.1.4 - September 2023 +#### 9.4.5 - August 2023 * (PW-1478) Field 44J parse and getValue fix -#### 10.1.3 - August 2023 +#### 9.4.4 - August 2023 * (PW-1478) Field 44J format fixed to allow multiline -#### 10.1.2 - August 2023 +#### 9.4.3 - July 2023 * (PW-1461) Remove deprecation of field 31R model since is it used back in SRU2023 * (PW-1405) Trim original String payload when creating an AbstractSwiftMessage -#### 10.1.1 - July 2023 +#### 9.4.2 - June 2023 * (GH-163) Remove unnecessary padding in sender and receiver in AbstractMT#creeate(number, sender, receiver) method * (PW-1323) Fixing getValue method for pattern issue in Field44J -#### 10.1.0 - June 2023 - * Migration to Java 11 - * Migration to Jakarta EE 10 - * (PW-1323) Fixing getValue method for pattern issue in Field44J +#### 9.4.1 - June 2023 * (PW-1323) Fixing missing pattern issue in Field44J #### 9.4.0 - May 2023 diff --git a/build.gradle b/build.gradle index 1d0bd474..e7a0b7d7 100644 --- a/build.gradle +++ b/build.gradle @@ -4,10 +4,10 @@ buildscript { gradlePluginPortal() } dependencies { - classpath 'ru.vyarus:gradle-quality-plugin:4.9.0' - classpath 'pl.allegro.tech.build:axion-release-plugin:1.15.1' - classpath 'io.github.gradle-nexus:publish-plugin:1.3.0' - classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.23.3' + classpath 'ru.vyarus:gradle-quality-plugin:5.0.0' + classpath 'pl.allegro.tech.build:axion-release-plugin:1.14.5' // starting with version 15.* requires Java 11 + classpath 'io.github.gradle-nexus:publish-plugin:2.0.0' + classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.13.0' // above this version requires Java 11 } } apply plugin: 'pl.allegro.tech.build.axion-release' @@ -38,7 +38,7 @@ project.version = "${SRU}-${scmVersion.version}" java { toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) + languageVersion.set(JavaLanguageVersion.of(8)) } } @@ -57,14 +57,12 @@ dependencies { implementation 'org.apache.commons:commons-lang3:3.17.0' implementation 'com.google.code.gson:gson:2.11.0' - // jakarta is only used for annotations, we do not add it as implementation dependency on purpose to avoid forcing - // users to use jakarta jars in their project when they might not even be using JPA or JAXB at all - compileOnly 'jakarta.persistence:jakarta.persistence-api:3.1.0' // jakarta 3.1 is Jakarta EE 10, jakarta 3.2 would imply migration to Jakarta EE 11 - compileOnly 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.2' - compileOnly 'jakarta.validation:jakarta.validation-api:3.1.0' + compileOnly 'javax.persistence:javax.persistence-api:2.2' + compileOnly 'javax.xml.bind:jaxb-api:2.3.1' + compileOnly 'javax.validation:validation-api:2.0.1.Final' - testImplementation 'jakarta.persistence:jakarta.persistence-api:3.1.0' - testImplementation 'jakarta.validation:jakarta.validation-api:3.1.0' + testImplementation 'javax.validation:validation-api:2.0.1.Final' + testImplementation 'javax.persistence:javax.persistence-api:2.2' testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testImplementation 'org.assertj:assertj-core:3.27.2' testImplementation 'org.xmlunit:xmlunit-core:2.10.0' @@ -72,11 +70,7 @@ dependencies { testImplementation 'org.xmlunit:xmlunit-assertj:2.10.0' } -sourceSets.named('main') { - java { - setSrcDirs(['src/main/java', 'src/generated/java']) - } -} +sourceSets.main.java.srcDirs = ['src/main/java', 'src/generated/java'] test { useJUnitPlatform() @@ -84,17 +78,17 @@ test { tasks.withType(Jar).configureEach { manifest.attributes( - 'Specification-Title': 'Prowide Core', - 'Specification-Version': project.version, - 'Specification-Vendor': "${SRU}", - 'Implementation-Title': 'Prowide Core', - 'Implementation-Version': project.version, - 'Implementation-Vendor': 'www.prowidesoftware.com', - 'Built-OS': System.getProperty('os.name'), - 'Source-Compatibility': JavaVersion.VERSION_11, - 'Target-Compatibility': JavaVersion.VERSION_11, - 'Built-Date': new Date().format("yyyy-MM-dd"), - 'Automatic-Module-Name': 'com.prowidesoftware.core' + 'Specification-Title': 'Prowide Core', + 'Specification-Version': project.version, + 'Specification-Vendor': "${SRU}", + 'Implementation-Title': 'Prowide Core', + 'Implementation-Version': project.version, + 'Implementation-Vendor': 'www.prowidesoftware.com', + 'Built-OS': System.getProperty('os.name'), + 'Source-Compatibility': project.sourceCompatibility, + 'Target-Compatibility': project.targetCompatibility, + 'Built-Date': new Date().format("yyyy-MM-dd"), + 'Automatic-Module-Name': 'com.prowidesoftware.core' ) } @@ -276,6 +270,12 @@ tasks.withType(Test).configureEach { } } +tasks.register('testOn11', Test) { + javaLauncher = javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(11) + } +} + tasks.register('testOn17', Test) { javaLauncher = javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(17) diff --git a/src/main/java/com/prowidesoftware/swift/constraints/BicConstraint.java b/src/main/java/com/prowidesoftware/swift/constraints/BicConstraint.java index 02509900..4063ee52 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/BicConstraint.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/BicConstraint.java @@ -17,12 +17,12 @@ import static java.lang.annotation.ElementType.*; -import jakarta.validation.Constraint; -import jakarta.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; /** * Bean validation for BIC numbers. diff --git a/src/main/java/com/prowidesoftware/swift/constraints/BicValidator.java b/src/main/java/com/prowidesoftware/swift/constraints/BicValidator.java index 90baf922..7a5909d3 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/BicValidator.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/BicValidator.java @@ -17,8 +17,8 @@ import com.prowidesoftware.swift.model.BIC; import com.prowidesoftware.swift.model.BicValidationResult; -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; /** diff --git a/src/main/java/com/prowidesoftware/swift/constraints/CountryConstraint.java b/src/main/java/com/prowidesoftware/swift/constraints/CountryConstraint.java index cca0811e..b58fad4d 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/CountryConstraint.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/CountryConstraint.java @@ -17,12 +17,12 @@ import static java.lang.annotation.ElementType.*; -import jakarta.validation.Constraint; -import jakarta.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; /** * Bean validation for ISO Alpha-2 country codes. diff --git a/src/main/java/com/prowidesoftware/swift/constraints/CountryValidator.java b/src/main/java/com/prowidesoftware/swift/constraints/CountryValidator.java index 59c6a0a9..ab8b5050 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/CountryValidator.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/CountryValidator.java @@ -16,8 +16,8 @@ package com.prowidesoftware.swift.constraints; import com.prowidesoftware.swift.utils.IsoUtils; -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; /** diff --git a/src/main/java/com/prowidesoftware/swift/constraints/CurrencyConstraint.java b/src/main/java/com/prowidesoftware/swift/constraints/CurrencyConstraint.java index c035229d..20990668 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/CurrencyConstraint.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/CurrencyConstraint.java @@ -17,12 +17,12 @@ import static java.lang.annotation.ElementType.*; -import jakarta.validation.Constraint; -import jakarta.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; /** * Bean validation for ISO currency codes. diff --git a/src/main/java/com/prowidesoftware/swift/constraints/CurrencyValidator.java b/src/main/java/com/prowidesoftware/swift/constraints/CurrencyValidator.java index ea2519b1..fae441be 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/CurrencyValidator.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/CurrencyValidator.java @@ -16,8 +16,8 @@ package com.prowidesoftware.swift.constraints; import com.prowidesoftware.swift.utils.IsoUtils; -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; /** diff --git a/src/main/java/com/prowidesoftware/swift/constraints/IbanConstraint.java b/src/main/java/com/prowidesoftware/swift/constraints/IbanConstraint.java index 5bceb1ef..4c3056f2 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/IbanConstraint.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/IbanConstraint.java @@ -17,12 +17,12 @@ import static java.lang.annotation.ElementType.*; -import jakarta.validation.Constraint; -import jakarta.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; /** * Bean validation for IBAN numbers. diff --git a/src/main/java/com/prowidesoftware/swift/constraints/IbanValidator.java b/src/main/java/com/prowidesoftware/swift/constraints/IbanValidator.java index 638ece08..2eaf443a 100644 --- a/src/main/java/com/prowidesoftware/swift/constraints/IbanValidator.java +++ b/src/main/java/com/prowidesoftware/swift/constraints/IbanValidator.java @@ -17,8 +17,8 @@ import com.prowidesoftware.swift.model.IBAN; import com.prowidesoftware.swift.model.IbanValidationResult; -import jakarta.validation.ConstraintValidator; -import jakarta.validation.ConstraintValidatorContext; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; /** diff --git a/src/main/java/com/prowidesoftware/swift/model/AbstractSwiftMessage.java b/src/main/java/com/prowidesoftware/swift/model/AbstractSwiftMessage.java index ca19d32f..05fbbbf3 100644 --- a/src/main/java/com/prowidesoftware/swift/model/AbstractSwiftMessage.java +++ b/src/main/java/com/prowidesoftware/swift/model/AbstractSwiftMessage.java @@ -19,8 +19,6 @@ import com.google.gson.GsonBuilder; import com.prowidesoftware.JsonSerializable; import com.prowidesoftware.swift.utils.Lib; -import jakarta.persistence.*; -import jakarta.xml.bind.annotation.XmlTransient; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -28,6 +26,8 @@ import java.math.BigDecimal; import java.text.NumberFormat; import java.util.*; +import javax.persistence.*; +import javax.xml.bind.annotation.XmlTransient; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/main/java/com/prowidesoftware/swift/model/FileFormat.java b/src/main/java/com/prowidesoftware/swift/model/FileFormat.java index f2ca7518..6d9e7b70 100644 --- a/src/main/java/com/prowidesoftware/swift/model/FileFormat.java +++ b/src/main/java/com/prowidesoftware/swift/model/FileFormat.java @@ -36,7 +36,6 @@ public enum FileFormat { /** * @deprecated undefined and unused file format */ - @Deprecated @ProwideDeprecated(phase3 = TargetYear.SRU2025) MQ_MT("mt"), /** diff --git a/src/main/java/com/prowidesoftware/swift/model/MtSwiftMessage.java b/src/main/java/com/prowidesoftware/swift/model/MtSwiftMessage.java index da2e6453..4add0122 100644 --- a/src/main/java/com/prowidesoftware/swift/model/MtSwiftMessage.java +++ b/src/main/java/com/prowidesoftware/swift/model/MtSwiftMessage.java @@ -21,9 +21,6 @@ import com.prowidesoftware.swift.model.mt.AbstractMT; import com.prowidesoftware.swift.model.mt.DefaultMtMetadataStrategy; import com.prowidesoftware.swift.model.mt.MTVariant; -import jakarta.persistence.Column; -import jakarta.persistence.DiscriminatorValue; -import jakarta.persistence.Entity; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -31,6 +28,9 @@ import java.util.Objects; import java.util.Optional; import java.util.logging.Level; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; import org.apache.commons.lang3.EnumUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageNote.java b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageNote.java index c092a0a5..d077c23d 100644 --- a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageNote.java +++ b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageNote.java @@ -15,8 +15,8 @@ */ package com.prowidesoftware.swift.model; -import jakarta.persistence.*; import java.util.Calendar; +import javax.persistence.*; /** * Comments associated to a message for application only usage (not part of the standard). diff --git a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageRevision.java b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageRevision.java index 855a6f90..9120051e 100644 --- a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageRevision.java +++ b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageRevision.java @@ -15,11 +15,11 @@ */ package com.prowidesoftware.swift.model; -import static jakarta.persistence.FetchType.LAZY; +import static javax.persistence.FetchType.LAZY; -import jakarta.persistence.*; import java.util.Calendar; import java.util.Objects; +import javax.persistence.*; /** * A revision is a snapshot of message content and is used to track the history of changes in a message. diff --git a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageStatusInfo.java b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageStatusInfo.java index c6dd7ee7..5895b4b7 100644 --- a/src/main/java/com/prowidesoftware/swift/model/SwiftMessageStatusInfo.java +++ b/src/main/java/com/prowidesoftware/swift/model/SwiftMessageStatusInfo.java @@ -15,11 +15,11 @@ */ package com.prowidesoftware.swift.model; -import static jakarta.persistence.FetchType.LAZY; +import static javax.persistence.FetchType.LAZY; -import jakarta.persistence.*; import java.util.Calendar; import java.util.Objects; +import javax.persistence.*; /** * Status tracking record for application only usage (not part of the standard).
diff --git a/src/test/java/com/prowidesoftware/swift/constraints/IbanValidatorTest.java b/src/test/java/com/prowidesoftware/swift/constraints/IbanValidatorTest.java index 5ed87058..dc5304ed 100644 --- a/src/test/java/com/prowidesoftware/swift/constraints/IbanValidatorTest.java +++ b/src/test/java/com/prowidesoftware/swift/constraints/IbanValidatorTest.java @@ -4,8 +4,8 @@ import com.prowidesoftware.swift.model.IBAN; import com.prowidesoftware.swift.model.IbanValidationResult; -import jakarta.validation.ClockProvider; -import jakarta.validation.ConstraintValidatorContext; +import javax.validation.ClockProvider; +import javax.validation.ConstraintValidatorContext; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; diff --git a/src/test/java/com/prowidesoftware/swift/model/field/FieldComponentLabelsCompatibilityTest.java b/src/test/java/com/prowidesoftware/swift/model/field/FieldComponentLabelsCompatibilityTest.java index b5f106d8..46b63c11 100644 --- a/src/test/java/com/prowidesoftware/swift/model/field/FieldComponentLabelsCompatibilityTest.java +++ b/src/test/java/com/prowidesoftware/swift/model/field/FieldComponentLabelsCompatibilityTest.java @@ -59,8 +59,8 @@ public void test() throws Exception { int missing = 0; int availableOK = 0; int availableError = 0; - for (Class c : classes) { - Field f = (Field) c.getDeclaredConstructor().newInstance(); + for (Class c : classes) { + Field f = (Field) c.newInstance(); int size = f.getComponents().size(); final String label = Field.getLabelComponents(f.getName(), null, null, null); if (label.endsWith(".components")) {