[ https://issues.apache.org/jira/browse/CXF-6392?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tomas Hofman updated CXF-6392: ------------------------------ External issue URL: https://bugzilla.redhat.com/show_bug.cgi?id=1188204 > Schema 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 > Affects Versions: 3.1.0, 2.7.16 > 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)