Skip to content

Commit c72b7e8

Browse files
committed
[Java] Better handle null strings passed to encoders.
1 parent 85c2186 commit c72b7e8

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,7 +1030,7 @@ private void generateCharArrayEncodeMethods(
10301030
sb.append(String.format("\n" +
10311031
indent + " public %1$s %2$s(final String value)\n" +
10321032
indent + " {\n" +
1033-
indent + " final int length = value.length();\n" +
1033+
indent + " final int length = null == value ? 0 : value.length();\n" +
10341034
indent + " if (length > %3$d)\n" +
10351035
indent + " {\n" +
10361036
indent + " throw new IllegalStateException(\"length > maxValue for type: \" + length);\n" +
@@ -1051,7 +1051,7 @@ private void generateCharArrayEncodeMethods(
10511051
sb.append(String.format("\n" +
10521052
indent + " public %1$s %2$s(final CharSequence value)\n" +
10531053
indent + " {\n" +
1054-
indent + " final int length = value.length();\n" +
1054+
indent + " final int length = null == value ? 0 : value.length();\n" +
10551055
indent + " if (length > %3$d)\n" +
10561056
indent + " {\n" +
10571057
indent + " throw new IllegalStateException(\"length > maxValue for type: \" + length);\n" +
@@ -1082,7 +1082,7 @@ private void generateCharArrayEncodeMethods(
10821082
indent + " final byte[] bytes;\n" +
10831083
indent + " try\n" +
10841084
indent + " {\n" +
1085-
indent + " bytes = value.isEmpty() ?" +
1085+
indent + " bytes = null == value || value.isEmpty() ?" +
10861086
" org.agrona.collections.ArrayUtil.EMPTY_BYTE_ARRAY : value.getBytes(\"%3$s\");\n" +
10871087
indent + " }\n" +
10881088
indent + " catch (final java.io.UnsupportedEncodingException ex)\n" +
@@ -2139,7 +2139,7 @@ private void generateCharArrayEncodeMethods(
21392139
indent + " public %1$s %2$s(final String src)\n" +
21402140
indent + " {\n" +
21412141
indent + " final int length = %3$d;\n" +
2142-
indent + " final int srcLength = src.length();\n" +
2142+
indent + " final int srcLength = null == src ? 0 : src.length();\n" +
21432143
indent + " if (srcLength > length)\n" +
21442144
indent + " {\n" +
21452145
indent + " throw new IndexOutOfBoundsException(" +
@@ -2160,7 +2160,7 @@ private void generateCharArrayEncodeMethods(
21602160
indent + " public %1$s %2$s(final CharSequence src)\n" +
21612161
indent + " {\n" +
21622162
indent + " final int length = %3$d;\n" +
2163-
indent + " final int srcLength = src.length();\n" +
2163+
indent + " final int srcLength = null == src ? 0 : src.length();\n" +
21642164
indent + " if (srcLength > length)\n" +
21652165
indent + " {\n" +
21662166
indent + " throw new IndexOutOfBoundsException(" +
@@ -2189,7 +2189,7 @@ private void generateCharArrayEncodeMethods(
21892189
indent + " public %s %s(final String src)\n" +
21902190
indent + " {\n" +
21912191
indent + " final int length = %d;\n" +
2192-
indent + " final byte[] bytes = src.getBytes(%s);\n" +
2192+
indent + " final byte[] bytes = null == src ? new byte[0] : src.getBytes(%s);\n" +
21932193
indent + " if (bytes.length > length)\n" +
21942194
indent + " {\n" +
21952195
indent + " throw new IndexOutOfBoundsException(" +

0 commit comments

Comments
 (0)