package com.github.bjuvensjo.rsimulator.core.handler.regexp;
import com.google.inject.Singleton;
import org.jdom2.Document;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
/**
* XmlHandler is a regular expression handler for xml (.xml).
*
* @author Magnus Bjuvensjö
* @see AbstractHandler
*/
@Singleton
public class XmlHandler extends AbstractHandler {
private static final String EXTENSION = "xml";
private Logger log = LoggerFactory.getLogger(XmlHandler.class);
/**
* {@inheritDoc}
*/
@Override
protected String escape(String request, boolean isCandidate) {
return request;
}
/**
* {@inheritDoc}
*/
@Override
protected String format(String request) {
String result = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ByteArrayInputStream bis = new ByteArrayInputStream(request.getBytes());
Document doc = new SAXBuilder().build(bis);
bis.close();
Format format = Format.getCompactFormat();
// To not have the ? in the declaration interpreted as regular expressions.
format.setOmitDeclaration(true);
XMLOutputter out = new XMLOutputter(format);
out.output(doc, bos);
result = new String(bos.toByteArray());
bos.close();
} catch (Exception e) {
log.error(null, e);
}
return result;
}
/**
* {@inheritDoc}
*/
@Override
protected String getExtension() {
return EXTENSION;
}
}