Hi James,
On Mon, Nov 06, 2006 at 10:13:38AM +0800, James Mao wrote:
> Hi peter ,
>
> Sorry that i didn't mention that Tom have not commit the change.
> He'll commit soon.
I was just trying out the changes committed to the URIResolver earlier
today and I still had to make a small change to get things to work with
the mtosi wsdls and schemas I was using. I haven't looked at it closely
enough to tell for sure, but I think it might be the assumption in
URIResolver.getAbsoluteFileStr() that the last history element was the
parent - i.e. the file that imported the file we are looking for... some
of the mtosi schemas import several schemas which import other schemas...
Anyway, there's a slight change to my work-around though, since the
URIResolver.tryFileSystemState() doesn't seem to set the file member.
if (resolver.getURI().isAbsolute()) {
// 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 = resolver.getURI().toString();
}
I can probably check in this work-around for now, until I can put
together a smaller test case to help track down the problem?
Cheers,
Peter
> 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.
> >>
> >> [...]
--
Peter Jones
IONA Technologies Inc.
E-Mail: mailto:[EMAIL PROTECTED]
Tel: (w) 709-738-3725 x22 | Fax: 709-738-3745
84-86 Elizabeth Ave. St. John's, NL A1A 1W7 Canada