private static boolean isEmptyBeansXml(final InputStream is) throws IOException, ParserConfigurationException, SAXException {
return isEmpty(is, "beans");
}
private static boolean isEmpty(final InputStream is, final String rootElement) throws IOException, ParserConfigurationException, SAXException {
final LengthInputStream in = new LengthInputStream(is);
InputSource inputSource = new InputSource(in);
SAXParser parser = Saxs.namespaceAwareFactory().newSAXParser();
try {
parser.parse(inputSource, new DefaultHandler(){
public void startElement(String uri, String localName, String qName, Attributes att) throws SAXException {
if (!localName.equals(rootElement)) throw new SAXException(localName);
}
public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {
return new InputSource(new ByteArrayInputStream(new byte[0]));
}
});
return true;
} catch (SAXException e) {
return in.getLength() == 0;
}
}