File tree Expand file tree Collapse file tree 1 file changed +12
-6
lines changed
sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -371,14 +371,20 @@ private void generateComputeEncodedLength(
371371 .append (formatPropertyName (propertyName )).append ("HeaderLength();\n " );
372372
373373 final String characterEncoding = varDataToken .encoding ().characterEncoding ();
374- final String lengthAccessor = characterEncoding == null ? ".length" : ".length()" ;
375- lengthBuilder .append (indent ).append (INDENT ).append ("encodedLength += " )
376- .append ("this." ).append (fieldName ).append (lengthAccessor );
374+ lengthBuilder .append (indent ).append (INDENT ).append ("encodedLength += " );
377375
378- final int elementByteLength = varDataToken .encoding ().primitiveType ().size ();
379- if (elementByteLength != 1 )
376+ if (characterEncoding == null )
377+ {
378+ lengthBuilder .append ("this." ).append (fieldName ).append (".length" );
379+ }
380+ else if (JavaUtil .isAsciiEncoding (characterEncoding ))
381+ {
382+ lengthBuilder .append ("this." ).append (fieldName ).append (".length()" );
383+ }
384+ else
380385 {
381- lengthBuilder .append (" * " ).append (elementByteLength );
386+ lengthBuilder .append ("this." ).append (fieldName )
387+ .append (".getBytes(" ).append (JavaUtil .charset (characterEncoding )).append (").length" );
382388 }
383389
384390 lengthBuilder .append (";\n \n " );
You can’t perform that action at this time.
0 commit comments