[ http://issues.apache.org/jira/browse/AXIS2-748?page=comments#action_12412416 ]
Dave MacLean commented on AXIS2-748: ------------------------------------ Further comment on another related bug (the first bug mentioned below is the one originally logged, but is included for context for the second): It looks like may be 2 problems with the way schema imports are loaded from the aar files. The first, is that when the AARFileBasedURIResolver is searching for a given (relative) location, it only matches beginning and end. That is, if I'm importing a schema at relative location "xsd/my_schema.xsd", then the resolver is going to match any files in the aar that have a path starting with "meta-inf" and ending with "xsd/my_schema.xsd". So, if my aar file structure looks like: meta-inf/my_wsdl.wsdl (has the import of xsd/my_schema.xsd) meta-inf/xsd/my_schema.xsd meta-inf/some_other_bad_but_useful_xsd/my_schema.xsd Then, in some cases the second xsd will get loaded, which can cause some problems. For the second, assume the same scenario as above, with my_wsdl.wsdl importing xsd/my_schema.xsd. Now, if my_schema.xsd imports another xsd, using a relative location of "my_schema2.xsd", then I don't think the resolver takes the relative path into consideration. It ends up searching for a file starting with "meta-inf" and ending with "my_schema2.xsd". It just happens that this will match meta-inf/xsd/my_schema2.xsd (which is what we want), but it will also match a lot of other files incorrectly (meta-inf/some_other_bad_but_useful_xsd/my_schema2.xsd, meta-inf/foobar/my_schema2.xsd, etc). Is my understanding of how relative imports should work correct? That if xsd/my_schema.xsd imports a file at location "my_schema2.xsd", then it should be found, and only be found, at xsd/my_schema2.xsd? I think one way to fix this would be to update the baseUri passed into AARFileBasedURIResolver.resolveEntity to include the "path found so far", and then modify the filename checking if-clause to be a little more strict. > AARWSDLLocator incorrect logic - may load incorrect files under certain > scenarios > --------------------------------------------------------------------------------- > > Key: AXIS2-748 > URL: http://issues.apache.org/jira/browse/AXIS2-748 > Project: Apache Axis 2.0 (Axis2) > Type: Bug > Components: deployment > Versions: 1.0 > Environment: win32_x86 (windows xp sp2), tomcat 5.1, eclipse 3.2 with tomcat > plugin, axis 2.0 1.0, Intel P4 2.8Ghz, 2.00GB RAM > Reporter: Dave MacLean > Priority: Minor > > The following code in AARWSDLLocator.java will fail in a certain scenario > (described below): > ... > while ((entry = zin.getNextEntry()) != null) { > String entryName = entry.getName(); > if > ((entryName.startsWith(DeploymentConstants.META_INF.toLowerCase()) > || entryName.startsWith(DeploymentConstants.META_INF)) > && entryName.endsWith(importLocation)) { > ... > If I have a wsdl file that has an import like: > <s:import namespace="some_namespace" schemaLocation="xsd/some_namespace.xsd"/> > And then, in my aar file, I have the files: > META-INF/xsd/some_namespace.xsd > META-INF/some_bad_other_xsd/some_namespace.xsd > The locator seems to try and load both files. At the very least, the if > condition is met, and later down the line, an XMLSchemaException is thrown as > follows: > Error: org.apache.axis2.deployment.DeploymentException: > java.lang.RuntimeException: org.apache.ws.commons.schema.XmlSchemaException: > No namespace found in given base simple content type > If you remove the excess xsd file, the problem goes away. So...I think the > if statement here needs to be fixed to not include directories that happen to > end with the import location. > Marking as minor since I can change my directory strutcure, but would be > major for someone who was unable to change the stucture of their files. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
