[SWS-409] CommonsXsdSchemaCollection / Apache Schema exceptions do not contain enough detail Created: 05/Aug/08  Updated: 04/May/12  Resolved: 28/Aug/08

Status: Closed
Project: Spring Web Services
Component/s: XML
Affects Version/s: 1.5.4
Fix Version/s: 1.5.5

Type: Improvement Priority: Minor
Reporter: Pavel Tcholakov Assignee: Arjen Poutsma
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Spring 2.5.5, Spring WS 1.5.4, Apache XML Schema 1.4.2, Java 1.5, JBoss 4.2.2GA, Windows XP


Attachments: Text File SWS-409.patch    

 Description   

An <xsd:import/> instruction for an invalid file name causes the following exception on context initialization:

org.apache.ws.commons.schema.XmlSchemaException
at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:351)
at org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema(SchemaBuilder.java:1839)
at org.apache.ws.commons.schema.SchemaBuilder.handleInclude(SchemaBuilder.java:1615)
at org.apache.ws.commons.schema.SchemaBuilder.handleXmlSchemaElement(SchemaBuilder.java:181)
at org.apache.ws.commons.schema.SchemaBuilder.build(SchemaBuilder.java:83)
at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:424)
at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:347)
at org.apache.ws.commons.schema.XmlSchemaCollection.read(XmlSchemaCollection.java:379)
at org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection.afterPropertiesSet(CommonsXsdSchemaCollection.java:133)

The root cause is a file not found exception, but it's not at all obvious which XSD caused this, nor what file is missing. (In my case there was a typo in a the import instruction so it was quite hard to spot by just examining the schema files.) I think it's mostly org.apache.ws.commons.schema.XmlSchemaException to blame for not correctly displaying the root cause, but it would be even nicer if CommonsXsdSchemaCollection would trap the exception, report explicitly which XSD resource caused it and re-throw it as a CommonsXsdSchemaException.



 Comments   
Comment by Tareq Abedrabbo [ 25/Aug/08 ]

It seems that org.apache.ws.commons.schema.XmlSchemaException is not the only exception to be thrown in case of error in the xsd. For instance, org.apache.ws.commons.schema.SchemaBuilder.resolveXmlSchema wraps every exception with a RuntimeException. In some other cases a NPE is thrown.
Thus the simplest and safest option seems to me to surround Commons Xsd code with a try/catch(Exception).
patch+unit test.

Comment by Arjen Poutsma [ 28/Aug/08 ]

Fixed, thanks for spotting this, and for the patch!\

Comment by Arjen Poutsma [ 04/May/12 ]

Closing old issues

Generated at Fri Dec 15 06:38:33 UTC 2017 using JIRA 6.4.14#64029-sha1:ae256fe0fbb912241490ff1cecfb323ea0905ca5.