
com.koushikdutta.async.parser.DocumentParser Maven / Gradle / Ivy
package com.koushikdutta.async.parser;
import com.koushikdutta.async.ByteBufferList;
import com.koushikdutta.async.DataEmitter;
import com.koushikdutta.async.DataSink;
import com.koushikdutta.async.callback.CompletedCallback;
import com.koushikdutta.async.future.Future;
import com.koushikdutta.async.future.TransformFuture;
import com.koushikdutta.async.http.body.DocumentBody;
import com.koushikdutta.async.stream.ByteBufferListInputStream;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
/**
* Created by koush on 8/3/13.
*/
public class DocumentParser implements AsyncParser {
@Override
public Future parse(DataEmitter emitter) {
return new ByteBufferListParser().parse(emitter)
.then(new TransformFuture() {
@Override
protected void transform(ByteBufferList result) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
setComplete(db.parse(new ByteBufferListInputStream(result)));
}
});
}
@Override
public void write(DataSink sink, Document value, CompletedCallback completed) {
new DocumentBody(value).write(null, sink, completed);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy