From 290a64355ebabe45f24fcfde94d8f82b24aa82d0 Mon Sep 17 00:00:00 2001 From: ptorres-prowide Date: Wed, 18 Sep 2024 17:25:36 -0300 Subject: [PATCH] CU-86b14j4e0_SRU2024_check-code-security-reports-at-GitHub-for-all-repos --- .../swift/model/SwiftTagListBlock.java | 18 +- .../swift/model/field/Field21T.java | 2 +- .../swift/model/field/Field21T.java.bak | 416 ++++++++++++++++++ .../swift/model/field/Field37P.java | 12 +- .../swift/model/field/Field37U.java | 12 +- .../swift/model/field/Field39D.java | 12 +- 6 files changed, 442 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/prowidesoftware/swift/model/field/Field21T.java.bak diff --git a/src/main/java/com/prowidesoftware/swift/model/SwiftTagListBlock.java b/src/main/java/com/prowidesoftware/swift/model/SwiftTagListBlock.java index f3303818..aa275612 100644 --- a/src/main/java/com/prowidesoftware/swift/model/SwiftTagListBlock.java +++ b/src/main/java/com/prowidesoftware/swift/model/SwiftTagListBlock.java @@ -21,13 +21,14 @@ import com.prowidesoftware.swift.model.field.Field16R; import com.prowidesoftware.swift.model.field.Field16S; import com.prowidesoftware.swift.model.field.GenericField; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.Validate; + import java.io.Serializable; import java.util.*; import java.util.logging.Level; import java.util.stream.Collectors; -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.Validate; /** * Base class for SWIFT blocks that contain and arbitrary set of fields (3, 4, 5 and user blocks).
@@ -57,7 +58,8 @@ public class SwiftTagListBlock extends SwiftBlock implements Serializable, Itera * Default constructor, shouldn't be used normally. * present only for subclasses */ - public SwiftTagListBlock() {} + public SwiftTagListBlock() { + } /** * Intended to be used by search results in this class @@ -1327,8 +1329,8 @@ private int indexOfFirstValue(final String tagname, final String value, boolean final Tag t = this.tags.get(i); if ((ignoreCR && t.equalsIgnoreCR(new Tag(tagname, value))) || (!ignoreCR - && StringUtils.equals(tagname, t.getName()) - && StringUtils.equals(value, t.getValue()))) { + && StringUtils.equals(tagname, t.getName()) + && StringUtils.equals(value, t.getValue()))) { return i; } } @@ -1940,7 +1942,7 @@ public SwiftTagListBlock append(final Tag... tags) { * @since 7.7 */ public SwiftTagListBlock append(final Field field) { - Validate.notNull(field); + Validate.isTrue(field != null); this.tags.add(field.asTag()); return this; } @@ -1953,7 +1955,7 @@ public SwiftTagListBlock append(final Field field) { * @since 7.8 */ public SwiftTagListBlock append(final Field... fields) { - if (fields != null && fields.length > 0) { + if (fields != null) { for (final Field f : fields) { append(f); } diff --git a/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java b/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java index dba381ad..b0658a56 100644 --- a/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java +++ b/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java @@ -384,7 +384,7 @@ public static List getAll(final SwiftTagListBlock block) { return result; } final Tag[] arr = block.getTagsByName(NAME); - if (arr != null && arr.length > 0) { + if (arr != null) { for (final Tag f : arr) { result.add(new Field21T(f)); } diff --git a/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java.bak b/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java.bak new file mode 100644 index 00000000..dba381ad --- /dev/null +++ b/src/main/java/com/prowidesoftware/swift/model/field/Field21T.java.bak @@ -0,0 +1,416 @@ +/* + * Copyright 2006-2023 Prowide + * + * Licensed 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. + */ +package com.prowidesoftware.swift.model.field; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.prowidesoftware.deprecation.ProwideDeprecated; +import com.prowidesoftware.deprecation.TargetYear; +import com.prowidesoftware.swift.model.*; +import com.prowidesoftware.swift.model.Tag; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; + +/** + * SWIFT MT Field 21T. + *

+ * Model and parser for field 21T of a SWIFT MT message. + * + *

Subfields (components) Data types + *

    + *
  1. Component 1: Reference: String
  2. + *
+ * + *

Structure definition + *

+ * + *

+ * This class complies with standard release SRU2022 + * + * @deprecated This field has been moved to the Prowide Integrator since it is only used in SCORE messages, not in the general MT standard + */ +@ProwideDeprecated(phase4 = TargetYear.SRU2025) +public class Field21T extends Field implements Serializable { + /** + * Constant identifying the SRU to which this class belongs to. + */ + public static final int SRU = 2022; + + private static final long serialVersionUID = 1L; + /** + * Constant with the field name 21T. + */ + public static final String NAME = "21T"; + /** + * Same as NAME, intended to be clear when using static imports. + */ + public static final String F_21T = "21T"; + + /** + * Component number for the Reference subfield. + */ + public static final Integer REFERENCE = 1; + + /** + * Default constructor. Creates a new field setting all components to null. + */ + public Field21T() { + super(1); + } + + /** + * Creates a new field and initializes its components with content from the parameter value. + * @param value complete field value including separators and CRLF + */ + public Field21T(final String value) { + super(value); + } + + /** + * Creates a new field and initializes its components with content from the parameter tag. + * The value is parsed with {@link #parse(String)} + * @throws IllegalArgumentException if the parameter tag is null or its tagname does not match the field name + * @since 7.8 + */ + public Field21T(final Tag tag) { + this(); + if (tag == null) { + throw new IllegalArgumentException("tag cannot be null."); + } + if (!StringUtils.equals(tag.getName(), "21T")) { + throw new IllegalArgumentException("cannot create field 21T from tag " + tag.getName() + + ", tagname must match the name of the field."); + } + parse(tag.getValue()); + } + + /** + * Copy constructor. + * Initializes the components list with a deep copy of the source components list. + * @param source a field instance to copy + * @since 7.7 + */ + public static Field21T newInstance(Field21T source) { + Field21T cp = new Field21T(); + cp.setComponents(new ArrayList<>(source.getComponents())); + return cp; + } + + /** + * Create a Tag with this field name and the given value. + * Shorthand for new Tag(NAME, value) + * @see #NAME + * @since 7.5 + */ + public static Tag tag(final String value) { + return new Tag(NAME, value); + } + + /** + * Create a Tag with this field name and an empty string as value. + * Shorthand for new Tag(NAME, "") + * @see #NAME + * @since 7.5 + */ + public static Tag emptyTag() { + return new Tag(NAME, ""); + } + + /** + * Parses the parameter value into the internal components structure. + * + *

Used to update all components from a full new value, as an alternative + * to setting individual components. Previous component values are overwritten. + * + * @param value complete field value including separators and CRLF + * @since 7.8 + */ + @Override + public void parse(final String value) { + init(1); + setComponent1(value); + } + + /** + * Serializes the fields' components into the single string value (SWIFT format) + */ + @Override + public String getValue() { + final StringBuilder result = new StringBuilder(); + append(result, 1); + return result.toString(); + } + + /** + * Returns a localized suitable for showing to humans string of a field component.
+ * + * @param component number of the component to display + * @param locale optional locale to format date and amounts, if null, the default locale is used + * @return formatted component value or null if component number is invalid or not present + * @throws IllegalArgumentException if component number is invalid for the field + * @since 7.8 + */ + @Override + public String getValueDisplay(int component, Locale locale) { + if (component != 1) { + throw new IllegalArgumentException("invalid component number " + component + " for field 21T"); + } + // default format (as is) + return getComponent(1); + } + + /** + * Returns the field component types pattern. + * + * This method returns a letter representing the type for each component in the Field. It supersedes + * the Components Pattern because it distinguishes between N (Number) and I (BigDecimal). + * @since 9.2.7 + */ + @Override + public String typesPattern() { + return "S"; + } + + /** + * Returns the field parser pattern. + */ + @Override + public String parserPattern() { + return "S"; + } + + /** + * Returns the field validator pattern + */ + @Override + public String validatorPattern() { + return "16x(***)"; + } + + /** + * Given a component number it returns true if the component is optional, + * regardless of the field being mandatory in a particular message.
+ * Being the field's value conformed by a composition of one or several + * internal component values, the field may be present in a message with + * a proper value but with some of its internal components not set. + * + * @param component component number, first component of a field is referenced as 1 + * @return true if the component is optional for this field, false otherwise + */ + @Override + public boolean isOptional(int component) { + return false; + } + + /** + * Returns true if the field is a GENERIC FIELD as specified by the standard. + * @return true if the field is generic, false otherwise + */ + @Override + public boolean isGeneric() { + return false; + } + + /** + * Returns the defined amount of components.
+ * This is not the amount of components present in the field instance, but the total amount of components + * that this field accepts as defined. + * @since 7.7 + */ + @Override + public int componentsSize() { + return 1; + } + + /** + * Returns english label for components. + *
+ * The index in the list is in sync with specific field component structure. + * @see #getComponentLabel(int) + * @since 7.8.4 + */ + @Override + public List getComponentLabels() { + List result = new ArrayList<>(); + result.add("Reference"); + return result; + } + + /** + * Returns a mapping between component numbers and their label in camel case format. + * @since 7.10.3 + */ + @Override + protected Map getComponentMap() { + Map result = new HashMap<>(); + result.put(1, "reference"); + return result; + } + + /** + * @see Field#getLabelMap() + * @since 9.3.12 + */ + @Override + protected Map getLabelMap() { + if (super.labelMap != null && !super.labelMap.isEmpty()) { + // return cached map + return super.labelMap; + } + super.labelMap = new HashMap<>(); + super.labelMap.put("reference", 1); + return super.labelMap; + } + + /** + * Gets the component 1 (Reference). + * @return the component 1 + */ + public String getComponent1() { + return getComponent(1); + } + + /** + * Gets the Reference (component 1). + * @return the Reference from component 1 + */ + public String getReference() { + return getComponent1(); + } + + /** + * Set the component 1 (Reference). + * + * @param component1 the Reference to set + * @return the field object to enable build pattern + */ + public Field21T setComponent1(String component1) { + setComponent(1, component1); + return this; + } + + /** + * Set the Reference (component 1). + * + * @param component1 the Reference to set + * @return the field object to enable build pattern + */ + public Field21T setReference(String component1) { + return setComponent1(component1); + } + + /** + * Returns the field's name composed by the field number and the letter option (if any). + * @return the static value of Field21T.NAME + */ + @Override + public String getName() { + return NAME; + } + + /** + * Gets the first occurrence form the tag list or null if not found. + * @return null if not found o block is null or empty + * @param block may be null or empty + */ + public static Field21T get(final SwiftTagListBlock block) { + if (block == null || block.isEmpty()) { + return null; + } + final Tag t = block.getTagByName(NAME); + if (t == null) { + return null; + } + return new Field21T(t); + } + + /** + * Gets the first instance of Field21T in the given message. + * @param msg may be empty or null + * @return null if not found or msg is empty or null + * @see #get(SwiftTagListBlock) + */ + public static Field21T get(final SwiftMessage msg) { + if (msg == null || msg.getBlock4() == null || msg.getBlock4().isEmpty()) { + return null; + } + return get(msg.getBlock4()); + } + + /** + * Gets a list of all occurrences of the field Field21T in the given message + * an empty list is returned if none found. + * @param msg may be empty or null in which case an empty list is returned + * @see #getAll(SwiftTagListBlock) + */ + public static List getAll(final SwiftMessage msg) { + if (msg == null || msg.getBlock4() == null || msg.getBlock4().isEmpty()) { + return java.util.Collections.emptyList(); + } + return getAll(msg.getBlock4()); + } + + /** + * Gets a list of all occurrences of the field Field21T from the given block + * an empty list is returned if none found. + * + * @param block may be empty or null in which case an empty list is returned + */ + public static List getAll(final SwiftTagListBlock block) { + final List result = new ArrayList<>(); + if (block == null || block.isEmpty()) { + return result; + } + final Tag[] arr = block.getTagsByName(NAME); + if (arr != null && arr.length > 0) { + for (final Tag f : arr) { + result.add(new Field21T(f)); + } + } + return result; + } + + /** + * This method deserializes the JSON data into a Field21T object. + * @param json JSON structure including tuples with label and value for all field components + * @return a new field instance with the JSON data parsed into field components or an empty field id the JSON is invalid + * @since 7.10.3 + * @see Field#fromJson(String) + */ + public static Field21T fromJson(final String json) { + + final Field21T field = new Field21T(); + + final JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject(); + + // **** COMPONENT 1 - Reference + + if (jsonObject.get("reference") != null) { + field.setComponent1(jsonObject.get("reference").getAsString()); + } + + return field; + } +} diff --git a/src/main/java/com/prowidesoftware/swift/model/field/Field37P.java b/src/main/java/com/prowidesoftware/swift/model/field/Field37P.java index fee4d842..72543d72 100644 --- a/src/main/java/com/prowidesoftware/swift/model/field/Field37P.java +++ b/src/main/java/com/prowidesoftware/swift/model/field/Field37P.java @@ -19,18 +19,16 @@ import com.google.gson.JsonParser; import com.prowidesoftware.deprecation.ProwideDeprecated; import com.prowidesoftware.deprecation.TargetYear; -import com.prowidesoftware.swift.model.*; +import com.prowidesoftware.swift.model.SwiftMessage; +import com.prowidesoftware.swift.model.SwiftTagListBlock; import com.prowidesoftware.swift.model.Tag; import com.prowidesoftware.swift.utils.SwiftFormatUtils; +import org.apache.commons.lang3.StringUtils; + import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import org.apache.commons.lang3.StringUtils; +import java.util.*; /** * @deprecated This field has been removed since SRU2024 diff --git a/src/main/java/com/prowidesoftware/swift/model/field/Field37U.java b/src/main/java/com/prowidesoftware/swift/model/field/Field37U.java index e716a045..de45bd3f 100644 --- a/src/main/java/com/prowidesoftware/swift/model/field/Field37U.java +++ b/src/main/java/com/prowidesoftware/swift/model/field/Field37U.java @@ -19,18 +19,16 @@ import com.google.gson.JsonParser; import com.prowidesoftware.deprecation.ProwideDeprecated; import com.prowidesoftware.deprecation.TargetYear; -import com.prowidesoftware.swift.model.*; +import com.prowidesoftware.swift.model.SwiftMessage; +import com.prowidesoftware.swift.model.SwiftTagListBlock; import com.prowidesoftware.swift.model.Tag; import com.prowidesoftware.swift.utils.SwiftFormatUtils; +import org.apache.commons.lang3.StringUtils; + import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import org.apache.commons.lang3.StringUtils; +import java.util.*; /** * @deprecated This field has been removed since SRU2024 diff --git a/src/main/java/com/prowidesoftware/swift/model/field/Field39D.java b/src/main/java/com/prowidesoftware/swift/model/field/Field39D.java index fef198cf..8a005f55 100644 --- a/src/main/java/com/prowidesoftware/swift/model/field/Field39D.java +++ b/src/main/java/com/prowidesoftware/swift/model/field/Field39D.java @@ -19,16 +19,14 @@ import com.google.gson.JsonParser; import com.prowidesoftware.deprecation.ProwideDeprecated; import com.prowidesoftware.deprecation.TargetYear; -import com.prowidesoftware.swift.model.*; +import com.prowidesoftware.swift.model.SwiftMessage; +import com.prowidesoftware.swift.model.SwiftTagListBlock; import com.prowidesoftware.swift.model.Tag; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; import org.apache.commons.lang3.StringUtils; +import java.io.Serializable; +import java.util.*; + /** * @deprecated This field has been removed since SRU2024 */