diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Entity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Entity.java index 69d230179b5a..9d3a0c84510e 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Entity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/Entity.java @@ -89,4 +89,14 @@ public static Builder newBuilder(Key key, FullEntity copyFrom) { public static Entity fromPb(com.google.datastore.v1.Entity entityPb) { return new Builder().fill(entityPb).build(); } + + /** + * Returns the size in bytes of the protobuf form of the provided entity. + * + * @param entity object whose size is measured. + */ + public static int calculateSerializedSize(BaseEntity entity) { + checkNotNull(entity); + return entity.toPb().getSerializedSize(); + } } diff --git a/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/EntityTest.java b/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/EntityTest.java index a4ffe8a2c88b..31baa87fe379 100644 --- a/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/EntityTest.java +++ b/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/EntityTest.java @@ -55,4 +55,9 @@ public void testCopyFromIncompleteEntity() throws Exception { assertNotEquals(INCOMPLETE_ENTITY, entity); assertEquals(INCOMPLETE_ENTITY.getProperties(), entity.getProperties()); } + + @Test + public void testEntitySize() { + assertEquals(ENTITY.toPb().getSerializedSize(), Entity.calculateSerializedSize(ENTITY)); + } }