/jboss-as-7.1.1.Final/deployment-scanner/src/main/java/org/jboss/as/server/deployment/scanner/XmlCompletionScanner.java
Java | 48 lines | 33 code | 10 blank | 5 comment | 0 complexity | aee92d42fed62bb346c765543c75018f MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
1package org.jboss.as.server.deployment.scanner;
2
3import java.io.File;
4import java.io.IOException;
5
6import javax.xml.parsers.ParserConfigurationException;
7import javax.xml.parsers.SAXParser;
8import javax.xml.parsers.SAXParserFactory;
9
10import org.xml.sax.SAXException;
11import org.xml.sax.SAXParseException;
12import org.xml.sax.helpers.DefaultHandler;
13
14/**
15 * Determines if an XML document is well formed, to prevent half copied XML files from being deployed
16 *
17 * @author Stuart Douglas
18 */
19public class XmlCompletionScanner {
20
21
22 public static boolean isCompleteDocument(final File file) throws IOException {
23 ErrorHandler handler = new ErrorHandler();
24 try {
25 SAXParserFactory factory = SAXParserFactory.newInstance();
26 factory.setValidating(false);
27 final SAXParser parser = factory.newSAXParser();
28 parser.parse(file, handler);
29 } catch (ParserConfigurationException e) {
30 throw new RuntimeException(e);
31 } catch (SAXException e) {
32 DeploymentScannerLogger.ROOT_LOGGER.debugf(e, "Exception parsing scanned XML document %s", file);
33 return false;
34 }
35 return !handler.error;
36 }
37
38 private static class ErrorHandler extends DefaultHandler {
39
40 private boolean error = false;
41
42 @Override
43 public void error(final SAXParseException e) throws SAXException {
44 error = true;
45 }
46
47 }
48}