@@ -266,16 +266,18 @@ public Entity read(Key key) {
266266 *
267267 * @param query
268268 * {@link Query} to execute upon the Datastore
269+ * @param <E>
270+ * the type of queried entities
269271 * @return results fo the query as a lazily evaluated {@link Iterator}
270272 * @see DatastoreReader#run(Query)
271273 */
272- public DsQueryIterator read (StructuredQuery <Entity > query ) {
274+ public < E extends BaseEntity <?>> DsQueryIterator < E > read (StructuredQuery <E > query ) {
273275 Namespace namespace = currentNamespace ();
274- StructuredQuery <Entity > queryWithNamespace =
276+ StructuredQuery <E > queryWithNamespace =
275277 query .toBuilder ()
276278 .setNamespace (namespace .getValue ())
277279 .build ();
278- DsQueryIterator result = new DsQueryIterator (queryWithNamespace , actor );
280+ DsQueryIterator < E > result = new DsQueryIterator <> (queryWithNamespace , actor );
279281 return result ;
280282 }
281283
@@ -292,11 +294,13 @@ public DsQueryIterator read(StructuredQuery<Entity> query) {
292294 * {@link Query} to execute upon the Datastore
293295 * @param pageSize
294296 * a non-zero number of elements to be returned per a single read from Datastore
297+ * @param <E>
298+ * the type of queried entities
295299 * @return results fo the query as a lazily evaluated {@link Iterator}
296300 * @throws IllegalArgumentException
297301 * if the provided {@linkplain StructuredQuery#getLimit() query includes a limit}
298302 */
299- Iterator <Entity > readAll (StructuredQuery <Entity > query , int pageSize ) {
303+ < E extends BaseEntity <?>> Iterator <E > readAll (StructuredQuery <E > query , int pageSize ) {
300304 return readAllPageByPage (query , pageSize );
301305 }
302306
@@ -311,11 +315,13 @@ Iterator<Entity> readAll(StructuredQuery<Entity> query, int pageSize) {
311315 *
312316 * @param query
313317 * {@link Query} to execute upon the Datastore
318+ * @param <E>
319+ * the type of queried entities
314320 * @return results fo the query as a lazily evaluated {@link Iterator}
315321 * @throws IllegalArgumentException
316322 * if the provided {@linkplain StructuredQuery#getLimit() query includes a limit}
317323 */
318- Iterator <Entity > readAll (StructuredQuery <Entity > query ) {
324+ < E extends BaseEntity <?>> Iterator <E > readAll (StructuredQuery <E > query ) {
319325 return readAllPageByPage (query , null );
320326 }
321327
@@ -333,26 +339,29 @@ Iterator<Entity> readAll(StructuredQuery<Entity> query) {
333339 * @param pageSize
334340 * a non-zero number of elements to be returned per a single read from Datastore;
335341 * if {@code null} the page size will be dictated by the Datastore
342+ * @param <E>
343+ * the type of queried entities
336344 * @return results fo the query as a lazily evaluated {@link Iterator}
337345 * @throws IllegalArgumentException
338346 * if the provided {@linkplain StructuredQuery#getLimit() query includes a limit} or
339347 * the provided {@code batchSize} is 0
340348 */
341- private Iterator <Entity > readAllPageByPage (StructuredQuery <Entity > query ,
342- @ Nullable Integer pageSize ) {
349+ @ SuppressWarnings ("unchecked" ) // Checked logically.
350+ private <E extends BaseEntity <?>> Iterator <E >
351+ readAllPageByPage (StructuredQuery <E > query , @ Nullable Integer pageSize ) {
343352 checkArgument (query .getLimit () == null ,
344353 "Cannot limit a number of entities for \" read all\" operation." );
345354 checkArgument (pageSize == null || pageSize != 0 ,
346355 "The size of a single read operation cannot be 0." );
347356
348- StructuredQuery <Entity > limitedQuery = limit (query , pageSize );
349- return stream (new DsQueryPageIterator (limitedQuery , this ))
357+ StructuredQuery <E > limitedQuery = limit (query , pageSize );
358+ return stream (new DsQueryPageIterator <> (limitedQuery , this ))
350359 .flatMap (Streams ::stream )
351360 .iterator ();
352361 }
353362
354- private static StructuredQuery < Entity > limit ( StructuredQuery <Entity > query ,
355- @ Nullable Integer batchSize ) {
363+ private static < E extends BaseEntity <?>> StructuredQuery <E >
364+ limit ( StructuredQuery < E > query , @ Nullable Integer batchSize ) {
356365 return batchSize == null
357366 ? query
358367 : query .toBuilder ()
0 commit comments