reader.setUnmarshaller(this.unmarshaller); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);
private StaxEventItemReader<List<XMLEvent>> createNewInputSource() { Resource resource = new ByteArrayResource(xml.getBytes()); StaxEventItemReader<List<XMLEvent>> newSource = new StaxEventItemReader<>(); newSource.setResource(resource); newSource.setFragmentRootElementName(FRAGMENT_ROOT_ELEMENT); newSource.setUnmarshaller(unmarshaller); newSource.setSaveState(true); return newSource; }
@Before public void setUp() throws Exception { reader.setFragmentRootElementName("trade"); reader.setUnmarshaller(getUnmarshaller()); reader.afterPropertiesSet(); }
private StaxEventItemReader<ItemCountAwareFragment> createNewItemCountAwareInputSource() { Resource resource = new ByteArrayResource(xml.getBytes()); StaxEventItemReader<ItemCountAwareFragment> newSource = new StaxEventItemReader<>(); newSource.setResource(resource); newSource.setFragmentRootElementName(FRAGMENT_ROOT_ELEMENT); newSource.setUnmarshaller(new ItemCountAwareMockFragmentUnmarshaller()); newSource.setSaveState(true); return newSource; }
@Test public void testDtdXml() { String xmlWithDtd = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE rohit [\n<!ENTITY entityex SYSTEM \"file://" + new File("src/test/resources/org/springframework/batch/support/existing.txt").getAbsolutePath() + "\">\n]>\n<abc>&entityex;</abc>"; StaxEventItemReader<String> reader = new StaxEventItemReader<>(); reader.setName("foo"); reader.setResource(new ByteArrayResource(xmlWithDtd.getBytes())); reader.setUnmarshaller(new MockFragmentUnmarshaller() { @Override public Object unmarshal(Source source) throws XmlMappingException { try { XMLEventReader xmlEventReader = StaxTestUtils.getXmlEventReader(source); xmlEventReader.nextEvent(); xmlEventReader.nextEvent(); return xmlEventReader.getElementText(); } catch (Exception e) { throw new RuntimeException(e); } } }); reader.setFragmentRootElementName("abc"); reader.open(new ExecutionContext()); try { reader.read(); fail("Should fail when XML contains DTD"); } catch (Exception e) { Assert.assertThat(e.getMessage(), Matchers.containsString("Undeclared general entity \"entityex\"")); } }
reader.setResource(new ByteArrayResource(FOOS.getBytes())); reader.setFragmentRootElementName("foo"); reader.setUnmarshaller(new Unmarshaller() { @Override public Object unmarshal(Source source) throws XmlMappingException, IOException {
@Before public void setUp() throws Exception { reader.setResource(resource); reader.setFragmentRootElementName("{urn:org.springframework.batch.io.oxm.domain}trade"); reader.setUnmarshaller(getUnmarshaller()); reader.afterPropertiesSet(); reader.open(new ExecutionContext()); }
reader.setUnmarshaller(new Unmarshaller() { @Override public Object unmarshal(Source source) throws XmlMappingException, IOException {
@Test public void testAfterPropertesSetException() throws Exception { source = createNewInputSource(); source.setFragmentRootElementName(""); try { source.afterPropertiesSet(); fail(); } catch (IllegalArgumentException e) { // expected } source = createNewInputSource(); source.setUnmarshaller(null); try { source.afterPropertiesSet(); fail(); } catch (IllegalArgumentException e) { // expected } }
/** * Make sure the reader doesn't end up in inconsistent state if there's an error during unmarshalling (BATCH-1738). * After an error during <code>read</code> the next <code>read</code> call should continue with reading the next * fragment. */ @Test public void exceptionDuringUnmarshalling() throws Exception { source.setUnmarshaller(new TroublemakerUnmarshaller()); source.afterPropertiesSet(); source.open(executionContext); try { source.read(); fail(); } catch (UnmarshallingFailureException expected) { assert expected.getMessage() == TroublemakerUnmarshaller.MESSAGE; } try { source.read(); fail(); } catch (UnmarshallingFailureException expected) { assert expected.getMessage() == TroublemakerUnmarshaller.MESSAGE; } assertNull(source.read()); }
@Bean public StaxEventItemReader<Customer> customerItemReader() { XStreamMarshaller unmarshaller = new XStreamMarshaller(); Map<String, Class> aliases = new HashMap<>(); aliases.put("customer", Customer.class); unmarshaller.setAliases(aliases); StaxEventItemReader<Customer> reader = new StaxEventItemReader<>(); reader.setResource(new ClassPathResource("/data/customers.xml")); reader.setFragmentRootElementName("customer"); reader.setUnmarshaller(unmarshaller); return reader; }
@Bean ItemReader<StudentDTO> xmlFileItemReader(Environment environment) { StaxEventItemReader<StudentDTO> xmlFileReader = new StaxEventItemReader<>(); xmlFileReader.setResource(new ClassPathResource(environment.getRequiredProperty(PROPERTY_XML_SOURCE_FILE_PATH))); xmlFileReader.setFragmentRootElementName("student"); Jaxb2Marshaller studentMarshaller = new Jaxb2Marshaller(); studentMarshaller.setClassesToBeBound(StudentDTO.class); xmlFileReader.setUnmarshaller(studentMarshaller); return xmlFileReader; }
@Bean ItemReader<StudentDTO> xmlFileItemReader(Environment environment) { StaxEventItemReader<StudentDTO> xmlFileReader = new StaxEventItemReader<>(); xmlFileReader.setResource(new ClassPathResource(environment.getRequiredProperty(PROPERTY_XML_SOURCE_FILE_PATH))); xmlFileReader.setFragmentRootElementName("student"); Jaxb2Marshaller studentMarshaller = new Jaxb2Marshaller(); studentMarshaller.setClassesToBeBound(StudentDTO.class); xmlFileReader.setUnmarshaller(studentMarshaller); return xmlFileReader; }
reader.setUnmarshaller(this.unmarshaller); reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount);