[
https://issues.apache.org/jira/browse/WSCOMMONS-365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12647999#action_12647999
]
Benson Margulies commented on WSCOMMONS-365:
--------------------------------------------
Since read has no schema location, I think that your fix has to be it.
> schema files with the same namespace throw exception
> ----------------------------------------------------
>
> Key: WSCOMMONS-365
> URL: https://issues.apache.org/jira/browse/WSCOMMONS-365
> Project: WS-Commons
> Issue Type: Bug
> Components: XmlSchema
> Environment: Eclipse
> Reporter: Alexander Ilyin
>
> XmlSchemaCollection couldn't add the schema when other one was already added
> and had the same namespace.
> It happened because the uniqueness of some schema is calculated by it's
> namespace and systemId. systemId is calculated from the getSystemId() of the
> underlying InputSource.
> In case getSystemId() returns null the exception will be thrown (which is
> happened in my case because my schema is read from the eclipse bundle)
> When method resolveXmlSchema is creating the SchemaKey for checking the
> uniqueness of the schema it does right by calculating the systemId with:
> final String systemId = source.getSystemId() == null ? schemaLocation
> : source.getSystemId();
> But when it has determined the schema had to be read it will fail. In the
> method XmlSchemaCollection.read just called
> return read(doc, inputSource.getSystemId(), veh, namespaceValidator);
> But inputSource.getSystemId() equals null and it's found previously
> registered another schema with the same key where systemId was improperly
> assigned as null.
> I think you need to change the read method like below:
> return read(doc, source.getSystemId() == null ? schemaLocation :
> source.getSystemId(), veh, namespaceValidator);
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.