Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
1.3.6
-
None
Description
Prerequirements: before reproduce and workaround the issue need to apply the fix for problem with using several internal schemas. It is commited in the trunk:
https://github.com/apache/ode/commit/ccdba9fab2eb9821ab96f05a96dab65c27d3cb14
There is problem with schema capturing for wsdl that contains internal schemas and one imports another:
<wsdl:types> <xsd:schema targetNamespace="http://ode/bpel/unit-test.wsdl"> <xsd:import namespace="http://ode/bpel/import/types" /> <xsd:simpleType name="dummy"> <xsd:restriction base="d:dummyType" /> </xsd:simpleType> </xsd:schema> <xsd:schema targetNamespace="http://ode/bpel/import/types"> <xsd:simpleType name="dummyType"> <xsd:restriction base="xsd:string" /> </xsd:simpleType> </xsd:schema> </wsdl:types>
To workaround this problem it is enough to change schemas order(put "http://ode/bpel/import/types" on the top).
Bug is related to resolving entity in org.apache.ode.bpel.compiler.WsdlFinderXMLEntityResolver.resolveEntity(XMLResourceIdentifier).
This method searches imported schemas in the _internalSchemas map:
_internalSchemas.get(new URI(resourceIdentifier.getNamespace()))
This map is populated in org.apache.ode.bpel.compiler.WSDLRegistry.captureSchemas(Definition, ResourceFinder, URI). But since second(imported) schema is not put to map so "resolveEntity" returns null.
To fix the problem we need to populate _internalSchemas map before schema capturing.
Attached:
- HelloWorld2.zip that can be used to reproduce the issue;
- ODE.log where error can be found if DEBUG level is enabled for "org.apache.ode.utils.xsd" package;
- my fix "WSDLRegistry.zip\WSDLRegistry(my fix).java".
Attachments
Attachments
Issue Links
- relates to
-
ODE-1019 Schema load exception is not handled for captureSchema
- Resolved