[ https://issues.apache.org/activemq/browse/SM-1011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guillaume Nodet updated SM-1011: -------------------------------- Affects Version/s: (was: incubation) 3.1.1 Fix Version/s: (was: incubation) 3.2 3.1.2 > WSDLFlattenner / SchemaCollection do not handle nested schemas inclusions > properly > ---------------------------------------------------------------------------------- > > Key: SM-1011 > URL: https://issues.apache.org/activemq/browse/SM-1011 > Project: ServiceMix > Issue Type: Bug > Components: servicemix-common > Affects Versions: 3.1.1 > Environment: Windows XP > Reporter: Konrad Argasinski > Fix For: 3.1.2, 3.2 > > Attachments: nested schemas.txt > > > WSDLFlattener fails to analyse JSR-181 SU WSDL which imports multi-level > (nested) schemas structure. > My JSR-181 SU WSDL imports A1.xsd schema. A1.xsd includes B1.xsd, B2.xsd and > B3.xsd. B1.xsd includes C1.xsd. > The schema is used by JAXB during the project build and it works ok, however > when the SU gets deployed on ServiceMix I receive following error: > <loc-message>NOT_FOUND_ERR: An attempt is made to reference a node in a > context where it does not exist.</loc-message> > <stack-trace><![CDATA[org.w3c.dom.DOMException: NOT_FOUND_ERR: An attempt is > made to reference a node in a context where it does not exist. > at org.apache.xerces.dom.ParentNode.internalRemoveChild(Unknown Source) > at org.apache.xerces.dom.ParentNode.removeChild(Unknown Source) > at > org.apache.servicemix.common.tools.wsdl.SchemaCollection.handleImports(SchemaCollection.java:150) > The full stack trace is attached. > As workaround I compiled my custom SchemaCollection and it works ok now, > however I think a better fix is needed. > My custom changes in org.apache.servicemix.common.tools.wsdl.SchemaCollection > are: > around line 149 I have replaced: > String location = ce.getAttribute("schemaLocation"); > schema.getRoot().removeChild(ce); > with: > String location = ce.getAttribute("schemaLocation"); > Node parentNode = ce.getParentNode(); > Element root = schema.getRoot(); > if (root == parentNode) { > log.debug("Removing child include node: " + ce); > schema.getRoot().removeChild(ce); > } else { > log.warn("Skipping child include node removal: " + ce); > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.