}
try {
Thread.currentThread().setContextClassLoader(newLoader);
reader.read(new StringReader(new String(Util.getResourceContentsAsCharArray((IFile) res))));
for ( Iterator iter = reader.getErrors().iterator(); iter.hasNext(); ) {
SAXParseException e = (SAXParseException) iter.next();
createMarker(res, e.getMessage(), e.getLineNumber(), e.getColumnNumber());
}
for (Iterator iter = reader.getWarnings().iterator(); iter.hasNext(); ) {
SAXParseException e = (SAXParseException) iter.next();
createWarning(res, e.getMessage(), e.getLineNumber(), e.getColumnNumber());
}
} catch (Exception t) {
throw t;
} finally {
Thread.currentThread().setContextClassLoader(oldLoader);
}
} catch (SAXParseException e) {
Exception ex = e.getException();
if (ex instanceof FactoryException) {
Throwable t = ex.getCause();
if (t instanceof CompilationException) {
CompilationException exc = (CompilationException) t;
createMarker(res, exc.getErrorMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else if (t instanceof NoViableAltException) {
NoViableAltException exc = (NoViableAltException) t;
createMarker(res, exc.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else if (t == null) {
createMarker(res, ex.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else {
createMarker(res, t.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
}
} else if (ex instanceof NoConsequenceException) {
createMarker(res, "No consequence", reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else if (ex == null) {
if (reader.getLocator() != null) {
createMarker(res, e.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else {
createMarker(res, e.getMessage(), -1, -1);
}
} else {
if (reader.getLocator() != null) {
createMarker(res, e.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
} else {
createMarker(res, e.getMessage(), -1, -1);
}
}
} catch (Exception e) {
createMarker(res, e.getMessage(), reader.getLocator().getLineNumber(), reader.getLocator().getColumnNumber());
}
return false;
}
return true;
}