Skip to content

Commit b2d564a

Browse files
authored
Merge pull request #361 from xiangh-fr/master
[Java] Fix empty group display
2 parents 08a6015 + 58dd3f1 commit b2d564a

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,12 +2516,15 @@ private StringBuilder appendDecoderDisplay(
25162516

25172517
append(sb, indent, "builder.append(\"" + groupName + Separators.KEY_VALUE + Separators.BEGIN_GROUP + "\");");
25182518
append(sb, indent, groupDecoderName + " " + groupName + " = " + groupName + "();");
2519-
append(sb, indent, "while (" + groupName + ".hasNext())");
2519+
append(sb, indent, "if (" + groupName + ".count() > 0)");
25202520
append(sb, indent, "{");
2521-
append(sb, indent, " " + groupName + ".next().appendTo(builder);");
2522-
Separators.ENTRY.appendToGeneratedBuilder(sb, indent + INDENT, "builder");
2521+
append(sb, indent, " while (" + groupName + ".hasNext())");
2522+
append(sb, indent, " {");
2523+
append(sb, indent, " " + groupName + ".next().appendTo(builder);");
2524+
Separators.ENTRY.appendToGeneratedBuilder(sb, indent + INDENT + INDENT, "builder");
2525+
append(sb, indent, " }");
2526+
append(sb, indent, " builder.setLength(builder.length() - 1);");
25232527
append(sb, indent, "}");
2524-
append(sb, indent, "builder.setLength(builder.length() - 1);");
25252528
append(sb, indent, "builder.append(\"" + Separators.END_GROUP + Separators.FIELD + "\");");
25262529

25272530
i = findEndSignal(groups, i, Signal.END_GROUP, groupToken.name());

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/java/ToStringTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package uk.co.real_logic.sbe.generation.java;
22

3+
import org.agrona.concurrent.UnsafeBuffer;
34
import org.junit.Test;
45
import uk.co.real_logic.sbe.EncodedCarTestBase;
56

@@ -36,4 +37,20 @@ public void exampleMessagePrinted() throws Exception
3637
"make=Honda|model=Civic VTi|activationCode=|",
3738
result);
3839
}
40+
41+
@Test
42+
public void emptyMessagePrinted() throws Exception
43+
{
44+
final ByteBuffer encodedMsgBuffer = ByteBuffer.allocateDirect(MSG_BUFFER_CAPACITY);
45+
CAR.wrap(new UnsafeBuffer(encodedMsgBuffer), 0);
46+
47+
final String result = CAR.toString();
48+
assertEquals(
49+
"[Car]" +
50+
"(sbeTemplateId=1|sbeSchemaId=1|sbeSchemaVersion=0|sbeBlockLength=45):" +
51+
"serialNumber=0|modelYear=0|available=F|code=NULL_VAL|someNumbers=[0,0,0,0,0]|vehicleCode=|extras={}|" +
52+
"engine=(capacity=0|numCylinders=0|manufacturerCode=|)|" +
53+
"fuelFigures=[]|performanceFigures=[]|make=|model=|activationCode=|",
54+
result);
55+
}
3956
}

0 commit comments

Comments
 (0)