Igor Vorobiov created ODE-1031:
----------------------------------

             Summary: Deployment error - captureSchema: NULL model (unknown 
error)
                 Key: ODE-1031
                 URL: https://issues.apache.org/jira/browse/ODE-1031
             Project: ODE
          Issue Type: Bug
          Components: BPEL Compilation/Parsing
    Affects Versions: 1.3.6
            Reporter: Igor Vorobiov
            Priority: Minor


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:
{code:xml}
        <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>
{code}
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".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to