diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java index 88b32d5a3c..6f5c0cf10b 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java @@ -154,9 +154,6 @@ private static DynamicMessage convertJsonToProtoMessageImpl( String.format( "JSONObject does not have the required field %s.%s.", jsonScope, missingFieldName)); } - if (topLevel && msg.getSerializedSize() == 0) { - throw new IllegalArgumentException("The created protobuf message is empty."); - } return msg; } diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java index 14c2d3763b..7b5c6bcfad 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessageTest.java @@ -1035,13 +1035,9 @@ public void testEmptyProtoMessage() throws Exception { JSONObject json = new JSONObject(); json.put("test_repeated", new JSONArray(new int[0])); - try { - DynamicMessage protoMsg = - JsonToProtoMessage.convertJsonToProtoMessage(RepeatedInt64.getDescriptor(), json); - Assert.fail("Should fail"); - } catch (IllegalArgumentException e) { - assertEquals("The created protobuf message is empty.", e.getMessage()); - } + DynamicMessage protoMsg = + JsonToProtoMessage.convertJsonToProtoMessage(RepeatedInt64.getDescriptor(), json); + assertEquals(protoMsg.getAllFields().size(), 0); } @Test @@ -1123,4 +1119,15 @@ public void testJsonNullValue() throws Exception { JsonToProtoMessage.convertJsonToProtoMessage(TestInt64.getDescriptor(), json); assertEquals(expectedProto, protoMsg); } + + @Test + public void testJsonAllFieldsNullValue() throws Exception { + TestInt64 expectedProto = TestInt64.newBuilder().build(); + JSONObject json = new JSONObject(); + json.put("long", JSONObject.NULL); + json.put("int", JSONObject.NULL); + DynamicMessage protoMsg = + JsonToProtoMessage.convertJsonToProtoMessage(TestInt64.getDescriptor(), json); + assertEquals(expectedProto, protoMsg); + } }