// Path: easyxml-core/src/main/java/com/giffing/easyxml/context/TransformContext.java
// public class TransformContext<T, R> {
// 
// 	private XMLStreamReader streamReader;
// 
// 	private ItemReader<T, R> itemReader;
// 
// 	public TransformContext(XMLStreamReader streamReader, ItemReader<T, R> itemReader) {
// 		this.streamReader = streamReader;
// 		this.itemReader = itemReader;
// 	}
// 
// 	public XMLStreamReader getStreamReader() {
// 		return streamReader;
// 	}
// 
// 	public void setStreamReader(XMLStreamReader streamReader) {
// 		this.streamReader = streamReader;
// 	}
// 
// 	public ItemReader<T, R> getItemReader() {
// 		return itemReader;
// 	}
// 
// 	public void setItemReader(ItemReader<T, R> itemReader) {
// 		this.itemReader = itemReader;
// 	}
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/context/TransformResult.java
// public interface TransformResult<T> {
// 	
// 	/**
// 	 * @return the current result of an XML transformation
// 	 */
// 	T getContent();
// 	
// }
// 
// Path: easyxml-jdom2/src/main/java/com/giffing/easyxml/jdom2/reader/context/JDom2TransformerResult.java
// public class JDom2TransformerResult implements TransformResult<Element> {
// 	
// 	private final Element element;
// 	
// 	public JDom2TransformerResult(Element element){
// 		this.element = element;
// 	}
// 	
// 	@Override
// 	public Element getContent() {
// 		return element;
// 	}
// 
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/reader/Reader.java
// public interface Reader<T, R> {
// 
// 	List<ItemReader<T, R>> getItemReaders();
// 
// 	TransformResult<T> transform(TransformContext<T, R> transformContext);
// 
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/reader/item/ItemReader.java
// public interface ItemReader<T, R> {
// 
// 	/**
// 	 * @param t transform result
// 	 */
// 	R read(T t);
// 
// 	/**
// 	 * Indicates if the reader is responsible for the current context
// 	 * 
// 	 * @param context
// 	 */
// 	boolean shouldHandle(ParseContext context);
// 
// }


import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stax.StAXSource;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.transform.JDOMResult;
import com.giffing.easyxml.context.TransformContext;
import com.giffing.easyxml.context.TransformResult;
import com.giffing.easyxml.jdom2.reader.context.JDom2TransformerResult;
import com.giffing.easyxml.reader.Reader;
import com.giffing.easyxml.reader.item.ItemReader;
package com.giffing.easyxml.jdom2.reader;





public class JDom2Reader<R> implements Reader<Element, R> {

	private List<ItemReader<Element, R>> readers = new ArrayList<>();

// Path: easyxml-core/src/main/java/com/giffing/easyxml/context/TransformContext.java
// public class TransformContext<T, R> {
// 
// 	private XMLStreamReader streamReader;
// 
// 	private ItemReader<T, R> itemReader;
// 
// 	public TransformContext(XMLStreamReader streamReader, ItemReader<T, R> itemReader) {
// 		this.streamReader = streamReader;
// 		this.itemReader = itemReader;
// 	}
// 
// 	public XMLStreamReader getStreamReader() {
// 		return streamReader;
// 	}
// 
// 	public void setStreamReader(XMLStreamReader streamReader) {
// 		this.streamReader = streamReader;
// 	}
// 
// 	public ItemReader<T, R> getItemReader() {
// 		return itemReader;
// 	}
// 
// 	public void setItemReader(ItemReader<T, R> itemReader) {
// 		this.itemReader = itemReader;
// 	}
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/context/TransformResult.java
// public interface TransformResult<T> {
// 	
// 	/**
// 	 * @return the current result of an XML transformation
// 	 */
// 	T getContent();
// 	
// }
// 
// Path: easyxml-jdom2/src/main/java/com/giffing/easyxml/jdom2/reader/context/JDom2TransformerResult.java
// public class JDom2TransformerResult implements TransformResult<Element> {
// 	
// 	private final Element element;
// 	
// 	public JDom2TransformerResult(Element element){
// 		this.element = element;
// 	}
// 	
// 	@Override
// 	public Element getContent() {
// 		return element;
// 	}
// 
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/reader/Reader.java
// public interface Reader<T, R> {
// 
// 	List<ItemReader<T, R>> getItemReaders();
// 
// 	TransformResult<T> transform(TransformContext<T, R> transformContext);
// 
// }
// 
// Path: easyxml-core/src/main/java/com/giffing/easyxml/reader/item/ItemReader.java
// public interface ItemReader<T, R> {
// 
// 	/**
// 	 * @param t transform result
// 	 */
// 	R read(T t);
// 
// 	/**
// 	 * Indicates if the reader is responsible for the current context
// 	 * 
// 	 * @param context
// 	 */
// 	boolean shouldHandle(ParseContext context);
// 
// }


// Path: easyxml-jdom2/src/main/java/com/giffing/easyxml/jdom2/reader/JDom2Reader.java
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stax.StAXSource;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.transform.JDOMResult;
import com.giffing.easyxml.context.TransformContext;
import com.giffing.easyxml.context.TransformResult;
import com.giffing.easyxml.jdom2.reader.context.JDom2TransformerResult;
import com.giffing.easyxml.reader.Reader;
import com.giffing.easyxml.reader.item.ItemReader;

package com.giffing.easyxml.jdom2.reader;





public class JDom2Reader<R> implements Reader<Element, R> {

	private List<ItemReader<Element, R>> readers = new ArrayList<>();

	public JDom2Reader(List<ItemReader<Element, R>> readers) {