Tomas Hofman created CXF-6392:
---------------------------------

             Summary: Chema imports are still 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 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)

Reply via email to