diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java index 577c8c42ea47..d16afbce4d5e 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java @@ -105,8 +105,18 @@ public Key allocateId(IncompleteKey key) { return DatastoreHelper.allocateId(this, key); } + private boolean verifyIncompleteKeyType(IncompleteKey... keys) { + for (IncompleteKey key : keys) { + if (key instanceof Key) { + return false; + } + } + return true; + } + @Override public List allocateId(IncompleteKey... keys) { + Preconditions.checkArgument(verifyIncompleteKeyType(keys), "keys must be IncompleteKey instances"); if (keys.length == 0) { return Collections.emptyList(); } @@ -123,7 +133,7 @@ public List allocateId(IncompleteKey... keys) { return keyList.build(); } - com.google.datastore.v1.AllocateIdsResponse allocateIds( + private com.google.datastore.v1.AllocateIdsResponse allocateIds( final com.google.datastore.v1.AllocateIdsRequest requestPb) { try { return RetryHelper.runWithRetries( diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 4e1c1fe68cd1..d4717e2ce150 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -688,9 +688,12 @@ public void testAllocateId() { assertNotEquals(key1, key2); assertEquals(Key.newBuilder(pk1, key2.getId()).build(), key2); - Key key3 = datastore.allocateId(key1); - assertNotEquals(key1, key3); - assertEquals(Key.newBuilder(pk1, key3.getId()).build(), key3); + try { + datastore.allocateId(key1); + fail("Expecting a failure"); + } catch (IllegalArgumentException expected) { + assertEquals(expected.getMessage(), "keys must be IncompleteKey instances"); + } } @Test @@ -700,16 +703,20 @@ public void testAllocateIdArray() { IncompleteKey incompleteKey2 = keyFactory.setKind(KIND2).addAncestor(PathElement.of(KIND1, 10)).newKey(); Key key3 = keyFactory.newKey("name"); - Key key4 = keyFactory.newKey(1); - List result = - datastore.allocateId(incompleteKey1, incompleteKey2, key3, key4, incompleteKey1, key3); - assertEquals(6, result.size()); - assertEquals(Key.newBuilder(incompleteKey1, result.get(0).getId()).build(), result.get(0)); - assertEquals(Key.newBuilder(incompleteKey1, result.get(4).getId()).build(), result.get(4)); - assertEquals(Key.newBuilder(incompleteKey2, result.get(1).getId()).build(), result.get(1)); - assertEquals(Key.newBuilder(key3).setId(result.get(2).getId()).build(), result.get(2)); - assertEquals(Key.newBuilder(key3).setId(result.get(5).getId()).build(), result.get(5)); - assertEquals(Key.newBuilder(key4).setId(result.get(3).getId()).build(), result.get(3)); + List result1 = + datastore.allocateId(incompleteKey1, incompleteKey2, incompleteKey1); + assertEquals(3, result1.size()); + assertEquals(Key.newBuilder(incompleteKey1, result1.get(0).getId()).build(), result1.get(0)); + assertEquals(Key.newBuilder(incompleteKey1, result1.get(2).getId()).build(), result1.get(2)); + assertEquals(Key.newBuilder(incompleteKey2, result1.get(1).getId()).build(), result1.get(1)); + + try { + datastore.allocateId(incompleteKey1, incompleteKey2, key3); + fail("expecting a failure"); + } catch(IllegalArgumentException expected) { + assertEquals(expected.getMessage(), "keys must be IncompleteKey instances"); + + } } @Test diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java index a68175ccd6fc..16a1d24cc12d 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/it/ITDatastoreTest.java @@ -517,10 +517,6 @@ public void testAllocateId() { Key key2 = DATASTORE.allocateId(pk1); assertNotEquals(key1, key2); assertEquals(Key.newBuilder(pk1, key2.getId()).build(), key2); - - Key key3 = DATASTORE.allocateId(key1); - assertNotEquals(key1, key3); - assertEquals(Key.newBuilder(pk1, key3.getId()).build(), key3); } @Test @@ -529,17 +525,12 @@ public void testAllocateIdArray() { IncompleteKey incompleteKey1 = keyFactory.newKey(); IncompleteKey incompleteKey2 = keyFactory.setKind(KIND2).addAncestors(PathElement.of(KIND1, 10)).newKey(); - Key key3 = keyFactory.newKey("name"); - Key key4 = keyFactory.newKey(1); List result = - DATASTORE.allocateId(incompleteKey1, incompleteKey2, key3, key4, incompleteKey1, key3); - assertEquals(6, result.size()); + DATASTORE.allocateId(incompleteKey1, incompleteKey2, incompleteKey1); + assertEquals(3, result.size()); assertEquals(Key.newBuilder(incompleteKey1, result.get(0).getId()).build(), result.get(0)); - assertEquals(Key.newBuilder(incompleteKey1, result.get(4).getId()).build(), result.get(4)); + assertEquals(Key.newBuilder(incompleteKey1, result.get(2).getId()).build(), result.get(2)); assertEquals(Key.newBuilder(incompleteKey2, result.get(1).getId()).build(), result.get(1)); - assertEquals(Key.newBuilder(key3).setId(result.get(2).getId()).build(), result.get(2)); - assertEquals(Key.newBuilder(key3).setId(result.get(5).getId()).build(), result.get(5)); - assertEquals(Key.newBuilder(key4).setId(result.get(3).getId()).build(), result.get(3)); } @Test