assertSame(Entity.class, results2.getResultClass());
@Test public void testRunGqlQueryWithCasting() { @SuppressWarnings("unchecked") Query<Entity> query1 = (Query<Entity>) Query.newGqlQueryBuilder("select * from " + KIND1).build(); QueryResults<Entity> results1 = datastore.run(query1); assertTrue(results1.hasNext()); assertEquals(ENTITY1, results1.next()); assertFalse(results1.hasNext()); Query<?> query2 = Query.newGqlQueryBuilder("select * from " + KIND1).build(); QueryResults<?> results2 = datastore.run(query2); assertSame(Entity.class, results2.getResultClass()); @SuppressWarnings("unchecked") QueryResults<Entity> results3 = (QueryResults<Entity>) results2; assertTrue(results3.hasNext()); assertEquals(ENTITY1, results3.next()); assertFalse(results3.hasNext()); }
@Override public Class<?> getResultClass() { return results.getResultClass(); }
/** * Finds objects by using a Cloud Datastore query. If the query is a key-query, then keys are * returned. * @param query the query to execute. * @param entityClass the type of object to retrieve. * @param <T> the type of object to retrieve. * @return a list of the objects found. If no keys could be found the list will be * empty. */ public <T> Iterable<?> queryKeysOrEntities(Query query, Class<T> entityClass) { QueryResults results = getDatastoreReadWriter().run(query); if (results.getResultClass() == Key.class) { return () -> results; } return convertEntitiesForRead(results, entityClass); }
/** * Finds objects by using a Cloud Datastore query. If the query is a key-query, then keys are * returned. * @param query the query to execute. * @param entityClass the type of object to retrieve. * @param <T> the type of object to retrieve. * @return a list of the objects found. If no keys could be found the list will be * empty. */ public <T> Iterable<?> queryKeysOrEntities(Query query, Class<T> entityClass) { QueryResults results = getDatastoreReadWriter().run(query); if (results.getResultClass() == Key.class) { return () -> results; } return convertEntitiesForRead(results, entityClass); }