Skip to content

Commit 3001874

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 968e479 + 1bbfd31 commit 3001874

File tree

4 files changed

+28
-31
lines changed

4 files changed

+28
-31
lines changed

sbe-samples/src/main/resources/common-types.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
<type name="length" primitiveType="uint32" maxValue="1073741824"/>
1515
<type name="varData" primitiveType="uint8" length="0" characterEncoding="UTF-8"/>
1616
</composite>
17+
<composite name="varAsciiEncoding">
18+
<type name="length" primitiveType="uint32" maxValue="1073741824"/>
19+
<type name="varData" primitiveType="uint8" length="0" characterEncoding="ASCII"/>
20+
</composite>
1721
<composite name="varDataEncoding">
1822
<type name="length" primitiveType="uint32" maxValue="1073741824"/>
1923
<type name="varData" primitiveType="uint8" length="0"/>

sbe-samples/src/main/resources/example-extension-schema.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,6 @@
7676
</group>
7777
<data name="manufacturer" id="18" type="varStringEncoding"/>
7878
<data name="model" id="19" type="varStringEncoding"/>
79-
<data name="activationCode" id="20" type="varStringEncoding"/>
79+
<data name="activationCode" id="20" type="varAsciiEncoding"/>
8080
</sbe:message>
8181
</sbe:messageSchema>

sbe-samples/src/main/resources/example-schema.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@
7272
</group>
7373
<data name="manufacturer" id="18" type="varStringEncoding"/>
7474
<data name="model" id="19" type="varStringEncoding"/>
75-
<data name="activationCode" id="20" type="varStringEncoding"/>
75+
<data name="activationCode" id="20" type="varAsciiEncoding"/>
7676
</sbe:message>
7777
</sbe:messageSchema>

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

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import static uk.co.real_logic.sbe.generation.java.JavaUtil.*;
3737
import static uk.co.real_logic.sbe.ir.GenerationUtil.*;
3838

39+
@SuppressWarnings("MethodLength")
3940
public class JavaGenerator implements CodeGenerator
4041
{
4142
enum CodecType
@@ -910,26 +911,16 @@ private void generateDataDecodeMethods(
910911
if (characterEncoding.contains("ASCII"))
911912
{
912913
sb.append(String.format("\n" +
913-
indent + " public void get%1$s(final Appendable value)\n" +
914+
indent + " public int get%1$s(final Appendable appendable)\n" +
914915
indent + " {\n" +
915916
"%2$s" +
916917
indent + " final int headerLength = %3$d;\n" +
917918
indent + " final int limit = parentMessage.limit();\n" +
918919
indent + " final int dataLength = (int)%4$s;\n" +
919-
indent + " final int dataOffset = limit + headerLength;\n" +
920+
indent + " final int dataOffset = limit + headerLength;\n\n" +
920921
indent + " parentMessage.limit(dataOffset + dataLength);\n" +
921-
indent + " for (int i = 0; i < dataLength; ++i)\n" +
922-
indent + " {\n" +
923-
indent + " try\n" +
924-
indent + " {\n" +
925-
indent + " final int c = buffer.getByte(dataOffset + i) & 0xFF;\n" +
926-
indent + " value.append(c > 127 ? '?' : (char)c);\n" +
927-
indent + " }\n" +
928-
indent + " catch (final java.io.IOException e)\n" +
929-
indent + " {\n" +
930-
indent + " throw new java.io.UncheckedIOException(e);\n" +
931-
indent + " }\n" +
932-
indent + " }\n" +
922+
indent + " buffer.getStringWithoutLengthAscii(dataOffset, dataLength, appendable);\n\n" +
923+
indent + " return dataLength;\n" +
933924
indent + " }\n",
934925
Generators.toUpperFirstChar(propertyName),
935926
generateStringNotPresentConditionForAppendable(token.version(), indent),
@@ -1898,7 +1889,7 @@ private static CharSequence generateStringNotPresentConditionForAppendable(
18981889
return String.format(
18991890
indent + " if (parentMessage.actingVersion < %d)\n" +
19001891
indent + " {\n" +
1901-
indent + " return;\n" +
1892+
indent + " return 0;\n" +
19021893
indent + " }\n\n",
19031894
sinceVersion);
19041895
}
@@ -2010,36 +2001,40 @@ private CharSequence generatePrimitiveArrayPropertyDecode(
20102001
indent + " }\n\n",
20112002
propertyName,
20122003
generateStringNotPresentCondition(propertyToken.version(), indent),
2013-
fieldLength, offset,
2014-
fieldLength, fieldLength,
2004+
fieldLength,
2005+
offset,
2006+
fieldLength,
2007+
fieldLength,
20152008
charset(encoding.characterEncoding())));
20162009

20172010
if (encoding.characterEncoding().contains("ASCII"))
20182011
{
20192012
sb.append(String.format("\n" +
2020-
indent + " public void get%s(final Appendable value)\n" +
2013+
indent + " public int get%1$s(final Appendable value)\n" +
20212014
indent + " {\n" +
2022-
"%s" +
2023-
indent + " for (int i = 0; i < %d ; ++i)\n" +
2015+
"%2$s" +
2016+
indent + " for (int i = 0; i < %3$d; ++i)\n" +
20242017
indent + " {\n" +
2025-
indent + " final int c = buffer.getByte(this.offset + %d + i) & 0xFF;\n" +
2018+
indent + " final int c = buffer.getByte(this.offset + %4$d + i) & 0xFF;\n" +
20262019
indent + " if (c == 0)\n" +
20272020
indent + " {\n" +
2028-
indent + " break;\n" +
2029-
indent + " }\n" +
2021+
indent + " return i;\n" +
2022+
indent + " }\n\n" +
20302023
indent + " try\n" +
20312024
indent + " {\n" +
20322025
indent + " value.append(c > 127 ? '?' : (char)c);\n" +
20332026
indent + " }\n" +
2034-
indent + " catch (final java.io.IOException e)\n" +
2027+
indent + " catch (final java.io.IOException ex)\n" +
20352028
indent + " {\n" +
2036-
indent + " throw new java.io.UncheckedIOException(e);\n" +
2029+
indent + " throw new java.io.UncheckedIOException(ex);\n" +
20372030
indent + " }\n" +
2038-
indent + " }\n" +
2031+
indent + " }\n\n" +
2032+
indent + " return %3$d;\n" +
20392033
indent + " }\n\n",
20402034
Generators.toUpperFirstChar(propertyName),
20412035
generateStringNotPresentConditionForAppendable(propertyToken.version(), indent),
2042-
fieldLength, offset));
2036+
fieldLength,
2037+
offset));
20432038
}
20442039
}
20452040

@@ -2409,8 +2404,6 @@ private CharSequence generateFixedFlyweightCode(
24092404
generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())),
24102405
schemaIdAccessorType,
24112406
schemaVersionAccessorType);
2412-
2413-
24142407
}
24152408

24162409
private CharSequence generateDecoderFlyweightCode(final String className, final Token token)

0 commit comments

Comments
 (0)