cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Mao <james....@iona.com>
Subject Re: Possible WSDL/Schema multiple import bug
Date Mon, 06 Nov 2006 02:13:38 GMT
Hi peter ,

Sorry that i didn't mention that Tom have not commit the change.
He'll commit soon.

Cheers,
James.

Peter Jones 写道:
> Hi there,
>
> There is still an issue here.  If you import a relative file, and then that
> file imports another file with a path relative to the import (in a
> different directory) then this imported file isn't resolved correctly.
>
> I've worked around this problem in my tree in XmlSchemaURIResolver by
> resetting the schemaLocation:
>
>     if (resolver.isResolved()) {
>         if (resolver.isFile()) {
>             // When importing a relative file,
>             // setSystemId with an absolute path so the
>             // resolver finds any files which that file
>             // imports with locations relative to it.
>             URI resolved = resolver.getURI();
>             schemaLocation = resolved.toString();
>         }
>         InputSource source = new InputSource(resolver.getInputStream());
>         source.setSystemId(schemaLocation);
>         return source;
>     }
>
> So, when the resolver is called to resolve the second import, the baseUri
> passed in is an absolute path instead of a relative path, which allows the
> resolver to find the second file.
>
> Cheers,
> Peter
>
> On Sun, Nov 05, 2006 at 02:19:32PM +0800, James Mao wrote:
>   
>> I thought Tom already fix this problem last Friday.
>> And i think the better solution is to report a bug to ws-common , not in 
>> cxf.
>> But anyway, tom already fix that.
>>
>>
>> Dan Diephouse 写道:
>>     
>>> Michael - did this ever get resolved? If not, can you create a JIRA 
>>> issue so we make sure it doesn't get lost?
>>>
>>> - Dan
>>>
>>> Michael Bricout wrote:
>>>
>>>       
>>>> Hi,
>>>>
>>>> I have a test case that uses a set of WSDLs and schemas with multiple
>>>> imports using relative URIs.
>>>>
>>>> ie: A.wsdl imports B.xsd that imports C.xsd, all are located in the
>>>> same directory.
>>>>
>>>> In A.wsdl:
>>>> <xsd:import namespace="http://foo" schemaLocation="./B.xsd"/>
>>>>
>>>> In B.xsd:
>>>> <xsd:import namespace="http://foo/bar" schemaLocation="./C.xsd"/>
>>>>
>>>> Code generation works fine, however I have a problem at runtime where
>>>> the server fails to initialize with the following exception:
>>>>
>>>> java.lang.RuntimeException: 
>>>> org.apache.ws.commons.schema.XmlSchemaException:
>>>> /[my project path]/C.xsd (No such file or directory)
>>>>
>>>> The problem is that the URI for importing C.xsd is incorrectly 
>>>> determined.
>>>> In the example above, C.xsd would actually be located in
>>>> /[my project path]/target/test/wsdl/C.xsd
>>>>
>>>>
>>>> I see the following behavior in org.apache.cxf.resource.URIResolver:
>>>>
>>>>
>>>> For A imports B, we create a URIResolver with the following parameters:
>>>> baseUriStr = "file:[path to A]/A.wsdl" (correct)
>>>> uriStr = "./B.xsd"
>>>>
>>>> Then tryFileSystem(baseUriStr, uriStr) is invoked and B.xsd is correctly
>>>> resolved.
>>>>
>>>>
>>>> Now for B import C, we create a URIResolver with the following 
>>>> parameters:
>>>> baseUriStr = "./B.xsd"
>>>> uriStr = "./C.xsd"
>>>>
>>>> The value for the base URI being set to a relative path, we fail to 
>>>> resolve
>>>> C.xsd. tryFileSystem ends up calling tryClasspath("./C.xsd"), which in
>>>> turn calls tryRemote(), which aborts on a MalformedURLException.
>>>>
>>>>
>>>> I simplified my test case a bit in an effort to isolate the issue, but
>>>> I get the same problem when using relative URIs to import schemas
>>>> from different directories.
>>>>
>>>>
>>>> Should I file a bug report for this, or am I doing something wrong ?
>>>>
>>>> This use case was working before the switch from XmlSchema 1.0.2 to 1.1
>>>>
>>>> Best regards,
>>>> Michael
>>>>         
>
>   


Mime
View raw message