diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/MongoItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/MongoItemReader.java index cafe40894..3af64f1cd 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/MongoItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/data/MongoItemReader.java @@ -188,11 +188,11 @@ public class MongoItemReader extends AbstractPaginatedDataItemReader imple @SuppressWarnings("unchecked") protected Iterator doPageRead() { if (queryString != null) { - Pageable pageRequest = new PageRequest(page, pageSize, sort); + Pageable pageRequest = PageRequest.of(page, pageSize, sort); String populatedQuery = replacePlaceholders(queryString, parameterValues); - Query mongoQuery = null; + Query mongoQuery; if(StringUtils.hasText(fields)) { mongoQuery = new BasicQuery(populatedQuery, fields); @@ -214,7 +214,7 @@ public class MongoItemReader extends AbstractPaginatedDataItemReader imple } } else { - Pageable pageRequest = new PageRequest(page, pageSize); + Pageable pageRequest = PageRequest.of(page, pageSize); query.with(pageRequest); if(StringUtils.hasText(collection)) { @@ -239,10 +239,7 @@ public class MongoItemReader extends AbstractPaginatedDataItemReader imple if (queryString != null) { Assert.state(sort != null, "A sort is required."); } - if (query != null) { - Assert.state(query.getSortObject() != null, "A Sort in Query object is required."); - } - + if (query != null && query.getLimit() != 0) { log.warn("PageSize in Query object was ignored. Please set it by MongoItemReader.setPageSize()."); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/MongoItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/MongoItemReaderTests.java index 6b2c64995..ec8038883 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/MongoItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/data/MongoItemReaderTests.java @@ -63,7 +63,7 @@ public class MongoItemReaderTests { @Test public void testAfterPropertiesSetForQueryString() throws Exception{ - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); try { reader.afterPropertiesSet(); @@ -114,26 +114,14 @@ public class MongoItemReaderTests { @Test public void testAfterPropertiesSetForQueryObject() throws Exception{ - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); reader.setTemplate(template); reader.setTargetType(String.class); - Query query1 = new Query(); + Query query1 = new Query().with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query1); - try { - reader.afterPropertiesSet(); - fail("Sort was not set but exception was not thrown."); - } catch (IllegalStateException iae) { - assertEquals("A Sort in Query object is required.", iae.getMessage()); - } catch (Throwable t) { - fail("Wrong exception was thrown."); - } - - Query query2 = new Query().with(new Sort(new Order(Sort.Direction.ASC, "_id"))); - reader.setQuery(query2); - reader.afterPropertiesSet(); } @@ -253,18 +241,18 @@ public class MongoItemReaderTests { @Test public void testQueryObject() throws Exception { - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() - .with(new Sort(new Order(Sort.Direction.ASC, "_id"))); + .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query); reader.setTargetType(String.class); reader.afterPropertiesSet(); ArgumentCaptor queryContainer = ArgumentCaptor.forClass(Query.class); - when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList()); + when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); @@ -276,19 +264,19 @@ public class MongoItemReaderTests { @Test public void testQueryObjectWithIgnoredPageSize() throws Exception { - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() - .with(new Sort(new Order(Sort.Direction.ASC, "_id"))) - .with(new PageRequest(0, 50)); + .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))) + .with(PageRequest.of(0, 50)); reader.setQuery(query); reader.setTargetType(String.class); reader.afterPropertiesSet(); ArgumentCaptor queryContainer = ArgumentCaptor.forClass(Query.class); - when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList()); + when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); @@ -300,12 +288,12 @@ public class MongoItemReaderTests { @Test public void testQueryObjectWithPageSize() throws Exception { - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() - .with(new Sort(new Order(Sort.Direction.ASC, "_id"))) - .with(new PageRequest(30, 50)); + .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))) + .with(PageRequest.of(30, 50)); reader.setQuery(query); reader.setTargetType(String.class); reader.setPageSize(100); @@ -313,7 +301,7 @@ public class MongoItemReaderTests { reader.afterPropertiesSet(); ArgumentCaptor queryContainer = ArgumentCaptor.forClass(Query.class); - when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList()); + when(template.find(queryContainer.capture(), eq(String.class))).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext()); @@ -325,11 +313,11 @@ public class MongoItemReaderTests { @Test public void testQueryObjectWithCollection() throws Exception { - reader = new MongoItemReader(); + reader = new MongoItemReader<>(); reader.setTemplate(template); Query query = new Query() - .with(new Sort(new Order(Sort.Direction.ASC, "_id"))); + .with(Sort.by(new Order(Sort.Direction.ASC, "_id"))); reader.setQuery(query); reader.setTargetType(String.class); reader.setCollection("collection"); @@ -338,7 +326,7 @@ public class MongoItemReaderTests { ArgumentCaptor queryContainer = ArgumentCaptor.forClass(Query.class); ArgumentCaptor stringContainer = ArgumentCaptor.forClass(String.class); - when(template.find(queryContainer.capture(), eq(String.class), stringContainer.capture())).thenReturn(new ArrayList()); + when(template.find(queryContainer.capture(), eq(String.class), stringContainer.capture())).thenReturn(new ArrayList<>()); assertFalse(reader.doPageRead().hasNext());