From 6c93733833304f2a7bf71defcf18bc43233e0b7f Mon Sep 17 00:00:00 2001 From: Chengyu Yao Date: Wed, 17 Jan 2024 10:25:51 -0800 Subject: [PATCH] Enable handling of complex field --- .../java/org/jpos/iso/ISOTagStringFieldPackager.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/jpos/src/main/java/org/jpos/iso/ISOTagStringFieldPackager.java b/jpos/src/main/java/org/jpos/iso/ISOTagStringFieldPackager.java index 19232ae9b5..2c2e35be4d 100644 --- a/jpos/src/main/java/org/jpos/iso/ISOTagStringFieldPackager.java +++ b/jpos/src/main/java/org/jpos/iso/ISOTagStringFieldPackager.java @@ -136,10 +136,16 @@ private String makeExceptionMessage(ISOComponent c, String operation) { */ public byte[] pack(ISOComponent c) throws ISOException { try{ - String data = (String)c.getValue(); + String data; + if(c.getValue() instanceof byte[]) + data = new String(c.getBytes(), ISOUtil.CHARSET); // transparent handling of complex fields + else + data = (String)c.getValue(); + if (data.length() > getLength()) + { throw new ISOException("Field length " + data.length() + " too long. Max: " + getLength()); - + } int tag = (Integer)c.getKey(); String paddedData = padder.pad(data, getLength()); byte[] rawData = new byte[tagPrefixer.getPackedLength()+prefixer.getPackedLength()