Handle nulls in Java autogeneration

Bug: 143979391
Test: m -j
Change-Id: I93146faa1976cac195c2250832d12ee4a09ae969
Merged-In: I93146faa1976cac195c2250832d12ee4a09ae969
This commit is contained in:
Muhammad Qureshi
2019-12-08 20:31:01 -08:00
parent ef19b08b05
commit 01268dec13

View File

@@ -83,7 +83,7 @@ static int write_java_methods(
// Print method body.
string indent("");
if (DEFAULT_MODULE_NAME != moduleName) {
fprintf(out, " if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {\n");
fprintf(out, " if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {\n");
indent = " ";
}
@@ -116,16 +116,19 @@ static int write_java_methods(
fprintf(out, "%s builder.writeString(arg%d);\n", indent.c_str(), argIndex);
break;
case JAVA_TYPE_BYTE_ARRAY:
fprintf(out, "%s builder.writeByteArray(arg%d);\n",
indent.c_str(), argIndex);
fprintf(out, "%s builder.writeByteArray(null == arg%d ? new byte[0] : arg%d);\n",
indent.c_str(), argIndex, argIndex);
break;
case JAVA_TYPE_ATTRIBUTION_CHAIN:
{
const char* uidName = attributionDecl.fields.front().name.c_str();
const char* tagName = attributionDecl.fields.back().name.c_str();
fprintf(out, "%s builder.writeAttributionChain(%s, %s);\n",
indent.c_str(), uidName, tagName);
fprintf(out, "%s builder.writeAttributionChain(\n", indent.c_str());
fprintf(out, "%s null == %s ? new int[0] : %s,\n",
indent.c_str(), uidName, uidName);
fprintf(out, "%s null == %s ? new String[0] : %s);\n",
indent.c_str(), tagName, tagName);
break;
}
case JAVA_TYPE_KEY_VALUE_PAIR: