Add support to build JsonItemReader when no Resource is provided
Resolves #3731
This commit is contained in:
committed by
Mahmoud Ben Hassine
parent
743da96fcf
commit
c78e2b518b
@@ -73,6 +73,9 @@ public class JsonItemReader<T> extends AbstractItemCountingItemStreamItemReader<
|
||||
this.jsonObjectReader = jsonObjectReader;
|
||||
setExecutionContextName(ClassUtils.getShortName(JsonItemReader.class));
|
||||
}
|
||||
public JsonItemReader(){
|
||||
setExecutionContextName(ClassUtils.getShortName(JsonItemReader.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the {@link JsonObjectReader} to use to read and map Json fragments to domain objects.
|
||||
|
||||
@@ -140,12 +140,13 @@ public class JsonItemReaderBuilder<T> {
|
||||
*/
|
||||
public JsonItemReader<T> build() {
|
||||
Assert.notNull(this.jsonObjectReader, "A json object reader is required.");
|
||||
Assert.notNull(this.resource, "A resource is required.");
|
||||
if (this.saveState) {
|
||||
Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true.");
|
||||
}
|
||||
|
||||
JsonItemReader<T> reader = new JsonItemReader<>(this.resource, this.jsonObjectReader);
|
||||
JsonItemReader<T> reader = new JsonItemReader<>();
|
||||
reader.setResource(this.resource);
|
||||
reader.setJsonObjectReader(this.jsonObjectReader);
|
||||
reader.setName(this.name);
|
||||
reader.setStrict(this.strict);
|
||||
reader.setSaveState(this.saveState);
|
||||
|
||||
@@ -57,17 +57,6 @@ public class JsonItemReaderBuilderTest {
|
||||
iae.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
new JsonItemReaderBuilder<String>()
|
||||
.jsonObjectReader(this.jsonObjectReader)
|
||||
.build();
|
||||
fail("A resource is required.");
|
||||
}
|
||||
catch (IllegalArgumentException iae) {
|
||||
assertEquals("A resource is required.",
|
||||
iae.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
new JsonItemReaderBuilder<String>()
|
||||
.jsonObjectReader(this.jsonObjectReader)
|
||||
@@ -102,4 +91,24 @@ public class JsonItemReaderBuilderTest {
|
||||
Object executionContext = getField(itemReader, "executionContextUserSupport");
|
||||
Assert.assertEquals("jsonItemReader", getField(executionContext, "name"));
|
||||
}
|
||||
@Test
|
||||
public void shouldBuildJsonItemReaderWhenResourceIsNotProvided(){
|
||||
JsonItemReader<String> itemReader = new JsonItemReaderBuilder<String>()
|
||||
.jsonObjectReader(this.jsonObjectReader)
|
||||
.saveState(true)
|
||||
.strict(true)
|
||||
.name("jsonItemReader")
|
||||
.maxItemCount(100)
|
||||
.currentItemCount(50)
|
||||
.build();
|
||||
|
||||
Assert.assertEquals(this.jsonObjectReader, getField(itemReader, "jsonObjectReader"));
|
||||
Assert.assertEquals(100, getField(itemReader, "maxItemCount"));
|
||||
Assert.assertEquals(50, getField(itemReader, "currentItemCount"));
|
||||
Assert.assertTrue((Boolean) getField(itemReader, "saveState"));
|
||||
Assert.assertTrue((Boolean) getField(itemReader, "strict"));
|
||||
Object executionContext = getField(itemReader, "executionContextUserSupport");
|
||||
Assert.assertEquals("jsonItemReader", getField(executionContext, "name"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user