Skip to content

Commit d0d730d

Browse files
committed
Merge pull request vpulim#521 from Mik13/master
Use correct namespaces for elements with base.
2 parents 77de600 + 9b6ba1f commit d0d730d

File tree

8 files changed

+238
-0
lines changed

8 files changed

+238
-0
lines changed

lib/wsdl.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1492,6 +1492,10 @@ WSDL.prototype.objectToXML = function(obj, name, namespace, xmlns, first, xmlnsA
14921492
var childParameterTypeObject = self.findChildParameterObject(parameterTypeObject, name);
14931493
//find sub namespace if not a primitive
14941494
if (childParameterTypeObject && childParameterTypeObject.$type && (childParameterTypeObject.$type.indexOf('xsd') === -1)) {
1495+
if(childParameterTypeObject.$baseNameSpace) { //this element has a base with another namespace (the correct one)
1496+
ns = childParameterTypeObject.$baseNameSpace + ':';
1497+
}
1498+
14951499
var childParameterType = childParameterTypeObject.$type;
14961500

14971501
var childNamespace = '';
@@ -1629,6 +1633,23 @@ WSDL.prototype.findChildParameterObject = function(parameterTypeObj, childName)
16291633
if (found) {
16301634
break;
16311635
}
1636+
1637+
if(child.$base) {
1638+
var childNameSpace = child.$base.substr(0, child.$base.indexOf(':')),
1639+
childXmlns = this.definitions.xmlns[childNameSpace];
1640+
1641+
var foundBase = this.findChildParameterObjectFromSchema(child.$base.substr(child.$base.indexOf(':') + 1), childXmlns);
1642+
1643+
if (foundBase) {
1644+
found = this.findChildParameterObject(foundBase, childName);
1645+
1646+
if (found) {
1647+
found.$baseNameSpace = childNameSpace;
1648+
found.$type = childNameSpace + ':' + childName;
1649+
break;
1650+
}
1651+
}
1652+
}
16321653
}
16331654
}
16341655
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema xmlns:n="http://www.bigdatacollect.or/Name/Types"
3+
xmlns:tns="http://www.bigdatacollect.or/Common/Types" xmlns:xs="http://www.w3.org/2001/XMLSchema"
4+
targetNamespace="http://www.bigdatacollect.or/Common/Types" elementFormDefault="qualified"
5+
attributeFormDefault="unqualified">
6+
<xs:import namespace="http://www.bigdatacollect.or/Name/Types" schemaLocation="Name.xsd"/>
7+
<xs:complexType name="Address">
8+
<xs:sequence>
9+
<xs:element name="AddressLine" type="xs:string" minOccurs="0"/>
10+
</xs:sequence>
11+
</xs:complexType>
12+
<xs:complexType name="Phone">
13+
<xs:sequence>
14+
<xs:element name="PhoneData">
15+
<xs:complexType>
16+
<xs:sequence>
17+
<xs:element name="PhoneNumber" type="xs:string"/>
18+
</xs:sequence>
19+
</xs:complexType>
20+
</xs:element>
21+
</xs:sequence>
22+
</xs:complexType>
23+
<xs:complexType name="ResultStatus">
24+
<xs:sequence>
25+
<xs:element name="IDs" type="tns:UniqueIDList" minOccurs="0"/>
26+
</xs:sequence>
27+
<xs:attribute name="resultStatusFlag" type="tns:ResultStatusFlag"/>
28+
</xs:complexType>
29+
<xs:complexType name="UniqueID">
30+
<xs:simpleContent>
31+
<xs:extension base="xs:string">
32+
<xs:attribute name="source" type="xs:string"/>
33+
</xs:extension>
34+
</xs:simpleContent>
35+
</xs:complexType>
36+
<xs:complexType name="UniqueIDList">
37+
<xs:sequence>
38+
<xs:element name="UniqueID" type="tns:UniqueID" minOccurs="0" maxOccurs="unbounded"/>
39+
</xs:sequence>
40+
</xs:complexType>
41+
<xs:simpleType name="ResultStatusFlag">
42+
<xs:restriction base="xs:string">
43+
<xs:enumeration value="FAIL"/>
44+
<xs:enumeration value="SUCCESS"/>
45+
</xs:restriction>
46+
</xs:simpleType>
47+
</xs:schema>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema xmlns:c="http://www.bigdatacollect.or/Common/Types" xmlns:xs="http://www.w3.org/2001/XMLSchema"
3+
xmlns:tns="http://www.bigdatacollect.or/Name/Types"
4+
targetNamespace="http://www.bigdatacollect.or/Name/Types" elementFormDefault="qualified"
5+
attributeFormDefault="unqualified">
6+
<xs:import namespace="http://www.bigdatacollect.or/Common/Types" schemaLocation="Common.xsd"/>
7+
<xs:element name="Profile"/>
8+
<xs:complexType name="NamePhone">
9+
<xs:complexContent>
10+
<xs:extension base="c:Phone">
11+
<xs:sequence>
12+
<xs:element name="IDs" type="c:UniqueIDList" minOccurs="0"/>
13+
</xs:sequence>
14+
<xs:attribute name="primary" type="xs:boolean"/>
15+
</xs:extension>
16+
</xs:complexContent>
17+
</xs:complexType>
18+
<xs:complexType name="NamePhoneList">
19+
<xs:annotation>
20+
<xs:documentation>Collection of NamePhone</xs:documentation>
21+
</xs:annotation>
22+
<xs:sequence>
23+
<xs:element name="NamePhone" type="tns:NamePhone" minOccurs="0" maxOccurs="unbounded"/>
24+
</xs:sequence>
25+
</xs:complexType>
26+
<xs:complexType name="NameAddress">
27+
<xs:complexContent>
28+
<xs:extension base="c:Address">
29+
<xs:sequence>
30+
<xs:element name="IDs" type="c:UniqueIDList" minOccurs="0"/>
31+
</xs:sequence>
32+
</xs:extension>
33+
</xs:complexContent>
34+
</xs:complexType>
35+
<xs:complexType name="NameAddressList">
36+
<xs:annotation>
37+
<xs:documentation>Collection of NameAddress</xs:documentation>
38+
</xs:annotation>
39+
<xs:sequence>
40+
<xs:element name="NameAddress" type="tns:NameAddress" minOccurs="0" maxOccurs="unbounded"/>
41+
</xs:sequence>
42+
</xs:complexType>
43+
<xs:complexType name="Profile">
44+
<xs:sequence>
45+
<xs:element name="IDs" type="c:UniqueIDList" minOccurs="0"/>
46+
<xs:element name="Phones" type="tns:NamePhoneList" minOccurs="0"/>
47+
<xs:element name="Addresses" type="tns:NameAddressList" minOccurs="0"/>
48+
</xs:sequence>
49+
</xs:complexType>
50+
<xs:element name="UpdateProfileRequest">
51+
<xs:complexType>
52+
<xs:sequence>
53+
<xs:element name="Profile" type="tns:Profile"/>
54+
</xs:sequence>
55+
</xs:complexType>
56+
</xs:element>
57+
<xs:element name="UpdateProfileResponse">
58+
<xs:complexType>
59+
<xs:sequence>
60+
<xs:element name="Result" type="c:ResultStatus"/>
61+
</xs:sequence>
62+
</xs:complexType>
63+
</xs:element>
64+
</xs:schema>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"Profile": {
3+
"IDs": {
4+
"UniqueID": [
5+
{
6+
"attributes": {
7+
"source": "TESTSOURCE"
8+
},
9+
"$value": 100
10+
}
11+
]
12+
},
13+
"Addresses": {
14+
"NameAddress": [
15+
{
16+
"AddressLine": "Another Address"
17+
},
18+
{
19+
"AddressLine": "My Address"
20+
}
21+
]
22+
},
23+
"Phones": {
24+
"NamePhone": [
25+
{
26+
"attributes": {
27+
"primary": true
28+
},
29+
"PhoneData": {
30+
"PhoneNumber": "123"
31+
}
32+
},
33+
{
34+
"attributes": {
35+
"primary": false
36+
},
37+
"PhoneData": {
38+
"PhoneNumber": "456"
39+
}
40+
}
41+
]
42+
}
43+
}
44+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.bigdatacollect.or" xmlns:c="http://www.bigdatacollect.or/Common/Types" xmlns:n="http://www.bigdatacollect.or/Name/Types"><soap:Body><n:UpdateProfileRequest xmlns:n="http://www.bigdatacollect.or/Name/Types" xmlns="http://www.bigdatacollect.or/Name/Types"><n:Profile><n:IDs><c:UniqueID source="TESTSOURCE">100</c:UniqueID></n:IDs><n:Addresses><n:NameAddress><c:AddressLine>Another Address</c:AddressLine></n:NameAddress><n:NameAddress><c:AddressLine>My Address</c:AddressLine></n:NameAddress></n:Addresses><n:Phones><n:NamePhone primary="true"><c:PhoneData><c:PhoneNumber>123</c:PhoneNumber></c:PhoneData></n:NamePhone><n:NamePhone primary="false"><c:PhoneData><c:PhoneNumber>456</c:PhoneNumber></c:PhoneData></n:NamePhone></n:Phones></n:Profile></n:UpdateProfileRequest></soap:Body></soap:Envelope>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"Result":{
3+
"attributes": {
4+
"resultStatusFlag": "SUCCESS"
5+
},
6+
"IDs": {
7+
"UniqueID": [
8+
{
9+
"attributes": {
10+
"source": "TESTSOURCE"
11+
},
12+
"$value": "100"
13+
}
14+
]
15+
}
16+
}
17+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns3:UpdateProfileResponse xmlns:ns3="http://www.bigdatacollect.or/Name/Types" xmlns="http://www.bigdatacollect.or/Common/Types"><ns3:Result resultStatusFlag="SUCCESS"><IDs><UniqueID source="TESTSOURCE">100</UniqueID></IDs></ns3:Result></ns3:UpdateProfileResponse></S:Body></S:Envelope>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
3+
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.bigdatacollect.or"
4+
xmlns:c="http://www.bigdatacollect.or/Common/Types"
5+
xmlns:n="http://www.bigdatacollect.or/Name/Types"
6+
xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/"
7+
targetNamespace="http://www.bigdatacollect.or">
8+
<wsdl:types>
9+
<xs:schema>
10+
<xs:import namespace="http://www.bigdatacollect.or/Common/Types" schemaLocation="Common.xsd"/>
11+
<xs:import namespace="http://www.bigdatacollect.or/Name/Types" schemaLocation="Name.xsd"/>
12+
</xs:schema>
13+
</wsdl:types>
14+
<wsdl:message name="UpdateProfileRequest">
15+
<wsdl:part name="UpdateProfileRequest" element="n:UpdateProfileRequest"/>
16+
</wsdl:message>
17+
<wsdl:message name="UpdateProfileResponse">
18+
<wsdl:part name="UpdateProfileResponse" element="n:UpdateProfileResponse"/>
19+
</wsdl:message>
20+
<wsdl:portType name="NamePortType">
21+
<wsdl:operation name="UpdateProfile">
22+
<wsdl:input message="tns:UpdateProfileRequest"/>
23+
<wsdl:output message="tns:UpdateProfileResponse"/>
24+
</wsdl:operation>
25+
</wsdl:portType>
26+
<wsdl:binding name="NameBinding" type="tns:NamePortType">
27+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
28+
<wsdl:operation name="UpdateProfile">
29+
<soap:operation soapAction="http://www.bigdatacollect.or#UpdateProfile" style="document"/>
30+
<wsdl:input>
31+
<soap:body use="literal"/>
32+
</wsdl:input>
33+
<wsdl:output>
34+
<soap:body use="literal"/>
35+
</wsdl:output>
36+
</wsdl:operation>
37+
</wsdl:binding>
38+
<wsdl:service name="BigDataCollectorService">
39+
<wsdl:port name="NamePortType" binding="tns:NameBinding">
40+
<soap:address location="http://www.bigdatacollect.or/"/>
41+
</wsdl:port>
42+
</wsdl:service>
43+
</wsdl:definitions>

0 commit comments

Comments
 (0)