@Override public ProjectionEntityQuery build() { return new ProjectionEntityQuery(this); } }
@Test public void testProjectionEntityQueryBuilder() { compareBaseBuilderFields(PROJECTION_QUERY); assertEquals(PROJECTION, PROJECTION_QUERY.getProjection()); assertEquals(DISTINCT_ON, PROJECTION_QUERY.getDistinctOn()); }
@Test public void testToAndFromPb() { assertEquals( ENTITY_QUERY, StructuredQuery.fromPb( ResultType.ENTITY, ENTITY_QUERY.getNamespace(), ENTITY_QUERY.toPb())); assertEquals( KEY_QUERY, StructuredQuery.fromPb(ResultType.KEY, KEY_QUERY.getNamespace(), KEY_QUERY.toPb())); assertEquals( PROJECTION_QUERY, StructuredQuery.fromPb( ResultType.PROJECTION_ENTITY, PROJECTION_QUERY.getNamespace(), PROJECTION_QUERY.toPb())); }
static <T> QueryResults<T> of(Stats stats, Query<T> query, QueryResults<T> results) { final String kind = queryKind(query); stats.recordDatastoreQueries(kind, 1); if (query instanceof KeyQuery) { // Key queries do not count as entity reads return results; } if (query instanceof ProjectionEntityQuery && ((ProjectionEntityQuery) query).getDistinctOn().isEmpty()) { // Projection queries with no distinct on clause do not count as entity reads return results; } return new InstrumentedQueryResults<>(stats, kind, results); }
@Test public void testKeyOnly() { assertTrue(KEY_QUERY.isKeyOnly()); assertFalse(ENTITY_QUERY.isKeyOnly()); assertFalse(PROJECTION_QUERY.isKeyOnly()); } }
@Test public void mergeFrom() { compareMergedQuery( ENTITY_QUERY, new EntityQuery.Builder().mergeFrom(ENTITY_QUERY.toPb()).build()); compareMergedQuery(KEY_QUERY, new KeyQuery.Builder().mergeFrom(KEY_QUERY.toPb()).build()); compareMergedQuery( PROJECTION_QUERY, new ProjectionEntityQuery.Builder().mergeFrom(PROJECTION_QUERY.toPb()).build()); }
@Override public ProjectionEntityQuery build() { return new ProjectionEntityQuery(this); } }