Skip to content

Commit 0719974

Browse files
committed
[Java] Properly skip fields when generating appendTo for composite
Change-Id: I47b7d8d563c678fe14c316b8678c00051bfd602a
1 parent ba045ae commit 0719974

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2381,15 +2381,12 @@ private CharSequence generateCompositeDecoderDisplay(final List<Token> tokens, f
23812381
append(sb, indent, "{");
23822382
append(sb, indent, " builder.append(\"[\");");
23832383

2384-
for (int i = 1, end = tokens.size() - 1; i < end; i++)
2384+
for (int i = 1, end = tokens.size() - 1; i < end; )
23852385
{
23862386
final Token encodingToken = tokens.get(i);
23872387
final String propertyName = formatPropertyName(encodingToken.name());
23882388
writeTokenDisplay(propertyName, encodingToken, sb, indent + INDENT);
2389-
if (encodingToken.signal() == Signal.BEGIN_COMPOSITE)
2390-
{
2391-
i += encodingToken.componentTokenCount();
2392-
}
2389+
i += encodingToken.componentTokenCount();
23932390
}
23942391

23952392
append(sb, indent, " builder.setLength(builder.length() - 1);");

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
import java.nio.ByteBuffer;
4343

4444
import static org.hamcrest.core.Is.is;
45+
import static org.hamcrest.Matchers.not;
46+
import static org.hamcrest.Matchers.containsString;
4547
import static org.junit.Assert.assertThat;
4648
import static org.mockito.Matchers.any;
4749
import static org.mockito.Matchers.eq;
@@ -121,6 +123,19 @@ public void shouldDecodeCorrectly()
121123
assertThat(msgDecoder.encodedLength(), is(22));
122124
}
123125

126+
@Test
127+
public void shouldDisplayCorrectly()
128+
{
129+
final ByteBuffer encodedMsgBuffer = ByteBuffer.allocateDirect(MSG_BUFFER_CAPACITY);
130+
encodeTestMessage(encodedMsgBuffer);
131+
132+
final String compositeString = MSG_ENCODER.structure().toString();
133+
assertThat(compositeString, containsString("enumOne="));
134+
assertThat(compositeString, not(containsString("enumOne=|")));
135+
assertThat(compositeString, containsString("setOne="));
136+
assertThat(compositeString, not(containsString("setOne=|")));
137+
}
138+
124139
@Test
125140
public void shouldOtfDecodeCorrectly() throws Exception
126141
{

0 commit comments

Comments
 (0)