From 19e497186e235b4fd08fc80c043fbebe9b348826 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Wed, 20 Nov 2019 13:04:13 +0530 Subject: [PATCH 1/7] determine entity size using api --- .../google/cloud/datastore/BaseEntity.java | 28 +++++++++++++++---- .../com/google/cloud/datastore/Entity.java | 4 ++- .../google/cloud/datastore/EntityTest.java | 5 ++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java index 608dc7187610..237be22e1009 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java @@ -33,12 +33,7 @@ import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.Maps; import java.io.Serializable; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; /** * A base class for entities (key and properties). An entity is a Google Cloud Datastore persistent @@ -54,10 +49,12 @@ public abstract class BaseEntity implements Serializabl private static final long serialVersionUID = -9070588108769487081L; private final ImmutableSortedMap> properties; private final K key; + private int serializedSize; public abstract static class Builder> { private K key; + private int serializedSize; private final Map> properties = new HashMap<>(); Builder() {} @@ -73,6 +70,7 @@ public abstract static class Builder entity) { setKey(key); setProperties(entity.properties); + setSerializedSize(entity.toPb().getSerializedSize()); } protected K key() { @@ -98,6 +96,7 @@ B fill(com.google.datastore.v1.Entity entityPb) { setProperties(copiedProperties); if (entityPb.hasKey()) { setKey((K) IncompleteKey.fromPb(entityPb.getKey())); + setSerializedSize(entityPb.getSerializedSize()); } return self(); } @@ -113,6 +112,11 @@ public B setKey(K key) { return self(); } + /** Sets the size for the entity. */ + public B setSerializedSize(int serializedSize) { + this.serializedSize = serializedSize; + return self(); + } /** Clears all the properties. */ public B clear() { properties.clear(); @@ -446,11 +450,13 @@ public B setNull(String name) { BaseEntity(Builder builder) { this.key = builder.key; this.properties = ImmutableSortedMap.copyOf(builder.properties); + this.serializedSize = builder.serializedSize; } BaseEntity(BaseEntity from) { this.key = from.getKey(); this.properties = from.properties; + this.serializedSize = from.serializedSize; } @Override @@ -458,6 +464,7 @@ public String toString() { return MoreObjects.toStringHelper(this) .add("key", key) .add("properties", properties) + .add("size", serializedSize) .toString(); } @@ -636,6 +643,11 @@ public Map> getProperties() { return properties; } + /** Returns the entity size. */ + public int getSerializedSize() { + return serializedSize; + } + final com.google.datastore.v1.Entity toPb() { com.google.datastore.v1.Entity.Builder entityPb = com.google.datastore.v1.Entity.newBuilder(); for (Map.Entry> entry : properties.entrySet()) { @@ -646,4 +658,8 @@ final com.google.datastore.v1.Entity toPb() { } return entityPb.build(); } + /*set size of an entity*/ + protected void setSerializedSize(int size) { + this.serializedSize = size; + } } 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..21fde668d3dc 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 @@ -54,7 +54,9 @@ public Builder setKey(Key key) { @Override public Entity build() { Preconditions.checkState(key() != null); - return new Entity(this); + Entity entity = new Entity(this); + entity.setSerializedSize(entity.toPb().getSerializedSize()); + return entity; } } 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..698bd773b159 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() throws Exception { + assertTrue(ENTITY.getSerializedSize() > 0); + } } From f1fc01924034a0ed07da28aa13cfbdd39798356e Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Wed, 20 Nov 2019 13:31:14 +0530 Subject: [PATCH 2/7] organize individual import --- .../main/java/com/google/cloud/datastore/BaseEntity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java index 237be22e1009..18b7f6b3ec24 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java @@ -33,7 +33,12 @@ import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.Maps; import java.io.Serializable; -import java.util.*; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; /** * A base class for entities (key and properties). An entity is a Google Cloud Datastore persistent From 6371906f347fb71515a0a7b3e8dcd086cf8c4152 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Wed, 20 Nov 2019 15:57:10 +0530 Subject: [PATCH 3/7] updated code --- .../com/google/cloud/datastore/BaseEntity.java | 18 +++--------------- .../com/google/cloud/datastore/Entity.java | 4 +--- .../com/google/cloud/datastore/EntityTest.java | 2 +- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java index 18b7f6b3ec24..1d6cd40f027e 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java @@ -54,12 +54,11 @@ public abstract class BaseEntity implements Serializabl private static final long serialVersionUID = -9070588108769487081L; private final ImmutableSortedMap> properties; private final K key; - private int serializedSize; + private final int serializedSize; public abstract static class Builder> { private K key; - private int serializedSize; private final Map> properties = new HashMap<>(); Builder() {} @@ -75,7 +74,6 @@ public abstract static class Builder entity) { setKey(key); setProperties(entity.properties); - setSerializedSize(entity.toPb().getSerializedSize()); } protected K key() { @@ -101,7 +99,6 @@ B fill(com.google.datastore.v1.Entity entityPb) { setProperties(copiedProperties); if (entityPb.hasKey()) { setKey((K) IncompleteKey.fromPb(entityPb.getKey())); - setSerializedSize(entityPb.getSerializedSize()); } return self(); } @@ -117,11 +114,6 @@ public B setKey(K key) { return self(); } - /** Sets the size for the entity. */ - public B setSerializedSize(int serializedSize) { - this.serializedSize = serializedSize; - return self(); - } /** Clears all the properties. */ public B clear() { properties.clear(); @@ -455,7 +447,7 @@ public B setNull(String name) { BaseEntity(Builder builder) { this.key = builder.key; this.properties = ImmutableSortedMap.copyOf(builder.properties); - this.serializedSize = builder.serializedSize; + this.serializedSize = this.toPb().getSerializedSize(); } BaseEntity(BaseEntity from) { @@ -650,7 +642,7 @@ public Map> getProperties() { /** Returns the entity size. */ public int getSerializedSize() { - return serializedSize; + return this.serializedSize; } final com.google.datastore.v1.Entity toPb() { @@ -663,8 +655,4 @@ final com.google.datastore.v1.Entity toPb() { } return entityPb.build(); } - /*set size of an entity*/ - protected void setSerializedSize(int size) { - this.serializedSize = size; - } } 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 21fde668d3dc..69d230179b5a 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 @@ -54,9 +54,7 @@ public Builder setKey(Key key) { @Override public Entity build() { Preconditions.checkState(key() != null); - Entity entity = new Entity(this); - entity.setSerializedSize(entity.toPb().getSerializedSize()); - return entity; + return new Entity(this); } } 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 698bd773b159..21c47254f241 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 @@ -58,6 +58,6 @@ public void testCopyFromIncompleteEntity() throws Exception { @Test public void testEntitySize() throws Exception { - assertTrue(ENTITY.getSerializedSize() > 0); + assertEquals(ENTITY.getSerializedSize(), ENTITY.toPb().getSerializedSize()); } } From 9b5f0b793f8a41366e21602160ac664be5a3b0c4 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Wed, 20 Nov 2019 17:37:47 +0530 Subject: [PATCH 4/7] update code for testcase --- .../src/main/java/com/google/cloud/datastore/BaseEntity.java | 2 +- .../src/test/java/com/google/cloud/datastore/EntityTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java index 1d6cd40f027e..86b3478790f3 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java @@ -642,7 +642,7 @@ public Map> getProperties() { /** Returns the entity size. */ public int getSerializedSize() { - return this.serializedSize; + return serializedSize; } final com.google.datastore.v1.Entity toPb() { 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 21c47254f241..421e4a01fcfa 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 @@ -58,6 +58,6 @@ public void testCopyFromIncompleteEntity() throws Exception { @Test public void testEntitySize() throws Exception { - assertEquals(ENTITY.getSerializedSize(), ENTITY.toPb().getSerializedSize()); + assertEquals(ENTITY.toPb().getSerializedSize(), ENTITY.getSerializedSize()); } } From 66aae6f6d2bb93684025dc5e24c99a0f468230e6 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Fri, 22 Nov 2019 19:21:51 +0530 Subject: [PATCH 5/7] fix review changes --- .../main/java/com/google/cloud/datastore/BaseEntity.java | 9 --------- .../src/main/java/com/google/cloud/datastore/Entity.java | 5 +++++ .../test/java/com/google/cloud/datastore/EntityTest.java | 4 ++-- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java index 86b3478790f3..608dc7187610 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/BaseEntity.java @@ -54,7 +54,6 @@ public abstract class BaseEntity implements Serializabl private static final long serialVersionUID = -9070588108769487081L; private final ImmutableSortedMap> properties; private final K key; - private final int serializedSize; public abstract static class Builder> { @@ -447,13 +446,11 @@ public B setNull(String name) { BaseEntity(Builder builder) { this.key = builder.key; this.properties = ImmutableSortedMap.copyOf(builder.properties); - this.serializedSize = this.toPb().getSerializedSize(); } BaseEntity(BaseEntity from) { this.key = from.getKey(); this.properties = from.properties; - this.serializedSize = from.serializedSize; } @Override @@ -461,7 +458,6 @@ public String toString() { return MoreObjects.toStringHelper(this) .add("key", key) .add("properties", properties) - .add("size", serializedSize) .toString(); } @@ -640,11 +636,6 @@ public Map> getProperties() { return properties; } - /** Returns the entity size. */ - public int getSerializedSize() { - return serializedSize; - } - final com.google.datastore.v1.Entity toPb() { com.google.datastore.v1.Entity.Builder entityPb = com.google.datastore.v1.Entity.newBuilder(); for (Map.Entry> entry : properties.entrySet()) { 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..7cc912ce9cd1 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,9 @@ public static Builder newBuilder(Key key, FullEntity copyFrom) { public static Entity fromPb(com.google.datastore.v1.Entity entityPb) { return new Builder().fill(entityPb).build(); } + + public static int calculateSerializedSize(BaseEntity e) { + checkNotNull(e); + return e.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 421e4a01fcfa..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 @@ -57,7 +57,7 @@ public void testCopyFromIncompleteEntity() throws Exception { } @Test - public void testEntitySize() throws Exception { - assertEquals(ENTITY.toPb().getSerializedSize(), ENTITY.getSerializedSize()); + public void testEntitySize() { + assertEquals(ENTITY.toPb().getSerializedSize(), Entity.calculateSerializedSize(ENTITY)); } } From 31178971eaa3984317d411b48f647b0656b7c676 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Mon, 25 Nov 2019 12:38:16 +0530 Subject: [PATCH 6/7] fix review changes --- .../main/java/com/google/cloud/datastore/Entity.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 7cc912ce9cd1..586649fb0a5e 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 @@ -90,8 +90,13 @@ public static Entity fromPb(com.google.datastore.v1.Entity entityPb) { return new Builder().fill(entityPb).build(); } - public static int calculateSerializedSize(BaseEntity e) { - checkNotNull(e); - return e.toPb().getSerializedSize(); + /** + * Returns the serialized protobuf size of provided entity object. + * + * @param entity entity object to calculate serialize size. + */ + public static int calculateSerializedSize(BaseEntity entity) { + checkNotNull(entity); + return entity.toPb().getSerializedSize(); } } From 2693e5f76391b619e3d41e7125ab9becba676fff Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha Date: Mon, 25 Nov 2019 19:27:35 +0530 Subject: [PATCH 7/7] fix review changes --- .../src/main/java/com/google/cloud/datastore/Entity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 586649fb0a5e..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 @@ -91,9 +91,9 @@ public static Entity fromPb(com.google.datastore.v1.Entity entityPb) { } /** - * Returns the serialized protobuf size of provided entity object. + * Returns the size in bytes of the protobuf form of the provided entity. * - * @param entity entity object to calculate serialize size. + * @param entity object whose size is measured. */ public static int calculateSerializedSize(BaseEntity entity) { checkNotNull(entity);