/** Returns the key's parent. */ @Override public Key getParent() { List<PathElement> ancestors = getAncestors(); if (ancestors.isEmpty()) { return null; } PathElement parent = ancestors.get(ancestors.size() - 1); Key.Builder keyBuilder; if (parent.hasName()) { keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getName()); } else { keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getId()); } String namespace = getNamespace(); if (namespace != null) { keyBuilder.setNamespace(namespace); } return keyBuilder.addAncestors(ancestors.subList(0, ancestors.size() - 1)).build(); }
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()); }
.build(); assertEquals("k", key.getKind()); assertEquals("ds1", key.getProjectId()); assertEquals("ns1", key.getNamespace()); assertEquals(1, key.getAncestors().size()); key = keyFactory.newKey(); assertEquals("k1", key.getKind()); assertEquals(PROJECT_ID, key.getProjectId()); assertTrue(key.getNamespace().isEmpty()); assertTrue(key.getAncestors().isEmpty()); assertEquals(PROJECT_ID, key.getProjectId()); assertEquals("ns1", key.getNamespace()); key = keyFactory.setProjectId("bla1").setNamespace("bla2").build(); assertEquals("bla1", key.getProjectId()); assertEquals("bla2", key.getNamespace()); keyFactory.reset().setKind("kind"); key = keyFactory.newKey(); assertEquals(PROJECT_ID, key.getProjectId()); assertEquals("ns1", key.getNamespace()); assertEquals("kind", key.getKind());
assertSame(entity4, entities.get(0)); assertEquals(PARTIAL_ENTITY2.getNames(), entity6.getNames()); assertEquals(PARTIAL_ENTITY2.getKey().getProjectId(), entity6.getKey().getProjectId()); assertEquals(PARTIAL_ENTITY2.getKey().getNamespace(), entity6.getKey().getNamespace()); assertEquals(PARTIAL_ENTITY2.getKey().getAncestors(), entity6.getKey().getAncestors());
assertSame(entity4, entities.get(0)); assertEquals(PARTIAL_ENTITY2.getProperties(), entity6.getProperties()); assertEquals(PARTIAL_ENTITY2.getKey().getProjectId(), entity6.getKey().getProjectId()); assertEquals(PARTIAL_ENTITY2.getKey().getNamespace(), entity6.getKey().getNamespace()); assertEquals(PARTIAL_ENTITY2.getKey().getAncestors(), entity6.getKey().getAncestors());
@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"); } }
@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); }
/** Returns the key's parent. */ @Override public Key getParent() { List<PathElement> ancestors = getAncestors(); if (ancestors.isEmpty()) { return null; } PathElement parent = ancestors.get(ancestors.size() - 1); Key.Builder keyBuilder; if (parent.hasName()) { keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getName()); } else { keyBuilder = Key.newBuilder(getProjectId(), parent.getKind(), parent.getId()); } String namespace = getNamespace(); if (namespace != null) { keyBuilder.setNamespace(namespace); } return keyBuilder.addAncestors(ancestors.subList(0, ancestors.size() - 1)).build(); }