private ErrorExplainer createErrorExplainer() { ErrorExplainer errorFilter = new ErrorExplainer(); // RDF/XML syntax errorFilter.addExplanationFactory(RDFParserException.class, new ErrorExplainer.ErrorExplanationFactory<RDFParserException>(){ public <T extends RDFParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); // Will catch functional syntax/OBO but only use it for the specified exceptions (below) ErrorExplainer.ErrorExplanationFactory<OWLParserException> owlParserExceptionExplanationFac = new ErrorExplainer.ErrorExplanationFactory<OWLParserException>(){ public <T extends OWLParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), 0); } }; errorFilter.addExplanationFactory(OWLParserException.class, owlParserExceptionExplanationFac); errorFilter.addExplanationFactory(OBOFormatParserException.class, owlParserExceptionExplanationFac); // Manchester Syntax errorFilter.addExplanationFactory(ParserException.class, new ErrorExplainer.ErrorExplanationFactory<ParserException>(){ public <T extends ParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); return errorFilter; }
private <T extends Throwable> ErrorExplanationFactory<T> getFactory(T throwable){ Class<? extends Throwable> cls = getBestMatchJavaClass(throwable.getClass(), factories.keySet()); if (cls != null){ return factories.get(cls); } return null; }
ErrorExplainer.ErrorExplanation explanation = new ErrorExplainer().getErrorExplanation(e, true); ErrorPanel<T> errorPanel = new ErrorPanel<>(explanation, loc); logger.warn(explanation.getMessage(), explanation.getCause());
public ErrorExplainer() { addExplanationFactory(FileNotFoundException.class, new ErrorExplanationFactory<FileNotFoundException>(){ public <T extends FileNotFoundException> ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplanation<>(throwable, "File not found: " + throwable.getMessage()); } }); addExplanationFactory(SAXParseException.class, new ErrorExplanationFactory<SAXParseException>(){ public <T extends SAXParseException> ErrorExplanation<T> createExplanation(T throwable) { final String message = "XML error at line " + throwable.getLineNumber() + ", column " + throwable.getColumnNumber() + "\n" + throwable.getMessage(); if (throwable.getLineNumber() <= 0 || throwable.getColumnNumber() <= 0){ System.out.println("throwable = " + throwable); } return new ParseErrorExplanation<>(throwable, message, throwable.getLineNumber()-1, // as they are indexed from 1 throwable.getColumnNumber()-1); } }); }
public ParseErrorsPanel(UnparsableOntologyException e, final URI loc) { setLayout(new BorderLayout(12, 12)); // hack as there is no way to get from an ontology format to a parser // this must be updated if the supported parsers are changed format2ParserMap.put(RDFXMLOntologyFormat.class, RDFXMLParser.class.getSimpleName()); format2ParserMap.put(OWLXMLOntologyFormat.class, OWLXMLParser.class.getSimpleName()); format2ParserMap.put(ManchesterOWLSyntaxOntologyFormat.class, ManchesterOWLSyntaxOntologyParser.class.getSimpleName()); format2ParserMap.put(TurtleOntologyFormat.class, TurtleParser.class.getSimpleName()); format2ParserMap.put(OWLFunctionalSyntaxOntologyFormat.class, OWLFunctionalSyntaxParser.class.getSimpleName()); format2ParserMap.put(KRSS2OntologyFormat.class, KRSS2OWLParser.class.getSimpleName()); format2ParserMap.put(OBOOntologyFormat.class, OBOParser.class.getSimpleName()); tabs = new JTabbedPane(); tabs.setPreferredSize(new Dimension(700, 500)); final java.util.List<OWLParser> parsers = new ArrayList<OWLParser>(e.getExceptions().keySet()); for (OWLParser parser : parsers){ Throwable parseError = e.getExceptions().get(parser); ErrorExplainer.ErrorExplanation<? extends Throwable> explanation = errorExplainer.getErrorExplanation(parseError, true); final ErrorPanel<? extends Throwable> errorPanel = new ParseErrorPanel(explanation, loc); tabs.addTab(parser.getClass().getSimpleName(), errorPanel); } add(new JLabel("<html>Could not parse the ontology found at: " + loc + "<p>The following parsers were tried:</html>"), BorderLayout.NORTH); add(tabs, BorderLayout.CENTER); } }
public <T extends Throwable> ErrorExplanation<? extends Throwable> getErrorExplanation(T throwable, boolean traverseCauses){ Throwable cause = throwable; // Works through an error and its causes trying to find an explainer to match do { // This factory is not going to be even vaguely related to the type of the original exception // if we have moved on to its causes // The explanation only cares about the cause - it forgets the original exception // so we can return an explanation for any throwable cause ErrorExplanationFactory fac = getFactory(cause); if (fac != null){ return fac.createExplanation(cause); } cause = cause.getCause(); }while (traverseCauses && cause != null); return new ErrorExplanation<>(throwable, throwable.getMessage()); // return the error itself }
ErrorExplainer.ErrorExplanation explanation = new ErrorExplainer().getErrorExplanation(e, true); ErrorPanel<T> errorPanel = new ErrorPanel<T>(explanation, loc); LOGGER.warn(explanation.getMessage(), explanation.getCause());
public ErrorExplainer() { addExplanationFactory(FileNotFoundException.class, new ErrorExplanationFactory<FileNotFoundException>(){ public <T extends FileNotFoundException> ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplanation<T>(throwable, "File not found: " + throwable.getMessage()); } }); addExplanationFactory(SAXParseException.class, new ErrorExplanationFactory<SAXParseException>(){ public <T extends SAXParseException> ErrorExplanation<T> createExplanation(T throwable) { final String message = "XML error at line " + throwable.getLineNumber() + ", column " + throwable.getColumnNumber() + "\n" + throwable.getMessage(); if (throwable.getLineNumber() <= 0 || throwable.getColumnNumber() <= 0){ System.out.println("throwable = " + throwable); } return new ParseErrorExplanation<T>(throwable, message, throwable.getLineNumber()-1, // as they are indexed from 1 throwable.getColumnNumber()-1); } }); }
public ParseErrorsPanel(UnparsableOntologyException e, final URI loc) { setLayout(new BorderLayout(12, 12)); // hack as there is no way to get from an ontology format to a parser // this must be updated if the supported parsers are changed format2ParserMap.put(RDFXMLOntologyFormat.class, RDFXMLParser.class.getSimpleName()); format2ParserMap.put(OWLXMLOntologyFormat.class, OWLXMLParser.class.getSimpleName()); format2ParserMap.put(ManchesterOWLSyntaxOntologyFormat.class, ManchesterOWLSyntaxOntologyParser.class.getSimpleName()); format2ParserMap.put(TurtleOntologyFormat.class, TurtleParser.class.getSimpleName()); format2ParserMap.put(OWLFunctionalSyntaxOntologyFormat.class, OWLFunctionalSyntaxParser.class.getSimpleName()); format2ParserMap.put(KRSS2OntologyFormat.class, KRSS2OWLParser.class.getSimpleName()); format2ParserMap.put(OBOOntologyFormat.class, OBOParser.class.getSimpleName()); tabs = new JTabbedPane(); tabs.setPreferredSize(new Dimension(700, 500)); final java.util.List<OWLParser> parsers = new ArrayList<OWLParser>(e.getExceptions().keySet()); for (OWLParser parser : parsers){ Throwable parseError = e.getExceptions().get(parser); ErrorExplainer.ErrorExplanation<? extends Throwable> explanation = errorExplainer.getErrorExplanation(parseError, true); final ErrorPanel<? extends Throwable> errorPanel = new ParseErrorPanel(explanation, loc); tabs.addTab(parser.getClass().getSimpleName(), errorPanel); } add(new JLabel("<html>Could not parse the ontology found at: " + loc + "<p>The following parsers were tried:</html>"), BorderLayout.NORTH); add(tabs, BorderLayout.CENTER); } }
public <T extends Throwable> ErrorExplanation<? extends Throwable> getErrorExplanation(T throwable, boolean traverseCauses){ Throwable cause = throwable; // Works through an error and its causes trying to find an explainer to match do { // This factory is not going to be even vaguely related to the type of the original exception // if we have moved on to its causes // The explanation only cares about the cause - it forgets the original exception // so we can return an explanation for any throwable cause ErrorExplanationFactory fac = getFactory(cause); if (fac != null){ return fac.createExplanation(cause); } cause = cause.getCause(); }while (traverseCauses && cause != null); return new ErrorExplanation<T>(throwable, throwable.getMessage()); // return the error itself }
private ErrorExplainer createErrorExplainer() { ErrorExplainer errorFilter = new ErrorExplainer(); // RDF/XML syntax errorFilter.addExplanationFactory(RDFParserException.class, new ErrorExplainer.ErrorExplanationFactory<RDFParserException>(){ public <T extends RDFParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); // Will catch functional syntax/OBO but only use it for the specified exceptions (below) ErrorExplainer.ErrorExplanationFactory<OWLParserException> owlParserExceptionExplanationFac = new ErrorExplainer.ErrorExplanationFactory<OWLParserException>(){ public <T extends OWLParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), 0); } }; errorFilter.addExplanationFactory(OWLParserException.class, owlParserExceptionExplanationFac); errorFilter.addExplanationFactory(OBOFormatParserException.class, owlParserExceptionExplanationFac); // Manchester Syntax errorFilter.addExplanationFactory(ParserException.class, new ErrorExplainer.ErrorExplanationFactory<ParserException>(){ public <T extends ParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation<>(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); return errorFilter; }
ErrorExplainer.ErrorExplanation explanation = new ErrorExplainer().getErrorExplanation(e, true); ErrorPanel<T> errorPanel = new ErrorPanel<T>(explanation, loc); LOGGER.warn(explanation.getMessage(), explanation.getCause());
public ErrorExplainer() { addExplanationFactory(FileNotFoundException.class, new ErrorExplanationFactory<FileNotFoundException>(){ public <T extends FileNotFoundException> ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplanation<T>(throwable, "File not found: " + throwable.getMessage()); } }); addExplanationFactory(SAXParseException.class, new ErrorExplanationFactory<SAXParseException>(){ public <T extends SAXParseException> ErrorExplanation<T> createExplanation(T throwable) { final String message = "XML error at line " + throwable.getLineNumber() + ", column " + throwable.getColumnNumber() + "\n" + throwable.getMessage(); if (throwable.getLineNumber() <= 0 || throwable.getColumnNumber() <= 0){ System.out.println("throwable = " + throwable); } return new ParseErrorExplanation<T>(throwable, message, throwable.getLineNumber()-1, // as they are indexed from 1 throwable.getColumnNumber()-1); } }); }
public ParseErrorsPanel(UnparsableOntologyException e, final URI loc) { setLayout(new BorderLayout(12, 12)); tabs = new JTabbedPane(); tabs.setPreferredSize(new Dimension(700, 500)); final java.util.List<OWLParser> parsers = new ArrayList<>(e.getExceptions().keySet()); int counter = 1; for (OWLParser parser : parsers){ Throwable parseError = e.getExceptions().get(parser); ErrorExplainer.ErrorExplanation<? extends Throwable> explanation = errorExplainer.getErrorExplanation(parseError, true); final ErrorPanel<? extends Throwable> errorPanel = new ParseErrorPanel<>(explanation, loc); OWLDocumentFormatFactory supportedFormatFactory = parser.getSupportedFormat(); OWLDocumentFormat documentFormat = supportedFormatFactory.get(); tabs.addTab("(" + counter + ") " + documentFormat.getKey(), errorPanel); counter++; } add(new JLabel("<html>Could not parse the ontology found at: " + loc + "<p>The following formats were tried:</html>"), BorderLayout.NORTH); add(tabs, BorderLayout.CENTER); } }
private <T extends Throwable> ErrorExplanationFactory<T> getFactory(T throwable){ Class<? extends Throwable> cls = getBestMatchJavaClass(throwable.getClass(), factories.keySet()); if (cls != null){ return factories.get(cls); } return null; }
public <T extends Throwable> ErrorExplanation<? extends Throwable> getErrorExplanation(T throwable, boolean traverseCauses){ Throwable cause = throwable; // Works through an error and its causes trying to find an explainer to match do { // This factory is not going to be even vaguely related to the type of the original exception // if we have moved on to its causes // The explanation only cares about the cause - it forgets the original exception // so we can return an explanation for any throwable cause ErrorExplanationFactory fac = getFactory(cause); if (fac != null){ return fac.createExplanation(cause); } cause = cause.getCause(); }while (traverseCauses && cause != null); return new ErrorExplanation<T>(throwable, throwable.getMessage()); // return the error itself }
private ErrorExplainer createErrorExplainer() { ErrorExplainer errorFilter = new ErrorExplainer(); // RDF/XML syntax errorFilter.addExplanationFactory(RDFParserException.class, new ErrorExplainer.ErrorExplanationFactory<RDFParserException>(){ public <T extends RDFParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); // Will catch functional syntax/OBO but only use it for the specified exceptions (below) ErrorExplainer.ErrorExplanationFactory<OWLParserException> owlParserExceptionExplanationFac = new ErrorExplainer.ErrorExplanationFactory<OWLParserException>(){ public <T extends OWLParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation(throwable, throwable.getMessage(), throwable.getLineNumber(), 0); } }; errorFilter.addExplanationFactory(OWLParserException.class, owlParserExceptionExplanationFac); errorFilter.addExplanationFactory(OBOParserException.class, owlParserExceptionExplanationFac); // Manchester Syntax errorFilter.addExplanationFactory(ParserException.class, new ErrorExplainer.ErrorExplanationFactory<ParserException>(){ public <T extends ParserException> ErrorExplainer.ErrorExplanation<T> createExplanation(T throwable) { return new ErrorExplainer.ParseErrorExplanation(throwable, throwable.getMessage(), throwable.getLineNumber(), throwable.getColumnNumber()); } }); return errorFilter; }
ErrorExplainer.ErrorExplanation explanation = new ErrorExplainer().getErrorExplanation(e, true); ErrorPanel<T> errorPanel = new ErrorPanel<>(explanation, loc); logger.warn(explanation.getMessage(), explanation.getCause());
public ParseErrorsPanel(UnparsableOntologyException e, final URI loc) { setLayout(new BorderLayout(12, 12)); tabs = new JTabbedPane(); tabs.setPreferredSize(new Dimension(700, 500)); final java.util.List<OWLParser> parsers = new ArrayList<>(e.getExceptions().keySet()); int counter = 1; for (OWLParser parser : parsers){ Throwable parseError = e.getExceptions().get(parser); ErrorExplainer.ErrorExplanation<? extends Throwable> explanation = errorExplainer.getErrorExplanation(parseError, true); final ErrorPanel<? extends Throwable> errorPanel = new ParseErrorPanel<>(explanation, loc); OWLDocumentFormatFactory supportedFormatFactory = parser.getSupportedFormat(); OWLDocumentFormat documentFormat = supportedFormatFactory.get(); tabs.addTab("(" + counter + ") " + documentFormat.getKey(), errorPanel); counter++; } add(new JLabel("<html>Could not parse the ontology found at: " + loc + "<p>The following formats were tried:</html>"), BorderLayout.NORTH); add(tabs, BorderLayout.CENTER); } }
private <T extends Throwable> ErrorExplanationFactory<T> getFactory(T throwable){ Class<? extends Throwable> cls = getBestMatchJavaClass(throwable.getClass(), factories.keySet()); if (cls != null){ return factories.get(cls); } return null; }