TIP JOSIF Main Page |TIP JOSIF Framework | TIP Soap Generator | TIP Soap Generator Mapping Rules - Part IV
Table of Contents | ||||||||
---|---|---|---|---|---|---|---|---|
|
Mapping Rules for Session Facade
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
...
- Service Interface; abstract
- Service Interface; non-abstract
- Service Interface; Operations
- Service Interface; Inheritance
- Service Interface; parent is in external reference
Service Interface; abstract
Mapping Rule
If a session facade artifact has 'isAbstract=true', it will be mapped to nothing.
...
In Test1 model, interface org.tmforum.tip.cbe.test.TestProblemInterface is abstract, no any WSDL file generated from it.
Service Interface
...
; non-abstract
Mapping Rule
Every non-abstract session facade artifact is mapped to an XSD file (SOAP message definitions), and two WSDL files (one for HTTP binding, one for JMS binding). The targetNamespace of these files will be the image of package name under mapping rule rule TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Namespace.
Example
In SPM model, the session facade artifact org.tmforum.tip.service.problem.ServiceProblemInterface is mapped to
...
b) WSDL files: service_problem_serviceprobleminterface_ws.wsdl and service_problem_serviceprobleminterface_jms.wsdl. Their targetNamespace is http://www.tmforum.org/xml/tip/service/problem.
Service Interface
...
; Operations
Mapping Rule
All (local or inherited) operations of a non-abstract session will be mapped to WSDL operations.
Please refer to mapping rules about operations and parameters:
...
...
...
...
...
...
Part III#Mapping Rule for Attributes, Association Ends, and Parameters
TIP_Soap_Generator_Mapping_Rules_-_Part_III
...
_III#Mapping_Rules_for_Operations CANNOT FIND THIS
Service Interface; Inheritance
Mapping Rule
When map a non-abstract session facade Service Interface (Session Facade) (to SOAP message definition file and WSDL file(s)), both of its local operations and all inherited operations will be mapped to WSDL operations. Note that the facade can inherit operations from an abstract session facade.
...
In every WSDL files, we see 4 WSDL operations declared.
Code Block |
---|
<wsdl:portType name="ServiceTestProblemInterface">
<wsdl:documentation><p>The portType of the service interface</p><p>Implements the behviour coming from the inherited class</p>
</wsdl:documentation>
<wsdl:operation name="testAssoc">
<wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p>
</wsdl:documentation>
<wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
<wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
</wsdl:operation>
<wsdl:operation name="acknowledgeTestProblems">
<wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p>
</wsdl:documentation>
<wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
<wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
<wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
</wsdl:operation>
<wsdl:operation name="commentTestProblems">
<wsdl:documentation><p>The request-response operation</p><p>Comment test Problems. Simple request/reply</p>
</wsdl:documentation>
<wsdl:input name="commentTestProblemsRequest" message="tns:commentTestProblemsRequest"/>
<wsdl:output name="commentTestProblemsResponse" message="tns:commentTestProblemsResponse"/>
<wsdl:fault name="commentTestProblemsException" message="tns:commentTestProblemsException"/>
</wsdl:operation>
<wsdl:operation name="testExtDT">
<wsdl:documentation><p>The request-response operation</p><p>testing of external DT</p></wsdl:documentation>
<wsdl:input name="testExtDTRequest" message="tns:testExtDTRequest"/>
<wsdl:output name="testExtDTResponse" message="tns:testExtDTResponse"/>
</wsdl:operation>
</wsdl:portType>
|
Service Interface
...
; parent is in external reference
This covers the use case of a ServiceInterface that inherits from another service interface that is not local to the project but present in external reference (module).
...
same with mapping rule in TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IVPart IV#Service Interface; Inheritance
Example
In Test2 model, service interface org.tmforum.tip.test.TestExternalSuperServiceInterface extends external service interface org.tmforum.tip.service.test.ServiceTestProblemInterface. The super interface is defined in Test1 model. Note that the ServiceTestProblemInterface extends interface org.tmforum.tip.cbe.test.TestProblemInterface.
...
and in WSDL files, we see WSDL operations coming from local operation and inherited operations:
Code Block |
---|
<wsdl:portType name="TestExternalSuperServiceInterface">
<wsdl:documentation><p>The portType of the service interface</p><p>Service Interface containing high level services using external objects.</p>
</wsdl:documentation>
<wsdl:operation name="doComplexOperation">
<wsdl:documentation><p>The request-response operation</p><p>test method simulating a complex operation acting on several objects</p>
</wsdl:documentation>
<wsdl:input name="doComplexOperationRequest" message="tns:doComplexOperationRequest"/>
<wsdl:output name="doComplexOperationResponse" message="tns:doComplexOperationResponse"/>
<wsdl:fault name="doComplexOperationException" message="tns:doComplexOperationException"/>
</wsdl:operation>
<wsdl:operation name="doAnotherComplexOperation">
<wsdl:documentation><p>The request-response operation</p><p>another test method simulating a complex operation acting on several objects</p>
</wsdl:documentation>
<wsdl:input name="doAnotherComplexOperationRequest" message="tns:doAnotherComplexOperationRequest"/>
<wsdl:output name="doAnotherComplexOperationResponse" message="tns:doAnotherComplexOperationResponse"/>
<wsdl:fault name="doAnotherComplexOperationException" message="tns:doAnotherComplexOperationException"/>
</wsdl:operation>
<wsdl:operation name="testAssoc">
<wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p>
</wsdl:documentation>
<wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
<wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
</wsdl:operation>
<wsdl:operation name="acknowledgeTestProblems">
<wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p>
</wsdl:documentation>
<wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
<wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
<wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
</wsdl:operation>
<wsdl:operation name="commentTestProblems">
<wsdl:documentation><p>The request-response operation</p><p>Comment test Problems. Simple request/reply</p>
</wsdl:documentation>
<wsdl:input name="commentTestProblemsRequest" message="tns:commentTestProblemsRequest"/>
<wsdl:output name="commentTestProblemsResponse" message="tns:commentTestProblemsResponse"/>
<wsdl:fault name="commentTestProblemsException" message="tns:commentTestProblemsException"/>
</wsdl:operation>
<wsdl:operation name="testExtDT">
<wsdl:documentation><p>The request-response operation</p><p>testing of external DT</p></wsdl:documentation>
<wsdl:input name="testExtDTRequest" message="tns:testExtDTRequest"/>
<wsdl:output name="testExtDTResponse" message="tns:testExtDTResponse"/>
</wsdl:operation>
</wsdl:portType>
|
Mapping Rules for Parameters
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- Parameter; message name
- Parameter; isBulkPotential, the iterator case
- Parameter; isBulkPotential, the file case (not implemented in JOSIF 1.0)
- Parameter; direction
- Parameter; default value
- Parameter; passedbyId
- Parameter; isOrdered
- Parameter; isUnique
Parameter; message name
Mapping Rule
A parameter is mapped to a sub-element of a request message or a response message (refer to [TIP_Soap_Generator_Mapping_Rules_-_Part_
...
Parameter: message name
Mapping Rule
A parameter is mapped to a sub-element of a request message or a response message (refer to [TIP_Soap_Generator_Mapping_Rules_-_Part_II#Map Full Name to
Message File Name, WSDL Files Name, and Namespace]). For an operation, if we denote its short name as <OperationName>, then
• All its 'in' and 'inout' paramaters are mapped to sub-elements of message element named <OperationName>Request
• All its 'out' and 'inout' paramaters are mapped to one message element named <OperationName>Response
Note: all its exceptions declared in an operation, if any, are mapped to a single message element named <OperationName>Exception
Example
In Test2 model, we have an interface org.tmforum.tip.test.TestExternalInterface. The interface has an operation named
doComplexOperation. The request message and response message of the operation are defined in test_testexternalinterface_msg.xsd.
The request message is a global element named doComplexOperationRequest.
...
II#Map Full Name to
Message File Name, WSDL Files Name, and Namespace]). For an operation, if we denote its short name as <OperationName>, then
• All its 'in' and 'inout' paramaters are mapped to sub-elements of message element named <OperationName>Request
• All its 'out' and 'inout' paramaters are mapped to one message element named <OperationName>Response
Note: all its exceptions declared in an operation, if any, are mapped to a single message element named <OperationName>Exception
Example
In Test2 model, we have an interface org.tmforum.tip.test.TestExternalInterface. The interface has an operation named
doComplexOperation. The request message and response message of the operation are defined in test_testexternalinterface_msg.xsd.
The request message is a global element named doComplexOperationRequest.
Code Block |
---|
<xsd:element name="doComplexOperationRequest">
<xsd:annotation>
<xsd:documentation>
<p>The doComplexOperation request message XML schema.</p>
<p>test method simulating a complex operation acting on several objects</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="serviceTests" type="internal:ArrayOfEntityIdentifier" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
<p>Input service tests by ids </p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="testData" type="test:ArrayOfTest" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
<p>test data by value </p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="misc" type="xsd:string" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>misc data</p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
|
The response message is a global element named doComplexOperationResponse:
Code Block |
---|
<xsd:element name="doComplexOperationResponse">
<xsd:annotation>
<xsd:documentation>
<p>The doComplexOperation response message XML schema.</p>
<p>See request message comment for operation comment.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="misc" type="xsd:string" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
<p>misc data</p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="testProblems" type="internal:ArrayOfEntityIdentifier" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
<p>test problems by values </p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
|
Parameter
...
; isBulkPotential, the iterator case
Related to issue #25 in Mantis [ Parameter: isBulkPotential|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=25]
...
If an operation has tipOperation:bulkTransferPattern=ITERATOR, then the generator knows how to handle the operation's bulkpotential parameters. Please refer to mapping rules related with operations of iterator pattern TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_VI.Part VI#tipOperation; BulkTransferPattern - Iterator
Parameter
...
; isBulkPotential, the file case (not implemented in JOSIF 1.0)
Related to issue #25 in Mantis [ Parameter: isBulkPotential|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=25]
This feature is not implemented in JOSIF 1.0.
Parameter
...
; multiplicity
Related to issue #77 in Mantis [ Parameter: multiplicity|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=77]
...
same with the mapping rule in TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters
Note (2009, Sept 23) According to TIP Framework Team, there is a problem with passById as the entity ID is replaced by an entityIdentifier with no indication of the entity type. The basic idea is that we need to pass both the entity identifier and the type of the entity. In SOAP generator version 0.0.3, we simply map parameters with 'tipParameter:passedById=true' to sub-element of EntityIdentifier type or of ArrayOfEntityIdentifier type.
...
exmple in previous section: parameters of doComplexOperation operation, interface org.tmforum.tip.test.TestExternalInterface, Test2 model.
Parameter
...
; direction
Related to issue #78 in Mantis [ Parameter: direction|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=78]
...
• ‘Out’ parameters will be put in <OperationName>Response element
also refer to to TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters
Example
Refer to previous example
Parameter
...
; default value
Related to issue #79 in Mantis [ Parameter: default value|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=79]
Parameter
...
; passedbyId
Related to issue #80 in Mantis [ Parameter: passedById|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=80]
Mapping Rule
refer to TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters
Example
exmple in previous section: parameters of doComplexOperation operation, interface org.tmforum.tip.test.TestExternalInterface, in Test2 model.
Parameter
...
; isOrdered
Related to issue #329 in Mantis [ Parameter: isOrdered|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=329]
The generator ignore this property.
Parameter
...
; isUnique
Related to issue #330 in Mantis [ Parameter: isUnique|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=330]
...
Mapping Rules for Operations
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
- TIP_Soap_Generator_Mapping_Rules_-_Part_IV
...
- Operation; bulkTransferPattern Iterator
- Operation; bulkTransferPattern File (Not implemented in JOSIF 1.0)
- Operation; isExtendable
- Operation; isIdempotent (Not implemented in JOSIF 1.0)
- Operation; isOneWay
- Operation; specific exceptions
- Commonly used directive – Create (Not implemented in JOSIF 1.0)
- Commonly used directive – Delete (Not implemented in JOSIF 1.0)
- Commonly used directive – Set (Not implemented in JOSIF 1.0)
- Commonly used directive – Get (Not implemented in JOSIF 1.0)
- Common exceptions support
- Pre-defined exception support
Operation; bulkTransferPattern Iterator
Related to issue #18 in Mantis Operation: bulkTransferPattern Iterator
...
This covers the use of the bulkTransferPattern on the tipOperation stereotype with the value ITERATOR.
In this case, all the parameters of the operation marked bulkPotential will be transferred using an iterator transfer pattern.
Please refer to to TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_VI.Part VI#tipOperation; BulkTransferPattern - Iterator
Operation
...
; bulkTransferPattern File (Not implemented in JOSIF 1.0)
Related to issue #19 in Mantis Operation: bulkTransferPattern File
...
This is used for async operation, where response is provided through the emission of events.
Operation
...
; isExtendable
Related to issue #21 in Mantis Operation: isExtendable
...
For the structure of the extensionInfo element, please refer to (TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Extendability).
Example
In Test1 model, org.tmforum.tip.service.test.ServiceTestProblemInterface has an extendable operation named acknowledgeTestProblems (inherited from interface TestProblemInterface). We can see a sub-element named 'extensionInfo' is added to both acknowledgeTestProblemsRequest and acknowledgeTestProblemsResponse.
...
The response message is:
Code Block |
---|
<xsd:element name="acknowledgeTestProblemsResponse">
<xsd:annotation>
<xsd:documentation>
<p>The acknowledgeTestProblems response message XML schema.</p>
<p>See request message comment for operation comment.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ackProblems" type="internal:ArrayOfEntityIdentifier">
<xsd:annotation>
<xsd:documentation>
<p>acknowledged Problems</p>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="extensionInfo" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
<p>A generic list of any type of elements. Used for vendor Extensions or loose element encapsulation from other namespaces.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
|
Operation
...
; isIdempotent (Not implemented in JOSIF 1.0)
Related to issue #22 in Mantis Operation: isIdempotent
...
There is a need for the generators to add a boolean parameter for idempotent operations to indicate that the operation has already been done.
Operation
...
; isOneWay
Related to issue #23 in Mantis Operation: isOneWay
...
In WSDL files (test_testonewayopinterface_ws.wsdl and test_testonewayopinterface_jms.wsdl), we see the corresponding operation definition in portType:
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:tns="http://www.tmforum.org/xml/tip/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="TestOneWayOpInterface" targetNamespace="http://www.tmforum.org/xml/tip/test">
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://www.tmforum.org/xml/tip/test" schemaLocation="test_testonewayopinterface_msg.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="doOneWayOperationRequest">
<wsdl:documentation><p>The operation one-way message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:doOneWayOperation"/>
</wsdl:message>
<wsdl:portType name="TestOneWayOpInterface">
<wsdl:documentation><p>The portType of the service interface</p><p/></wsdl:documentation>
<wsdl:operation name="doOneWayOperation">
<wsdl:documentation><p>The one-way operation</p><p>test mapping rule of tipOperation:isOneWay</p></wsdl:documentation>
<wsdl:input name="doOneWayOperationRequest" message="tns:doOneWayOperationRequest"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestOneWayOpInterfaceSoapHttpBinding" type="tns:TestOneWayOpInterface">
<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsaw:UsingAddressing wsdl:required="true"/>
<wsdl:operation name="doOneWayOperation">
<soap:operation soapAction="doOneWayOperation" style="document"/>
<wsdl:input name="doOneWayOperationRequest">
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestOneWayOpInterfaceWs">
<wsdl:documentation><p>This is a sample wsdl:service definition of the service interface
for an implementation using the WS profile (SOAP/HTTP binging).</p><p>This wsdl:service definition is usually used at implementation time
or WS registration/discovery of a specific WS instance.</p></wsdl:documentation>
<wsdl:port name="TestOneWayOpInterfaceHttpPort" binding="tns:TestOneWayOpInterfaceSoapHttpBinding">
<soap:address location="http://localhost/TestOneWayOpInterface"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
|
Operation
...
; specific exceptions
Related to issue #58 in Mantis Operation: specific exceptions
...
The exception message of ‘acknowledgeTestProblems’’ operation is:
Code Block |
---|
<xsd:element name="acknowledgeTestProblemsException">
<xsd:annotation>
<xsd:documentation>
<p>The acknowledgeTestProblems exception message XML schema.</p>
<p>See request message comment for operation comment.</p>
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:choice>
<xsd:element name="testFailureWithData" type="test:TestFailureWithData">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="testFailure" type="test:TestFailure">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
|
In service_test_servicetestprobleminterface_ws.wsdl and service_test_servicetestprobleminterface_jms.wsdl, we see that in portType 'ServiceTestProblemInterface', the operation 'acknowledgeTestProblems' has input, output, and fault.
Code Block |
---|
<wsdl:portType name="ServiceTestProblemInterface">
<!--other operations-->
<wsdl:operation name="acknowledgeTestProblems">
<wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p></wsdl:documentation>
<wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
<wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
<wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
</wsdl:operation>
</wsdl:portType>
|
...
In service_test_servicetestprobleminterface_ws.wsdl and service_test_servicetestprobleminterface_jms.wsdl, we see that in portType 'ServiceTestProblemInterface', the operation 'testAssoc' has only input and output, no fault.
Code Block |
---|
<wsdl:portType name="ServiceTestProblemInterface">
<!--other operations-->
<wsdl:operation name="testAssoc">
<wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p></wsdl:documentation>
<wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
<wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
</wsdl:operation>
</wsdl:portType>
|
...
In TIP SPM model, the interface org.tmforum.tip.service.problem.ServiceProblemCreateInterface has an operation createServiceProblem operation. The exception message of the operation is:
Code Block |
---|
<xsd:element name="createServiceProblemException">
<xsd:complexType>
<xsd:choice>
<!--exception declared in TIP SPM model-->
<xsd:element name="unableToNotify" type="exceptions1:UnableToNotify"></xsd:element>
<xsd:element name="capacityExceeded" type="exceptions1:CapacityExceeded"></xsd:element>
<xsd:element name="duplicate" type="exceptions1:Duplicate"></xsd:element>
<!--pre-defined exceptions-->
<xsd:element name="accessDenied" type="exceptions:AccessDenied"/>
<xsd:element name="communicationLoss" type="exceptions:CommunicationLoss"/>
<xsd:element name="internalError" type="exceptions:InternalError"/>
<xsd:element name="invalidInput" type="exceptions:InvalidInput"/>
<xsd:element name="notImplemented" type="exceptions:NotImplemented"/>
<xsd:element name="unableToComply" type="exceptions:UnableToComply"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
|
...
pattern of the wsdl HTTP binding:
Code Block |
---|
<wsdl:binding name="${shortName of session facade}SoapHttpBinding" type="tns:${shortName of session facade}">
<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsaw:UsingAddressing wsdl:required="true"/>
<wsdl:operation name="${short name of an operation}">
<soap:operation soapAction="${short name of the operation}" style="document"/>
<wsdl:input name="${short name of the operation}Request">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="${short name of the operation}Response">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="${short name of the operation}Exception">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<!--other operations omitted-->
</wsdl:binding>
|
...
From session facade org.tmforum.tip.cbe.test.TestBulkInterface, Test1 model, a WSDL with HTTP binding is generated:
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:tns="http://www.tmforum.org/xml/tip/cbe/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="TestBulkInterface" targetNamespace="http://www.tmforum.org/xml/tip/cbe/test">
<wsdl:types>
<xsd:schema>
<xsd:import namespace="http://www.tmforum.org/xml/tip/cbe/test" schemaLocation="cbe_test_testbulkinterface_msg.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getTestProblemsByIteratorRequest">
<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:getTestProblemsByIteratorRequest"/>
</wsdl:message>
<wsdl:message name="getTestProblemsByIteratorResponse">
<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:getTestProblemsByIteratorResponse"/>
</wsdl:message>
<wsdl:message name="getTestProblemsByFileTransferRequest">
<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:getTestProblemsByFileTransferRequest"/>
</wsdl:message>
<wsdl:message name="getTestProblemsByFileTransferResponse">
<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:getTestProblemsByFileTransferResponse"/>
</wsdl:message>
<wsdl:message name="setTestProblemsByIteratorRequest">
<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:setTestProblemsByIteratorRequest"/>
</wsdl:message>
<wsdl:message name="setTestProblemsByIteratorResponse">
<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:setTestProblemsByIteratorResponse"/>
</wsdl:message>
<wsdl:message name="setTestProblemsByFileTransferRequest">
<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:setTestProblemsByFileTransferRequest"/>
</wsdl:message>
<wsdl:message name="setTestProblemsByFileTransferResponse">
<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
<wsdl:part name="body" element="tns:setTestProblemsByFileTransferResponse"/>
</wsdl:message>
<wsdl:portType name="TestBulkInterface">
<wsdl:documentation><p>The portType of the service interface</p><p>Used to test various bulk transfer patterns.
Warning: operate on an abstract class. So only the inherited service interfaces should really implement the behaviour.</p></wsdl:documentation>
<wsdl:operation name="getTestProblemsByIterator">
<wsdl:documentation><p>The request-response operation</p><p>Return a list of service problems. Bulk out argument, with iterator pattern.</p></wsdl:documentation>
<wsdl:input name="getTestProblemsByIteratorRequest" message="tns:getTestProblemsByIteratorRequest"/>
<wsdl:output name="getTestProblemsByIteratorResponse" message="tns:getTestProblemsByIteratorResponse"/>
</wsdl:operation>
<wsdl:operation name="getTestProblemsByFileTransfer">
<wsdl:documentation><p>The request-response operation</p><p>Return a list of service problems. Bulk out argument, with file transfer pattern.</p></wsdl:documentation>
<wsdl:input name="getTestProblemsByFileTransferRequest" message="tns:getTestProblemsByFileTransferRequest"/>
<wsdl:output name="getTestProblemsByFileTransferResponse" message="tns:getTestProblemsByFileTransferResponse"/>
</wsdl:operation>
<wsdl:operation name="setTestProblemsByIterator">
<wsdl:documentation><p>The request-response operation</p><p>Set a list of service problems. Bulk in argument, with iterator pattern.</p></wsdl:documentation>
<wsdl:input name="setTestProblemsByIteratorRequest" message="tns:setTestProblemsByIteratorRequest"/>
<wsdl:output name="setTestProblemsByIteratorResponse" message="tns:setTestProblemsByIteratorResponse"/>
</wsdl:operation>
<wsdl:operation name="setTestProblemsByFileTransfer">
<wsdl:documentation><p>The request-response operation</p><p>Set a list of service problems. Bulk in argument, with file transfer pattern.</p></wsdl:documentation>
<wsdl:input name="setTestProblemsByFileTransferRequest" message="tns:setTestProblemsByFileTransferRequest"/>
<wsdl:output name="setTestProblemsByFileTransferResponse" message="tns:setTestProblemsByFileTransferResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestBulkInterfaceSoapHttpBinding" type="tns:TestBulkInterface">
<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsaw:UsingAddressing wsdl:required="true"/>
<wsdl:operation name="getTestProblemsByIterator">
<soap:operation soapAction="getTestProblemsByIterator" style="document"/>
<wsdl:input name="getTestProblemsByIteratorRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTestProblemsByIteratorResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getTestProblemsByFileTransfer">
<soap:operation soapAction="getTestProblemsByFileTransfer" style="document"/>
<wsdl:input name="getTestProblemsByFileTransferRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getTestProblemsByFileTransferResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="setTestProblemsByIterator">
<soap:operation soapAction="setTestProblemsByIterator" style="document"/>
<wsdl:input name="setTestProblemsByIteratorRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="setTestProblemsByIteratorResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="setTestProblemsByFileTransfer">
<soap:operation soapAction="setTestProblemsByFileTransfer" style="document"/>
<wsdl:input name="setTestProblemsByFileTransferRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="setTestProblemsByFileTransferResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestBulkInterfaceWs">
<wsdl:documentation><p>This is a sample wsdl:service definition of the service interface
for an implementation using the WS profile (SOAP/HTTP binging).</p><p>This wsdl:service definition is usually used at implementation time
or WS registration/discovery of a specific WS instance.</p></wsdl:documentation>
<wsdl:port name="TestBulkInterfaceHttpPort" binding="tns:TestBulkInterfaceSoapHttpBinding">
<soap:address location="http://localhost/TestBulkInterface"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
|