[ 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)