private void verifyIncompleteKey(IncompleteKey key, String namespace, PathElement... ancestors) { assertEquals("k", key.getKind()); assertEquals(PROJECT_ID, key.getProjectId()); assertEquals(namespace, key.getNamespace()); assertEquals(ancestors.length, key.getAncestors().size()); Iterator<PathElement> iter = key.getAncestors().iterator(); for (PathElement ancestor : ancestors) { assertEquals(ancestor, iter.next()); } } }
@Test public void testBuilders() throws Exception { assertEquals("ds", pk1.getProjectId()); assertEquals("kind1", pk1.getKind()); assertTrue(pk1.getAncestors().isEmpty()); assertEquals("ds", pk2.getProjectId()); assertEquals("kind3", pk2.getKind()); assertEquals(parent1.getPath(), pk2.getAncestors()); assertEquals(pk2, IncompleteKey.newBuilder(pk2).build()); IncompleteKey pk3 = IncompleteKey.newBuilder(pk2).setKind("kind4").build(); assertEquals("ds", pk3.getProjectId()); assertEquals("kind4", pk3.getKind()); assertEquals(parent1.getPath(), pk3.getAncestors()); }
.addAncestor(PathElement.of("p", 1)) .build(); assertEquals("k", key.getKind()); assertEquals("ds1", key.getProjectId()); assertEquals("ns1", key.getNamespace()); assertEquals("k1", key.getKind()); assertEquals(PROJECT_ID, key.getProjectId()); assertTrue(key.getNamespace().isEmpty()); assertEquals(PROJECT_ID, key.getProjectId()); assertEquals("ns1", key.getNamespace()); assertEquals("kind", key.getKind());
assertEquals(PARTIAL_ENTITY2.getKey().getNamespace(), entity6.getKey().getNamespace()); assertEquals(PARTIAL_ENTITY2.getKey().getAncestors(), entity6.getKey().getAncestors()); assertEquals(PARTIAL_ENTITY2.getKey().getKind(), entity6.getKey().getKind()); assertEquals(PARTIAL_ENTITY2.getKey(), IncompleteKey.newBuilder(entity6.getKey()).build()); assertEquals(PARTIAL_ENTITY2.getKey().getAncestors(), entity6.getKey().getAncestors());
assertEquals(PARTIAL_ENTITY2.getKey().getNamespace(), entity6.getKey().getNamespace()); assertEquals(PARTIAL_ENTITY2.getKey().getAncestors(), entity6.getKey().getAncestors()); assertEquals(PARTIAL_ENTITY2.getKey().getKind(), entity6.getKey().getKind()); assertEquals(PARTIAL_ENTITY2.getKey(), IncompleteKey.newBuilder(entity6.getKey()).build()); assertNotEquals(PARTIAL_ENTITY2.getKey().getPath(), entity6.getKey().getPath());
@Test public void testAllocateId() { KeyFactory keyFactory = datastore.newKeyFactory().setKind(KIND1); IncompleteKey pk1 = keyFactory.newKey(); Key key1 = datastore.allocateId(pk1); assertEquals(key1.getProjectId(), pk1.getProjectId()); assertEquals(key1.getNamespace(), pk1.getNamespace()); assertEquals(key1.getAncestors(), pk1.getAncestors()); assertEquals(key1.getKind(), pk1.getKind()); assertTrue(key1.hasId()); assertFalse(key1.hasName()); assertEquals(Key.newBuilder(pk1, key1.getId()).build(), key1); Key key2 = datastore.allocateId(pk1); assertNotEquals(key1, key2); assertEquals(Key.newBuilder(pk1, key2.getId()).build(), key2); try { datastore.allocateId(key1); fail("Expecting a failure"); } catch (IllegalArgumentException expected) { assertEquals(expected.getMessage(), "keys must be IncompleteKey instances"); } }
@Override public Object load(final Value<FullEntity<?>> container, final LoadContext ctx, final Path path) throws SkipException { final IncompleteKey key = container.get().getKey(); final EntityMetadata<?> meta = registrar.getMetadataSafe(key.getKind()); return meta.getTranslator().load(container, ctx, path); }
@Test public void testAllocateId() { KeyFactory keyFactory = DATASTORE.newKeyFactory().setKind(KIND1); IncompleteKey pk1 = keyFactory.newKey(); Key key1 = DATASTORE.allocateId(pk1); assertEquals(key1.getProjectId(), pk1.getProjectId()); assertEquals(key1.getNamespace(), pk1.getNamespace()); assertEquals(key1.getAncestors(), pk1.getAncestors()); assertEquals(key1.getKind(), pk1.getKind()); assertTrue(key1.hasId()); assertFalse(key1.hasName()); assertEquals(Key.newBuilder(pk1, key1.getId()).build(), key1); Key key2 = DATASTORE.allocateId(pk1); assertNotEquals(key1, key2); assertEquals(Key.newBuilder(pk1, key2.getId()).build(), key2); }
@Override default void addWithDeferredIdAllocation(FullEntity<?>... entities) { for (FullEntity<?> entity : entities) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); } batch().addWithDeferredIdAllocation(entities); }
@Override default Entity put(FullEntity<?> entity) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); return writer().put(entity); }
@Override default Entity add(FullEntity<?> entity) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); return writer().add(entity); }
@Override default List<Entity> put(FullEntity<?>... entities) { for (FullEntity<?> entity : entities) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); } return writer().put(entities); }
@Override default List<Entity> add(FullEntity<?>... entities) { for (FullEntity<?> entity : entities) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); } return writer().add(entities); }
@Override default void putWithDeferredIdAllocation(FullEntity<?>... entities) { for (FullEntity<?> entity : entities) { stats().recordDatastoreEntityWrites(entity.getKey().getKind(), 1); } batch().putWithDeferredIdAllocation(entities); }