From 61fded16d29be11422d3042139c260aec6155f53 Mon Sep 17 00:00:00 2001 From: Enrique Zamudio Date: Tue, 25 Jun 2013 12:37:41 -0500 Subject: [PATCH] Fix debugString for variable-length fields --- src/main/java/com/solab/iso8583/IsoMessage.java | 8 +++++++- src/test/java/j8583/TestBinaries.java | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/solab/iso8583/IsoMessage.java b/src/main/java/com/solab/iso8583/IsoMessage.java index e4d92c7..670100d 100644 --- a/src/main/java/com/solab/iso8583/IsoMessage.java +++ b/src/main/java/com/solab/iso8583/IsoMessage.java @@ -453,7 +453,13 @@ public class IsoMessage { for (int i = 2; i < 129; i++) { IsoValue v = fields[i]; if (v != null) { - sb.append(v); + String desc = v.toString(); + if (v.getType() == IsoType.LLBIN || v.getType() == IsoType.LLVAR) { + sb.append(String.format("%02d", desc.length())); + } else if (v.getType() == IsoType.LLLBIN || v.getType() == IsoType.LLLVAR) { + sb.append(String.format("%03d", desc.length())); + } + sb.append(desc); } } return sb.toString(); diff --git a/src/test/java/j8583/TestBinaries.java b/src/test/java/j8583/TestBinaries.java index f2c7de0..03c83fa 100644 --- a/src/test/java/j8583/TestBinaries.java +++ b/src/test/java/j8583/TestBinaries.java @@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.text.ParseException; +import com.solab.iso8583.IsoType; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -84,7 +85,10 @@ public class TestBinaries { testParsed(bin2); Assert.assertEquals(bin.getObjectValue(7).toString(), bin2.getObjectValue(7).toString()); //Test the debug string + ascii.setValue(60, "XXX", IsoType.LLVAR, 0); + bin.setValue(60, "XXX", IsoType.LLVAR, 0); Assert.assertEquals("Debug strings differ", ascii.debugString(), bin.debugString()); + Assert.assertTrue("LLVAR fields wrong", ascii.debugString().contains("03XXX")); } @Test