Igor Vorobiov created ODE-1019: ---------------------------------- Summary: Schema load exception is not handled for captureSchema Key: ODE-1019 URL: https://issues.apache.org/jira/browse/ODE-1019 Project: ODE Issue Type: Bug Components: Deployment Affects Versions: 1.3.6 Reporter: Igor Vorobiov Priority: Minor
There is the method for wsdl schema parsing(org.apache.ode.utils.xsd.XSUtils.captureSchema(LSInput, XMLEntityResolver)) where schema load exceptions and errors are handled incorrectly. First case when we receive model but there were errors during parsing: XSModel model = schemaLoader.load(input); if (model != null && errors.size() != 0) { // TODO: throw Exception} The question is do we need to throw Exception in this case. Second case when exceptions were thrown during parsing in xerces: org.apache.xerces.impl.xs.XMLSchemaLoader.load(LSInput) public XSModel load(LSInput is) { try { Grammar g = loadGrammar(dom2xmlInputSource(is)); return ((XSGrammar) g).toXSModel(); } catch (Exception e) { reportDOMFatalError(e); // will be printed as System.err //reportDOMFatalError=>fErrorHandler.getErrorHandler().handleError(error); return null; } } Fix for second case can be handler creation which implements DOMErrorHandler and collects all exceptions in handleError(DOMError error) method. schemaLoader should be configured with this handler: LoggingDOMErrorHandler deh = new LoggingDOMErrorHandler(__log); schemaLoader.setParameter(Constants.DOM_ERROR_HANDLER, deh); And after load schema call we can check exceptions size like it is done for errors: ArrayList<Exception> exceptions = deh.getExceptions(); XSModel model = schemaLoader.load(input); if (exceptions.size() != 0) { // TODO: throw Exception} Attached test to reproduce second case and exception handler class. -- This message was sent by Atlassian JIRA (v6.2#6252)