* @exception Exception Is thrown if an error occurs loading the files or in the pipeline
* itself.
*/
@Test
public void testEmitTransformerBySteps() throws Exception {
EmitElementTransformer transformer = new EmitElementTransformer("parent", new ArrayList<Attribute>(), "child",
1);
transformer.setParent(new StAXProducer() {
private final XMLEventFactory eventFactory = XMLEventFactory.newInstance();
private boolean startEmitted = false;
public boolean hasNext() {
return true;
}
public XMLEvent nextEvent() throws XMLStreamException {
if (this.startEmitted) {
return this.eventFactory.createEndElement("", "", "parent");
}
this.startEmitted = true;
return this.eventFactory.createStartElement("", "", "parent");
}
public XMLEvent peek() throws XMLStreamException {
throw new RuntimeException("not impl");
}
public void setConsumer(Consumer consumer) {
}
public void finish() {
}
public void setConfiguration(Map<String, ? extends Object> configuration) {
}
public void setup(Map<String, Object> parameters) {
}
});
// "parent" start-tag
assertTrue(transformer.hasNext());
XMLEvent event = transformer.nextEvent();
assertTrue(event.isStartElement());
assertEquals(event.asStartElement().getName().getLocalPart(), "parent");
// "child" start-tag
assertTrue(transformer.hasNext());
event = transformer.nextEvent();
assertTrue(event.isStartElement());
assertEquals(event.asStartElement().getName().getLocalPart(), "child");
// "child" end-tag
assertTrue(transformer.hasNext());
event = transformer.nextEvent();
assertTrue(event.isEndElement());
assertEquals(event.asEndElement().getName().getLocalPart(), "child");
// "element" end-tag
assertTrue(transformer.hasNext());
event = transformer.nextEvent();
assertTrue(event.isEndElement());
assertEquals(event.asEndElement().getName().getLocalPart(), "parent");
}