[
https://issues.apache.org/jira/browse/CXF-6392?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomas Hofman updated CXF-6392:
------------------------------
Description:
1) XSD files cannot be accessed by URLs that should be enabled by XML catalog
rules.
2) Under some circumstances, schema location attributes in <include> elements
are not rewritten to "?xsd=location" form
*Situation:*
- We have following rule in jax-ws-catalog.xml:
{code}
<rewriteSystem systemIdStartString="http://apache.org/hello_world/types2/"
rewritePrefix="/wsdl/schemata/"/>
{code}
- We have WSDL file importing an XSD file, which in turn is including another
XSD file, all located in /wsdl/ directory on classpath:
{code}
/wsdl/service.wsdl
/wsdl/schemata/schema.xsd
/wsdl/schemata/included_schema.xsd
{code}
- WSDL file contains import like this, with *relative path*:
{code}
<import namespace="http://apache.org/hello_world/types2"
schemaLocation="schemata/schema.xsd"/>
{code}
- schema.xsd file contains following include, again with relative path:
{code}
<xsd:include schemaLocation="included_schema.xsd"/>
{code}
*Problem 1:*
XSD file cannot be accessed by URL
http://localhost:PORT/SoapContext/SoapPort?xsd=http://apache.org/hello_world/types2/schema.xsd,
which is supposed to be working due to rewriteSystem rule.
It can only be accessed with relative path URL: "?xsd=schemata/schema.xsd".
This (meaning the first URL
http://localhost:PORT/SoapContext/SoapPort?xsd=http://apache.org/hello_world/types2/schema.xsd)
starts working when import in WSDL file is modified to use full URL instead of
relative path:
{code}
<import namespace="http://apache.org/hello_world/types2"
schemaLocation="http://apache.org/hello_world/types2/schema.xsd"/>
{code}
*Problem 2:*
When schema.xsd is accessed by request using full url like
"?xsd=http://apache.org/hello_world/types2/schema.xsd", instead of relative
url, schemaLocation attribute in <import> and <include> elements in that file
are not rewritten into "?xsd=..." form, so those schemaLocations cannot be
followed by client.
I'm attaching also a PR with a test case demonstrating described behaviour, and
proposed fix.
was:
1) XSD files cannot be accessed by URLs that should be enabled by XML catalog
rules.
2) Under some circumstances, schema location attributes in <include> elements
are not rewritten to "?xsd=location" form
*Situation:*
- We have following rule in jax-ws-catalog.xml:
{code}
<rewriteSystem systemIdStartString="http://apache.org/hello_world/types2/"
rewritePrefix="/wsdl/schemata/"/>
{code}
- We have WSDL file importing an XSD file, which in turn is including another
XSD file, all located in /wsdl/ directory on classpath:
{code}
/wsdl/service.wsdl
/wsdl/schemata/schema.xsd
/wsdl/schemata/included_schema.xsd
{code}
- WSDL file contains import like this, with *relative path*:
{code}
<import namespace="http://apache.org/hello_world/types2"
schemaLocation="schemata/schema.xsd"/>
{code}
- schema.xsd file contains following include, again with relative path:
{code}
<xsd:include schemaLocation="included_schema.xsd"/>
{code}
*Problem 1:*
XSD file cannot be accessed by URL
http://localhost:PORT/SoapContext/SoapPort?xsd=http://apache.org/hello_world/types2/schema.xsd,
which is supposed to be working due to rewriteSystem rule.
It can only be accessed with relative path URL: "?xsd=schemata/schema.xsd".
This starts working when import in WSDL file is modified to use full URL
instead of relative path:
{code}
<import namespace="http://apache.org/hello_world/types2"
schemaLocation="http://apache.org/hello_world/types2/schema.xsd"/>
{code}
*Problem 2:*
When schema.xsd is accessed by request using full url like
"?xsd=http://apache.org/hello_world/types2/schema.xsd", instead of relative
url, schemaLocation attribute in <import> and <include> elements in that file
are not rewritten into "?xsd=..." form, so those schemaLocations cannot be
followed by client.
I'm attaching also a PR with a test case demonstrating described behaviour, and
proposed fix.
Summary: Chema imports are not handled correctly in generated WSDL and
XSD files (was: Chema imports are still not handled correctly in generated
WSDL and XSD files)
> Chema imports are not handled correctly in generated WSDL and XSD files
> -----------------------------------------------------------------------
>
> Key: CXF-6392
> URL: https://issues.apache.org/jira/browse/CXF-6392
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Reporter: Tomas Hofman
>
> 1) XSD files cannot be accessed by URLs that should be enabled by XML catalog
> rules.
> 2) Under some circumstances, schema location attributes in <include> elements
> are not rewritten to "?xsd=location" form
> *Situation:*
> - We have following rule in jax-ws-catalog.xml:
> {code}
> <rewriteSystem systemIdStartString="http://apache.org/hello_world/types2/"
> rewritePrefix="/wsdl/schemata/"/>
> {code}
> - We have WSDL file importing an XSD file, which in turn is including another
> XSD file, all located in /wsdl/ directory on classpath:
> {code}
> /wsdl/service.wsdl
> /wsdl/schemata/schema.xsd
> /wsdl/schemata/included_schema.xsd
> {code}
> - WSDL file contains import like this, with *relative path*:
> {code}
> <import namespace="http://apache.org/hello_world/types2"
> schemaLocation="schemata/schema.xsd"/>
> {code}
> - schema.xsd file contains following include, again with relative path:
> {code}
> <xsd:include schemaLocation="included_schema.xsd"/>
> {code}
> *Problem 1:*
> XSD file cannot be accessed by URL
> http://localhost:PORT/SoapContext/SoapPort?xsd=http://apache.org/hello_world/types2/schema.xsd,
> which is supposed to be working due to rewriteSystem rule.
> It can only be accessed with relative path URL: "?xsd=schemata/schema.xsd".
> This (meaning the first URL
> http://localhost:PORT/SoapContext/SoapPort?xsd=http://apache.org/hello_world/types2/schema.xsd)
> starts working when import in WSDL file is modified to use full URL instead
> of relative path:
> {code}
> <import namespace="http://apache.org/hello_world/types2"
> schemaLocation="http://apache.org/hello_world/types2/schema.xsd"/>
> {code}
> *Problem 2:*
> When schema.xsd is accessed by request using full url like
> "?xsd=http://apache.org/hello_world/types2/schema.xsd", instead of relative
> url, schemaLocation attribute in <import> and <include> elements in that file
> are not rewritten into "?xsd=..." form, so those schemaLocations cannot be
> followed by client.
> I'm attaching also a PR with a test case demonstrating described behaviour,
> and proposed fix.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)