Commit 114d6305 authored by Pakulin's avatar Pakulin
Browse files

Improved error reporting in XmlDiff

parent 320d1ed7
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -17,6 +17,8 @@ public class DiffErrorHandler implements ErrorHandler {
	private boolean hasErrors = false;
	private boolean hasErrors = false;
	
	
	private StringBuilder description = new StringBuilder();
	private StringBuilder description = new StringBuilder();
	private String source;
	private String kind;
	
	
	public String getErrorsText() {
	public String getErrorsText() {
		return description.toString();
		return description.toString();
@@ -42,7 +44,7 @@ public class DiffErrorHandler implements ErrorHandler {
		errors.add(err);
		errors.add(err);
		appendDescripion(err);
		appendDescripion(err);
		hasErrors = true;
		hasErrors = true;
		XmlDiff.logger.warning("Fatal error while parsing: ", err.getMessage());
		XmlDiff.logger.warning("Error while parsing ", kind, ": ", err.getMessage(), "\nDocument: \n", source);
	}
	}


	//@Override
	//@Override
@@ -50,7 +52,7 @@ public class DiffErrorHandler implements ErrorHandler {
		errors.add(err);
		errors.add(err);
		appendDescripion(err);
		appendDescripion(err);
		hasErrors = true;
		hasErrors = true;
		XmlDiff.logger.warning("Error while parsing: ", err.getMessage());
		XmlDiff.logger.warning("Fatal error while parsing ", kind, ": ", err.getMessage(), "\nDocument: \n", source);
	}
	}


	private synchronized void appendDescripion(Throwable err) {
	private synchronized void appendDescripion(Throwable err) {
@@ -61,7 +63,7 @@ public class DiffErrorHandler implements ErrorHandler {
	//@Override
	//@Override
	public void warning(SAXParseException warn) throws SAXException {
	public void warning(SAXParseException warn) throws SAXException {
		warnings.add(warn);
		warnings.add(warn);
		XmlDiff.logger.warning("Error while parsing: ", warn.getMessage());
		XmlDiff.logger.warning("Warning while parsing ", kind, ": ", warn.getMessage(), "\nDocument: \n", source);
	}
	}


	/************************************************************
	/************************************************************
@@ -77,4 +79,12 @@ public class DiffErrorHandler implements ErrorHandler {
	private synchronized void appendDescripion(Difference diff) {
	private synchronized void appendDescripion(Difference diff) {
		description.append(diff.getDescription()).append(NEWLINE);
		description.append(diff.getDescription()).append(NEWLINE);
	}
	}

	public void setSource(String string) {
		this.source = string;
	}

	public void setKind(String kind) {
		this.kind = kind;
	}
}
}
 No newline at end of file
+13 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringReader;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -295,6 +296,18 @@ public class XmlDiff {
			logger.severe("Failed to setup a parser for ", kind, ": ", e.getMessage());
			logger.severe("Failed to setup a parser for ", kind, ": ", e.getMessage());
			throw new RuntimeException("Internal error: failed to create an XML parser", e);
			throw new RuntimeException("Internal error: failed to create an XML parser", e);
		}
		}
		{
			CharBuffer cb = CharBuffer.allocate(1000);
			StringBuilder tmp = new StringBuilder();
			while(inReader.read(cb) != -1) {
				cb.flip();
				tmp.append(cb.toString());
				cb.clear();
			}
			errorHandler.setSource(tmp.toString());
			errorHandler.setKind(kind);
			inReader = new StringReader(tmp.toString());
		}
		parser.setErrorHandler(errorHandler);
		parser.setErrorHandler(errorHandler);
		InputSource input = new InputSource(inReader);
		InputSource input = new InputSource(inReader);
		Document result = parser.parse(input);
		Document result = parser.parse(input);
+2 −2
Original line number Original line Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jardesc>
<jardesc>
    <jar path="/home/pakula/Desktop/XmlDiff.jar"/>
    <jar path="XmlDiff/xmldiff.jar"/>
    <options buildIfNeeded="true" compress="true" descriptionLocation="/XmlDiff/xmldiff.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
    <options buildIfNeeded="true" compress="true" descriptionLocation="/XmlDiff/xmldiff.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="true" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
    <selectedProjects/>
    <selectedProjects/>
    <manifest generateManifest="false" manifestLocation="/XmlDiff/MANIFEST" manifestVersion="1.0" reuseManifest="true" saveManifest="true" usesManifest="true">
    <manifest generateManifest="false" manifestLocation="/XmlDiff/MANIFEST" manifestVersion="1.0" reuseManifest="true" saveManifest="true" usesManifest="true">