How do I debug WSDL when WSDL2Java fails? - wsdl

We are upgrading our web services to use JAX-WS 2.1.
Our current web services was generated java-first and using Axis1 to auto-generate WSDL.
Now we have this auto-generated WSDL and need to generate JAX-WS compliant Java code from it.
I'm using Wsdl2java from Axis2 which should work fine, but when I try to run it on our WSDL I get multiple errors, indicating the generated WSDL was not really well-formed.
Being not so familiar with WSDL and XML name spaces, I find it hard to debug. Could anyone please lend me a hand here?
Currently I'm stuck with this error:
"[INFO] org.apache.axis2.wsdl.codegen.CodeGenerationException: org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was mapped to the name AdbRuleException with namespace http://exception.common.adb.example.com"
If anyone have any idea where I can begin then I would be very happy! :)
This is the XML:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://webservice.adb.example.com"
xmlns:intf="http://webservice.adb.example.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns1="http://exception.common.adb.example.com"
xmlns:tns2="http://exception.xml.adb.example.com"
xmlns:tns3="http://sax.xml.org" xmlns:tns4="http://lang.java"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://webservice.adb.example.com">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://webservice.adb.example.com">
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdConnexionException">
<sequence/>
</complexType>
<complexType name="ArrayOf_soapenc_string">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="soapenc:string[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.apache.org/xml-soap">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="mapItem">
<sequence>
<element name="key" nillable="true" type="xsd:anyType"/>
<element name="value" nillable="true" type="xsd:anyType"/>
</sequence>
</complexType>
<complexType name="Map">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exception.common.adb.example.com">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdbRuleException">
<sequence>
<element name="errorKey" nillable="true" type="soapenc:int"/>
<element name="errorMessage" nillable="true" type="soapenc:string"/>
<element name="exceptionKeyMap" nillable="true" type="apachesoap:Map"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://sax.xml.org">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="SAXException">
<sequence>
<element name="cause" nillable="true" type="xsd:anyType"/>
<element name="exception" nillable="true" type="xsd:anyType"/>
<element name="message" nillable="true" type="soapenc:string"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exception.xml.adb.example.com">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdConnexionRuleException">
<complexContent>
<extension base="tns3:SAXException">
<sequence/>
</extension>
</complexContent>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="getDeadlineExceptionsByMarketIdResponse">
<wsdl:part name="getDeadlineExceptionsByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getDeadlinesResponse">
<wsdl:part name="getDeadlinesReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getOrderStatusResponse">
<wsdl:part name="getOrderStatusReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getStatusResponse">
<wsdl:part name="getStatusReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="AdbRuleException">
<wsdl:part name="fault" element="tns1:AdbRuleException"/>
</wsdl:message>
<wsdl:message name="requestResponse">
<wsdl:part name="requestReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getDeadlinesByMarketIdResponse">
<wsdl:part name="getDeadlinesByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="cancelOrderRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="AdConnexionException">
<wsdl:part name="fault" element="impl:AdConnexionException"/>
</wsdl:message>
<wsdl:message name="getDeadlinesByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getProductsByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPackageInfoRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="cancelOrderResponse">
<wsdl:part name="cancelOrderReturn" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message name="getDeadlinesRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getRealEstatePlacementsResponse">
<wsdl:part name="getRealEstatePlacementsReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getStatusRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getRealEstatePlacementsRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="helloWorldResponse">
<wsdl:part name="helloWorldReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getOrderStatusRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getProductsByMarketIdResponse">
<wsdl:part name="getProductsByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPlacementsResponse">
<wsdl:part name="getPlacementsReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="AdConnexionRuleException">
<wsdl:part name="fault" element="tns2:AdConnexionRuleException"/>
</wsdl:message>
<wsdl:message name="helloWorldRequest">
</wsdl:message>
<wsdl:message name="getDeadlineExceptionsByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="requestRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPlacementsRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="impl:ArrayOf_soapenc_string"/>
</wsdl:message>
<wsdl:message name="getPackageInfoResponse">
<wsdl:part name="getPackageInfoReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:portType name="AdConnexionService">
<wsdl:operation name="getPackageInfo" parameterOrder="in0 in1">
<wsdl:input message="impl:getPackageInfoRequest" name="getPackageInfoRequest"/>
<wsdl:output message="impl:getPackageInfoResponse" name="getPackageInfoResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="request" parameterOrder="in0">
<wsdl:input message="impl:requestRequest" name="requestRequest"/>
<wsdl:output message="impl:requestResponse" name="requestResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="helloWorld">
<wsdl:input message="impl:helloWorldRequest" name="helloWorldRequest"/>
<wsdl:output message="impl:helloWorldResponse" name="helloWorldResponse"/>
</wsdl:operation>
<wsdl:operation name="getRealEstatePlacements" parameterOrder="in0">
<wsdl:input message="impl:getRealEstatePlacementsRequest" name="getRealEstatePlacementsRequest"/>
<wsdl:output message="impl:getRealEstatePlacementsResponse" name="getRealEstatePlacementsResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getPlacements" parameterOrder="in0 in1">
<wsdl:input message="impl:getPlacementsRequest" name="getPlacementsRequest"/>
<wsdl:output message="impl:getPlacementsResponse" name="getPlacementsResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getProductsByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getProductsByMarketIdRequest" name="getProductsByMarketIdRequest"/>
<wsdl:output message="impl:getProductsByMarketIdResponse" name="getProductsByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getStatus" parameterOrder="in0 in1">
<wsdl:input message="impl:getStatusRequest" name="getStatusRequest"/>
<wsdl:output message="impl:getStatusResponse" name="getStatusResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlines" parameterOrder="in0">
<wsdl:input message="impl:getDeadlinesRequest" name="getDeadlinesRequest"/>
<wsdl:output message="impl:getDeadlinesResponse" name="getDeadlinesResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getOrderStatus" parameterOrder="in0">
<wsdl:input message="impl:getOrderStatusRequest" name="getOrderStatusRequest"/>
<wsdl:output message="impl:getOrderStatusResponse" name="getOrderStatusResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="cancelOrder" parameterOrder="in0">
<wsdl:input message="impl:cancelOrderRequest" name="cancelOrderRequest"/>
<wsdl:output message="impl:cancelOrderResponse" name="cancelOrderResponse"/>
<wsdl:fault message="impl:AdbRuleException" name="AdbRuleException"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
<wsdl:fault message="impl:AdConnexionRuleException" name="AdConnexionRuleException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlinesByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getDeadlinesByMarketIdRequest" name="getDeadlinesByMarketIdRequest"/>
<wsdl:output message="impl:getDeadlinesByMarketIdResponse" name="getDeadlinesByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlineExceptionsByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getDeadlineExceptionsByMarketIdRequest" name="getDeadlineExceptionsByMarketIdRequest"/>
<wsdl:output message="impl:getDeadlineExceptionsByMarketIdResponse" name="getDeadlineExceptionsByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AdConnexionServiceSoapBinding" type="impl:AdConnexionService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getPackageInfo">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getPackageInfoRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getPackageInfoResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="request">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="requestRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="requestResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="helloWorld">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="helloWorldRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="helloWorldResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getRealEstatePlacements">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getRealEstatePlacementsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getRealEstatePlacementsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getPlacements">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getPlacementsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getPlacementsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getProductsByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getProductsByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getProductsByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getStatusRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getStatusResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlines">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlinesRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlinesResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getOrderStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getOrderStatusRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getOrderStatusResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelOrder">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="cancelOrderRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="cancelOrderResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdbRuleException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdbRuleException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
<wsdl:fault name="AdConnexionRuleException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionRuleException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlinesByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlinesByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlinesByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlineExceptionsByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlineExceptionsByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlineExceptionsByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AdConnexionServiceService">
<wsdl:port binding="impl:AdConnexionServiceSoapBinding" name="AdConnexionService">
<wsdlsoap:address location="http://adb.example.com/adbXmlService/webservice/AdConnexionService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Because of these use="encoded" you should stick with Axis 1.4 (or other JAX-RPC compliant implementation). Axis2 (and CXF and JAX-WS-RI for that matter) doesn't support rpc/encoded style of web services.

Related

Use Sabre SOAP API with iOS

Does anyone know how to use sabre SOAP web services with IOS? anyone has done that ? I am using AFNetworking for the network call.
I am using AFHTTPRequestOperation to make a call to web service but that web service require authentication.
Authentication parameters are username , password , and IPCC. I can set username and password by
NSURLCredential *credential = [NSURLCredential credentialWithUser:#"aaaaa" password:#"aaaaaa" persistence:NSURLCredentialPersistenceNone];
[operation setCredential:credential];
but how can set that IPCC parameter?
Something like (quick and dirty):
NSString *soapMessage = [NSString stringWithFormat:
#"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:eb=\"http://www.ebxml.org/namespaces/messageHeader\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">"
" <SOAP-ENV:Header>"
" <eb:MessageHeader SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">"
" <eb:ConversationId/>"
" <eb:From>"
" <eb:PartyId type=\"urn:x12.org:IO5:01\">999999</eb:PartyId>"
" </eb:From>"
" <eb:To>"
" <eb:PartyId type=\"urn:x12.org:IO5:01\">123123</eb:PartyId>"
" </eb:To>"
" <eb:CPAId>IPCC</eb:CPAId>"
" <eb:Service eb:type=\"OTA\">SessionCreateRQ</eb:Service>"
" <eb:Action>SessionCreateRQ</eb:Action>"
" <eb:MessageData>"
" <eb:MessageId>1000</eb:MessageId>"
" <eb:Timestamp>2001-02-15T11:15:12Z</eb:Timestamp>"
" <eb:TimeToLive>2001-02-15T11:15:12Z</eb:TimeToLive>"
" </eb:MessageData>"
" </eb:MessageHeader>"
" <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/12/secext\" xmlns:wsu=\"http://schemas.xmlsoap.org/ws/2002/12/utility\">"
" <wsse:UsernameToken>"
" <wsse:Username>%#</wsse:Username>"
" <wsse:Password>%#</wsse:Password>"
" <Organization>%#</Organization>"
" <Domain>DEFAULT</Domain>"
" </wsse:UsernameToken>"
" </wsse:Security>"
" </SOAP-ENV:Header>"
" <SOAP-ENV:Body>"
" <eb:Manifest SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">"
" <eb:Reference xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"cid:rootelement\" xlink:type=\"simple\"/>"
" </eb:Manifest>"
" </SOAP-ENV:Body>"
"</SOAP-ENV:Envelope>"
,username
,password
,ipccValue
];
I assume you mean the ipccValue in the Organization block, rather than the eb:CPAId block
from https://developer.sabre.com/docs/read/soap_basics/Authentication
and credits to send parameter in soap web service from ios
When i tried the above snippet its returning me this
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.opentravel.org/OTA/2002/11" xmlns:tns="https://webservices.sabre.com/websvc" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" targetNamespace="https://webservices.sabre.com/websvc">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.opentravel.org/OTA/2002/11" schemaLocation="SessionCreateRQRS.xsd"/>
<xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader" schemaLocation="msg-header-2_0.xsd"/>
<xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/12/secext" schemaLocation="wsse.xsd"/>
</xsd:schema>
</types>
<message name="GetSessionCreateInput">
<part name="header" element="eb:MessageHeader"/>
<part name="header2" element="wsse:Security"/>
<part name="body" element="xsd1:SessionCreateRQ"/>
</message>
<message name="GetSessionCreateOutput">
<part name="header" element="eb:MessageHeader"/>
<part name="header2" element="wsse:Security"/>
<part name="body" element="xsd1:SessionCreateRS"/>
</message>
<portType name="SessionCreatePortType">
<operation name="SessionCreateRQ">
<input message="tns:GetSessionCreateInput"/>
<output message="tns:GetSessionCreateOutput"/>
</operation>
</portType>
<binding name="SessionCreateSoapBinding" type="tns:SessionCreatePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SessionCreateRQ">
<soap:operation soapAction="OTA"/>
<input>
<soap:header message="tns:GetSessionCreateInput" part="header" use="literal"/>
<soap:header message="tns:GetSessionCreateInput" part="header2" use="literal"/>
<soap:body parts="body" use="literal"/>
</input>
<output>
<soap:header message="tns:GetSessionCreateOutput" part="header" use="literal"/>
<soap:header message="tns:GetSessionCreateOutput" part="header2" use="literal"/>
<soap:body parts="body" use="literal"/>
</output>
</operation>
</binding>
<service name="SessionCreateRQService">
<port name="SessionCreatePortType" binding="tns:SessionCreateSoapBinding">
<soap:address location="https://webservices.sabre.com"/>
</port>
</service>
</definitions>

java.lang.NoSuchMethodError:In jaspereports in struts2

Trying to integrate jasperreports with struts2....and i am very new to jasperreports ....designed reports using eclipse report designer
here is my jrmxlЖ
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0 -->
<!-- 2015-08-24T16:05:04 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Coffee_Landscape" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df013db5-f76e-44d3-b0df-bcbc46d93160">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<style name="Title" fontName="Times New Roman" fontSize="50" isBold="true"/>
<style name="SubTitle" forecolor="#736343" fontName="Arial" fontSize="18"/>
<style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
<style name="Detail" fontName="Arial" fontSize="12"/>
<style name="Row" mode="Transparent">
<conditionalStyle>
<conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
<style backcolor="#E6DAC3"/>
</conditionalStyle>
</style>
<field name="transaction_Date" class="java.sql.Timestamp">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="amount_Of_Sale" class="java.math.BigDecimal">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<field name="discount_Amount" class="java.math.BigDecimal">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="136" splitType="Stretch">
<image>
<reportElement x="0" y="0" width="164" height="126" uuid="1c003177-754c-448f-8ce1-16868856f545"/>
<imageExpression><![CDATA["pctv-blue-rect.png"]]></imageExpression>
</image>
<staticText>
<reportElement style="Title" x="190" y="0" width="443" height="62" uuid="bc1ce1da-8232-46ea-be55-cec4abb986dd"/>
<textElement verticalAlignment="Middle"/>
<text><![CDATA[MyFirstJasper]]></text>
</staticText>
<staticText>
<reportElement style="SubTitle" x="303" y="62" width="196" height="22" uuid="f6a78448-8260-4445-a9e0-e3fb53b080d9"/>
<textElement>
<font fontName="Times New Roman"/>
</textElement>
<text><![CDATA[Coffee SubTitle]]></text>
</staticText>
<staticText>
<reportElement x="172" y="94" width="383" height="42" uuid="8240065e-64b6-4170-b5d9-6341598e7b35"/>
<textElement textAlignment="Right">
<font size="10"/>
</textElement>
<text><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor purus gravida arcu aliquam mattis. Donec et nulla libero, ut varius massa. Nulla sed turpis elit. Etiam aliquet mauris a ligula hendrerit in auctor leo lobortis.]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="16" splitType="Stretch">
<line>
<reportElement positionType="FixRelativeToBottom" x="0" y="15" width="802" height="1" uuid="e9d2002a-c8ee-4649-a258-640dad29110c"/>
<graphicElement>
<pen lineWidth="0.5" lineColor="#999999"/>
</graphicElement>
</line>
<staticText>
<reportElement style="Column header" x="0" y="0" width="267" height="15" forecolor="#736343" uuid="732f1c0f-9a82-40f6-a3ec-adc1a7974b20"/>
<text><![CDATA[TRANSACTION DATE]]></text>
</staticText>
<staticText>
<reportElement style="Column header" x="267" y="0" width="267" height="15" forecolor="#736343" uuid="3d530dc4-b1f1-4fc8-97a9-caf5e9880788"/>
<text><![CDATA[AMOUNT OF SALE]]></text>
</staticText>
<staticText>
<reportElement style="Column header" x="534" y="0" width="267" height="15" forecolor="#736343" uuid="79cddcd9-d19c-4737-bef4-4f5913c70e06"/>
<text><![CDATA[DISCOUNT AMOUNT]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="15" splitType="Stretch">
<frame>
<reportElement style="Row" mode="Opaque" x="0" y="0" width="802" height="15" uuid="fa7cec56-4ec1-48e6-a26e-7266a995d174"/>
<textField isStretchWithOverflow="true">
<reportElement style="Detail" x="0" y="0" width="267" height="15" uuid="8af81006-b893-4305-b756-5393650dbe47"/>
<textFieldExpression><![CDATA[$F{transaction_Date}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true">
<reportElement style="Detail" x="267" y="0" width="267" height="15" uuid="0b740c0b-0299-4454-b6d1-98fba48bd8d1"/>
<textFieldExpression><![CDATA[$F{amount_Of_Sale}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true">
<reportElement style="Detail" x="534" y="0" width="267" height="15" uuid="135c7c39-45d3-4b00-a67e-58caf29dc186"/>
<textFieldExpression><![CDATA[$F{discount_Amount}]]></textFieldExpression>
</textField>
</frame>
</band>
</detail>
<columnFooter>
<band height="6" splitType="Stretch">
<line>
<reportElement positionType="FixRelativeToBottom" x="0" y="3" width="802" height="1" uuid="fa5e88d5-a011-4e32-8f12-ce923f903111"/>
<graphicElement>
<pen lineWidth="0.5" lineColor="#999999"/>
</graphicElement>
</line>
</band>
</columnFooter>
<pageFooter>
<band height="25" splitType="Stretch">
<frame>
<reportElement mode="Opaque" x="-21" y="1" width="843" height="24" forecolor="#D0B48E" backcolor="#F2EBDF" uuid="5d8169bd-4a75-48c8-8a68-6d3ad5ba9402"/>
<textField evaluationTime="Report">
<reportElement style="Column header" x="783" y="1" width="40" height="20" forecolor="#736343" uuid="e5e27efa-b599-499b-9ca3-848cb511cb7b"/>
<textElement verticalAlignment="Middle">
<font size="10" isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField>
<reportElement style="Column header" x="703" y="1" width="80" height="20" forecolor="#736343" uuid="18cfe1ca-f7d6-48b0-9827-28578b42a5e0"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font size="10" isBold="false"/>
</textElement>
<textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField pattern="EEEEE dd MMMMM yyyy">
<reportElement style="Column header" x="1" y="1" width="197" height="20" forecolor="#736343" uuid="fbce24bb-3cb1-44a3-8eec-8c067ddbe5b5"/>
<textElement verticalAlignment="Middle">
<font size="10" isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>
</frame>
</band>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
And Struts.xml
<action name="myJasperTest" class="com.pincodetv.jasper.JasperAction">
<result name="success" type="jasper">
<param name="location">/jasper/our_compiled_template.jasper</param>
<param name="dataSource">myList</param>
<param name="format">PDF</param>
</result>
</action>
Jars which i have in lib
struts2-jasperreports-plugin-2.2.3.jar
jasperreports-6.1.0.jar
jasperreports-fonts-6.1.0.jar
jasperreports-javaflow-6.1.0.jar
The error logs...
java.lang.NoSuchMethodError: net.sf.jasperreports.engine.util.JRLoader.loadObject(Ljava/lang/String;)Ljava/lang/Object;
at org.apache.struts2.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:321)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
i got the same problem, i used struts2, jasper-report 5.6.0, japer report library 5.6.0. how i solved my problem is just added class JRLoader download here:
http://grepcode.com/file/repo1.maven.org/maven2/net.sf.jasperreports/jasperreports/4.5.0/net/sf/jasperreports/engine/util/JRLoader.java
add the joda library in you project library,
joda download here:
https://github.com/JodaOrg/joda-time/releases/download/v2.9.4/joda-time-2.9.4-dist.tar.gz
create package in you project net.sf.jasperreports.engine.util
and put the JRLoader.java in that package, then run your project
viola.... it's work....

Unable to receive HumanTask response to the BPEL process

I'm quite new to WSO2 BPS 3.2.0 and for BPEL as well. I created a BPEL process for firing a HumanTask using bpel4people extension. For that I took the sample humantask shipped with the BPS. I could successfully fire the task. But once I complete the task, My bpel process does not receive the response from the task. Is there any special procedure to get the respose ? Here are my bpel process and the HumanTask's WSDL file.
bpel file..
<!-- JavaTraining BPEL Process [Generated by the Eclipse BPEL Designer] -->
<!-- Date: Mon Mar 05 12:13:11 IST 2012 -->
<bpel:process name="JavaTraining" targetNamespace="http://loits.com/bps/training" suppressJoinFailure="yes" xmlns:tns="http://loits.com/bps/training" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ns1="http://www.w3.org/2001/XMLSchema"
xmlns:ns2="http://www.example.com/claims/" xmlns:xsd="http://www.example.com/claims/schema" xmlns:b4p="http://docs.oasis-open.org/ns/bpel4people/bpel4people/200803">
<!-- Import the client WSDL -->
<bpel:extensions>
<bpel:extension namespace="http://docs.oasis-open.org/ns/bpel4people/bpel4people/200803" mustUnderstand="yes"></bpel:extension>
</bpel:extensions>
<bpel:import namespace="http://www.example.com/claims/" location="ClaimsApprovalTask.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"></bpel:import>
<bpel:import location="JavaTrainingArtifacts.wsdl" namespace="http://loits.com/bps/training" importType="http://schemas.xmlsoap.org/wsdl/" />
<!-- ================================================================= -->
<!-- PARTNERLINKS -->
<!-- List of services participating in this BPEL process -->
<!-- ================================================================= -->
<bpel:partnerLinks>
<!-- The 'client' role represents the requester of this service. -->
<bpel:partnerLink name="client" partnerLinkType="tns:JavaTraining" myRole="JavaTrainingProvider" />
<bpel:partnerLink name="b4pPtlnk" partnerLinkType="tns:b4pPtlnkType" myRole="requester" partnerRole="receiever"></bpel:partnerLink>
</bpel:partnerLinks>
<!-- ================================================================= -->
<!-- VARIABLES -->
<!-- List of messages and XML documents used within this BPEL process -->
<!-- ================================================================= -->
<bpel:variables>
<!-- Reference to the message passed as input during initiation -->
<bpel:variable name="input" messageType="tns:JavaTrainingRequestMessage" />
<!--
Reference to the message that will be returned to the requester
-->
<bpel:variable name="output" messageType="tns:JavaTrainingResponseMessage" />
<bpel:variable name="dummyVar" type="ns1:boolean"></bpel:variable>
<bpel:variable name="b4pIn" messageType="ns2:ClaimApprovalRequest"></bpel:variable>
<bpel:variable name="b4pOut" messageType="ns2:ClaimApprovalResponse"></bpel:variable>
</bpel:variables>
<!-- ================================================================= -->
<!-- ORCHESTRATION LOGIC -->
<!-- Set of activities coordinating the flow of messages across the -->
<!-- services integrated within this business process -->
<!-- ================================================================= -->
<bpel:sequence name="main">
<!-- Receive input from requester.
Note: This maps to operation defined in JavaTraining.wsdl
-->
<bpel:receive name="receiveInput" partnerLink="client" portType="tns:JavaTraining" operation="process" variable="input" createInstance="yes" />
<!-- Generate reply to synchronous request -->
<bpel:if name="If_amount_1000">
<bpel:condition expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[number($input.payload/tns:amount) > number(1000)]]>
</bpel:condition>
<bpel:sequence>
<bpel:assign validate="no" name="Assign1">
<bpel:copy>
<bpel:from>
<bpel:literal>
<tschema:ClaimApprovalData xmlns:tschema="http://www.example.com/claims/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tschema:cust>
<tschema:id>tschema:id</tschema:id>
<tschema:firstname>tschema:firstname</tschema:firstname>
<tschema:lastname>tschema:lastname</tschema:lastname>
</tschema:cust>
<tschema:amount>0.0</tschema:amount>
<tschema:region>tschema:region</tschema:region>
<tschema:priority>0</tschema:priority>
</tschema:ClaimApprovalData>
</bpel:literal>
</bpel:from>
<bpel:to variable="b4pIn" part="ClaimApprovalRequest"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:customer/tns:custId]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:cust/xsd:id]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:customer/tns:firstName]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:cust/xsd:firstname]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:customer/tns:lastName]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:cust/xsd:lastname]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:amount]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:amount]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:priority]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:priority]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from part="payload" variable="input">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:region]]>
</bpel:query>
</bpel:from>
<bpel:to part="ClaimApprovalRequest" variable="b4pIn">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:region]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:extensionActivity>
<b4p:peopleActivity name="HumanTask" inputVariable="b4pIn" outputVariable="b4pOut">
<b4p:remoteTask partnerLink="b4pPtlnk" operation="approve" responseOperation="approvalResponse"></b4p:remoteTask>
</b4p:peopleActivity>
</bpel:extensionActivity>
<bpel:assign validate="no" name="Assign3">
<bpel:copy>
<bpel:from part="ClaimApprovalResponse" variable="b4pOut">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[xsd:approved]]>
</bpel:query>
</bpel:from>
<bpel:to variable="dummyVar"></bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:if name="If_approved">
<bpel:condition expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[$dummyVar = true()]]>
</bpel:condition>
<bpel:assign validate="no" name="Assign">
<bpel:copy>
<bpel:from>
<bpel:literal>
<tns:JavaTrainingResponse xmlns:tns="http://loits.com/bps/training" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:result>tns:result</tns:result>
</tns:JavaTrainingResponse>
</bpel:literal>
</bpel:from>
<bpel:to variable="output" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA["Approved"]]>
</bpel:from>
<bpel:to part="payload" variable="output">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:result]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:else>
<bpel:assign validate="no" name="Assign4">
<bpel:copy>
<bpel:from>
<bpel:literal>
<tns:JavaTrainingResponse xmlns:tns="http://loits.com/bps/training" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:result>tns:result</tns:result>
</tns:JavaTrainingResponse>
</bpel:literal>
</bpel:from>
<bpel:to variable="output" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA["Rejected"]]>
</bpel:from>
<bpel:to part="payload" variable="output">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:result]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:else>
</bpel:if>
</bpel:sequence>
<bpel:else>
<bpel:assign validate="no" name="Assign2">
<bpel:copy>
<bpel:from>
<bpel:literal>
<tns:JavaTrainingResponse xmlns:tns="http://loits.com/bps/training" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:result>tns:result</tns:result>
</tns:JavaTrainingResponse>
</bpel:literal>
</bpel:from>
<bpel:to variable="output" part="payload"></bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA["Approved Automatically"]]>
</bpel:from>
<bpel:to part="payload" variable="output">
<bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:result]]>
</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
</bpel:else>
</bpel:if>
<bpel:reply name="replyOutput" partnerLink="client" portType="tns:JavaTraining" operation="process" variable="output" />
</bpel:sequence>
</bpel:process>
and the wsdl..
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions name="ClaimApproval" targetNamespace="http://www.example.com/claims/" xmlns:tns="http://www.example.com/claims/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tschema="http://www.example.com/claims/schema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
<wsdl:documentation>
Example for WS-HumanTask 1.1 - WS-HumanTask Task Interface Definition
</wsdl:documentation>
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.com/claims/schema" xmlns:tns="http://www.example.com/claims/schema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:element name="ClaimApprovalData" type="tns:ClaimApprovalDataType" />
<xsd:complexType name="ClaimApprovalDataType">
<xsd:sequence>
<xsd:element name="cust">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:string">
</xsd:element>
<xsd:element name="firstname" type="xsd:string">
</xsd:element>
<xsd:element name="lastname" type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="amount" type="xsd:double" />
<xsd:element name="region" type="xsd:string" />
<xsd:element name="priority" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ClaimApprovalNotificationData" type="tns:ClaimApprovalNotificationDataType" />
<xsd:complexType name="ClaimApprovalNotificationDataType">
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string" />
<xsd:element name="lastname" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ClaimApprovalResponse" type="tns:ClaimApprovalResponseType"></xsd:element>
<xsd:complexType name="ClaimApprovalResponseType">
<xsd:sequence>
<xsd:element name="approved" type="xsd:boolean"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ClaimApprovalRequest">
<wsdl:part name="ClaimApprovalRequest" element="tschema:ClaimApprovalData" />
</wsdl:message>
<wsdl:message name="ClaimApprovalResponse">
<wsdl:part name="ClaimApprovalResponse" element="tschema:ClaimApprovalResponse" />
</wsdl:message>
<wsdl:message name="ClaimApprovalNotificationRequest">
<wsdl:part name="ClaimApprovalNotificationRequest" element="tschema:ClaimApprovalNotificationData" />
</wsdl:message>
<wsdl:portType name="ClaimsHandlingPT">
<wsdl:operation name="approve">
<wsdl:input message="tns:ClaimApprovalRequest" />
</wsdl:operation>
<wsdl:operation name="escalate">
<wsdl:input message="tns:ClaimApprovalRequest" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="ClaimsHandlingCallbackPT">
<wsdl:operation name="approvalResponse">
<wsdl:input message="tns:ClaimApprovalResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="ClaimApprovalReminderPT">
<wsdl:operation name="notify">
<wsdl:input message="tns:ClaimApprovalNotificationRequest" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ClaimSoapBinding" type="tns:ClaimsHandlingPT">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="approve">
<soap:operation soapAction="urn:approve" style="document" />
<wsdl:input>
<soap:body use="literal" namespace="http://www.example.com/claims/" />
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="escalate">
<soap:operation soapAction="urn:escalate" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="ClaimSoapBindingReminder" type="tns:ClaimApprovalReminderPT">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="notify">
<soap:operation soapAction="urn:notify" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="ClaimSoapBindingCB" type="tns:ClaimsHandlingCallbackPT">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="approvalResponse">
<soap:operation soapAction="urn:approvalResponse" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ClaimService">
<wsdl:port name="ClaimPort" binding="tns:ClaimSoapBinding">
<soap:address location="http://localhost:9763/services/ClaimService" />
</wsdl:port>
</wsdl:service>
<wsdl:service name="ClaimReminderService">
<wsdl:port name="ClaimReminderPort" binding="tns:ClaimSoapBindingReminder">
<soap:address location="http://localhost:9763/services/ClaimReminderService" />
</wsdl:port>
</wsdl:service>
<wsdl:service name="ClaimServiceCB">
<wsdl:port name="ClaimPortCB" binding="tns:ClaimSoapBindingCB">
<soap:address location="http://localhost:9763/services/ClaimServiceCB" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Finally I could make it.
What we need to do is to add correlationFilter attribute to the corresponding provide activity in the deploy.xml file.
By adding this namespace will provide b4pFilter
xmlns:b4p="http://docs.oasis-open.org/ns/bpel4people/bpel4people/200803"
<provide partnerLink="b4p" correlationFilter="b4p:b4pFilter">
<service name="biApprove:ClaimServiceCB" port="ClaimPortCB"/>
</provide>
Full code of the deploy.xml
<?xml version="1.0" encoding="UTF-8"?>
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
xmlns:biApprove="http://www.example.com/claims/"
xmlns:sample="http://loits.com/bps/training"
xmlns:b4p="http://docs.oasis-open.org/ns/bpel4people/bpel4people/200803">
<process name="sample:JavaTraining">
<active>true</active>
<retired>false</retired>
<process-events generate="all"/>
<provide partnerLink="client">
<service name="sample:BpelTest" port="BpelTestPort"/>
</provide>
<provide partnerLink="b4p" correlationFilter="b4p:b4pFilter">
<service name="biApprove:ClaimServiceCB" port="ClaimPortCB"/>
</provide>
<invoke partnerLink="b4p">
<service name="biApprove:ClaimService" port="ClaimPort"/>
</invoke>
</process>
</deploy>

SharePoint Online BCS OData External Content Can't Update, View or Delete

Using Visual Studio 2013, I created an Entity Model over an existing database. Each table has a GUID for it's primary key. I created an MVC Web API project with related OData Bindings and Controllers.
Here is how I create the OData Binding;
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<HRPosition>("HRPositions").EntityType.HasKey(p=>p.HTPositionGuid);
Here is a sample controller for the HRPositions Entity.
public class HRPositionsController : ODataController
{
private EFSEntities db = new EFSEntities();
// GET: odata/HRPositions
[EnableQuery]
public IQueryable<HRPosition> GetHRPositions()
{
return db.HRPositions;
}
// GET: odata/HRPositions(5)
[EnableQuery]
public SingleResult<HRPosition> GetHRPosition([FromODataUri] Guid key)
{
return SingleResult.Create(db.HRPositions.Where(hRPosition => hRPosition.HTPositionGuid == key));
}
// PUT: odata/HRPositions(5)
public async Task<IHttpActionResult> Put([FromODataUri] Guid key, Delta<HRPosition> patch)
{
Validate(patch.GetEntity());
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
HRPosition hRPosition = await db.HRPositions.FindAsync(key);
if (hRPosition == null)
{
return NotFound();
}
patch.Put(hRPosition);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!HRPositionExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(hRPosition);
}
// POST: odata/HRPositions
public async Task<IHttpActionResult> Post(HRPosition hRPosition)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.HRPositions.Add(hRPosition);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (HRPositionExists(hRPosition.HTPositionGuid))
{
return Conflict();
}
else
{
throw;
}
}
return Created(hRPosition);
}
// PATCH: odata/HRPositions(5)
[AcceptVerbs("PATCH", "MERGE")]
public async Task<IHttpActionResult> Patch([FromODataUri] Guid key, Delta<HRPosition> patch)
{
Validate(patch.GetEntity());
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
HRPosition hRPosition = await db.HRPositions.FindAsync(key);
if (hRPosition == null)
{
return NotFound();
}
patch.Patch(hRPosition);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!HRPositionExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(hRPosition);
}
// DELETE: odata/HRPositions(5)
public async Task<IHttpActionResult> Delete([FromODataUri] Guid key)
{
HRPosition hRPosition = await db.HRPositions.FindAsync(key);
if (hRPosition == null)
{
return NotFound();
}
db.HRPositions.Remove(hRPosition);
await db.SaveChangesAsync();
return StatusCode(HttpStatusCode.NoContent);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool HRPositionExists(Guid key)
{
return db.HRPositions.Count(e => e.HTPositionGuid == key) > 0;
}
}
Once the OData Service is deployed and using Fiddler I am able to query the Service endpoints and retrieve the full list of data as well as single entity data.
I then created a SharePoint App in which I create an External Content Type by referencing the OData service. This creates the ECT Model definitions for each endpoint.
Here is the ECT for HRPositions;
<?xml version="1.0" encoding="utf-16"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="EFSData" xmlns="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog">
<LobSystems>
<LobSystem Name="EFSODATA" Type="OData">
<Properties>
<Property Name="ODataServiceMetadataUrl" Type="System.String">https://efsodataapi.azurewebsites.net/OData/$metadata</Property>
<Property Name="ODataServiceMetadataAuthenticationMode" Type="System.String">PassThrough</Property>
<Property Name="ODataServicesVersion" Type="System.String">2.0</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<LobSystemInstances>
<LobSystemInstance Name="EFSODATA">
<Properties>
<Property Name="ODataServiceUrl" Type="System.String">https://efsodataapi.azurewebsites.net/OData</Property>
<Property Name="ODataServiceAuthenticationMode" Type="System.String">PassThrough</Property>
<Property Name="ODataFormat" Type="System.String">application/atom+xml</Property>
<Property Name="HttpHeaderSetAcceptLanguage" Type="System.Boolean">true</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity Name="HRPositions" DefaultDisplayName="HRPositions" Namespace="EFSData" Version="1.0.0.0" EstimatedInstanceCount="2000">
<Properties>
<Property Name="ExcludeFromOfflineClientForList" Type="System.String">False</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<Identifiers>
<Identifier Name="HTPositionGuid" TypeName="System.Guid" />
</Identifiers>
<Methods>
<Method Name="CreateHRPosition" DefaultDisplayName="Create HRPosition" IsStatic="false">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/HRPositions</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="#HTPositionGuid" Direction="In">
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" CreatorField="true" />
</Parameter>
<Parameter Name="#PosistionCode" Direction="In">
<TypeDescriptor Name="PosistionCode" DefaultDisplayName="PosistionCode" TypeName="System.String" CreatorField="true" />
</Parameter>
<Parameter Name="#PositionName" Direction="In">
<TypeDescriptor Name="PositionName" DefaultDisplayName="PositionName" TypeName="System.String" CreatorField="true" />
</Parameter>
<Parameter Name="#Description" Direction="In">
<TypeDescriptor Name="Description" DefaultDisplayName="Description" TypeName="System.String" CreatorField="true" />
</Parameter>
<Parameter Name="#CreateHRPosition" Direction="Return">
<TypeDescriptor Name="CreateHRPosition" DefaultDisplayName="CreateHRPosition" TypeName="Microsoft.BusinessData.Runtime.DynamicType">
<TypeDescriptors>
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" ReadOnly="true" />
<TypeDescriptor Name="PosistionCode" DefaultDisplayName="PosistionCode" TypeName="System.String" />
<TypeDescriptor Name="PositionName" DefaultDisplayName="PositionName" TypeName="System.String" />
<TypeDescriptor Name="Description" DefaultDisplayName="Description" TypeName="System.String" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="CreateHRPosition" Type="Creator" ReturnParameterName="#CreateHRPosition" ReturnTypeDescriptorPath="CreateHRPosition">
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="ReadSpecificHRPosition" DefaultDisplayName="Read Specific HRPosition" IsStatic="false">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/HRPositions(HTPositionGuid=guid'#HTPositionGuid')</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="#HTPositionGuid" Direction="In">
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" />
</Parameter>
<Parameter Name="#HRPosition" Direction="Return">
<TypeDescriptor Name="HRPosition" DefaultDisplayName="HRPosition" TypeName="Microsoft.BusinessData.Runtime.DynamicType">
<TypeDescriptors>
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" ReadOnly="true" />
<TypeDescriptor Name="PosistionCode" DefaultDisplayName="PosistionCode" TypeName="System.String" />
<TypeDescriptor Name="PositionName" DefaultDisplayName="PositionName" TypeName="System.String" />
<TypeDescriptor Name="Description" DefaultDisplayName="Description" TypeName="System.String" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ReadSpecificHRPosition" Type="SpecificFinder" Default="true" ReturnParameterName="#HRPosition" ReturnTypeDescriptorPath="HRPosition">
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="ReadAllHRPosition" DefaultDisplayName="Read All HRPosition" IsStatic="false">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/HRPositions?$top=#LimitHRPositionss</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<FilterDescriptors>
<FilterDescriptor Name="LimitFilter" DefaultDisplayName="LimitFilter" Type="Limit" />
</FilterDescriptors>
<Parameters>
<Parameter Name="#LimitHRPositionss" Direction="In">
<TypeDescriptor Name="LimitHRPositionss" DefaultDisplayName="LimitHRPositionss" TypeName="System.Int32" AssociatedFilter="LimitFilter">
<Properties>
<Property Name="LogicalOperatorWithPrevious" Type="System.String">None</Property>
<Property Name="Order" Type="System.String">0</Property>
</Properties>
<DefaultValues>
<DefaultValue MethodInstanceName="ReadAllHRPosition" Type="System.Int32">100</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Name="#HRPositions" Direction="Return">
<TypeDescriptor Name="HRPositions" DefaultDisplayName="HRPositions" TypeName="Microsoft.BusinessData.Runtime.IDynamicTypeEnumerator" IsCollection="true">
<TypeDescriptors>
<TypeDescriptor Name="HRPosition" DefaultDisplayName="HRPosition" TypeName="Microsoft.BusinessData.Runtime.DynamicType">
<TypeDescriptors>
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" ReadOnly="true" />
<TypeDescriptor Name="PosistionCode" DefaultDisplayName="PosistionCode" TypeName="System.String" />
<TypeDescriptor Name="PositionName" DefaultDisplayName="PositionName" TypeName="System.String" />
<TypeDescriptor Name="Description" DefaultDisplayName="Description" TypeName="System.String" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="ReadAllHRPosition" Type="Finder" Default="true" ReturnParameterName="#HRPositions" ReturnTypeDescriptorPath="HRPositions">
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="UpdateHRPosition" DefaultDisplayName="Update HRPosition" IsStatic="false">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/HRPositions(HTPositionGuid=guid'#HTPositionGuid')</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="#HTPositionGuid" Direction="In">
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" UpdaterField="true" />
</Parameter>
<Parameter Name="#PosistionCode" Direction="In">
<TypeDescriptor Name="PosistionCode" DefaultDisplayName="PosistionCode" TypeName="System.String" UpdaterField="true" />
</Parameter>
<Parameter Name="#PositionName" Direction="In">
<TypeDescriptor Name="PositionName" DefaultDisplayName="PositionName" TypeName="System.String" UpdaterField="true" />
</Parameter>
<Parameter Name="#Description" Direction="In">
<TypeDescriptor Name="Description" DefaultDisplayName="Description" TypeName="System.String" UpdaterField="true" />
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="UpdateHRPosition" Type="Updater">
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
<Method Name="DeleteHRPosition" DefaultDisplayName="Delete HRPosition" IsStatic="false">
<Properties>
<Property Name="ODataEntityUrl" Type="System.String">/HRPositions(HTPositionGuid=guid'#HTPositionGuid')</Property>
</Properties>
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
<Parameters>
<Parameter Name="#HTPositionGuid" Direction="In">
<TypeDescriptor Name="HTPositionGuid" DefaultDisplayName="HTPositionGuid" TypeName="System.Guid" IdentifierName="HTPositionGuid" />
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="DeleteHRPosition" Type="Deleter">
<AccessControlList>
<AccessControlEntry Principal="STS|SecurityTokenService|http://sharepoint.microsoft.com/claims/2009/08/isauthenticated|true|http://www.w3.org/2001/XMLSchema#string">
<Right BdcRight="Edit" />
<Right BdcRight="Execute" />
<Right BdcRight="SelectableInClients" />
<Right BdcRight="SetPermissions" />
</AccessControlEntry>
</AccessControlList>
</MethodInstance>
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
</LobSystem>
</LobSystems>
</Model>
I uploaded the ECT into SharePoint Online BCS and all looks fine;
From there I create an external list and reference the HRPositions ECT, which creates and SP List but is missing the primary key (which is the GUID).
This view shows the proper data;
I am able to add a new item to the list;
And it shows in the read all view;
But I can't edit, delete or view any list item as I get this error for each operation;
I attached to the OData Web Service and could see why the issue is occurring. Turns out the Auto-Generated External Control Types (ECT) within Visual Studio that were reflected off the OData Service have an issue in that for some reason it is formulating the request as /HRPositions(HTPositionGuid=guid'#HTPositionGuid');
It should really only be /HRPositions(guid'#HTPositionGuid');
Can anyone tell me why it's including the HTPositionGuid= within the Parameter list?
I can manually edit the code-generated ECT files for each entity but that seems silly.

Return type in wsimport-generated service stub methods

Here is an example of wsimport-generated service stub method:
#WebMethod(operationName = "GetSynonym", action = "GetSynonymRequest")
#WebResult(name = "Synonyms", targetNamespace = "service.bnsf.com/contact/ContactMessages")
#RequestWrapper(localName = "GetSynonym", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymRequest")
#ResponseWrapper(localName = "GetSynonymResponse", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymResponse")
public Synonyms getSynonym(
#WebParam(name = "RequestContext", targetNamespace = "service.bnsf.com/contact/ContactMessages") RequestContext requestContext,
#WebParam(name = "SynonymId", targetNamespace = "service.bnsf.com/contact/ContactMessages") EntityId synonymId)
throws BusinessFaultMessage, ServiceFaultMessage;
Note that return type is Synonyms class.
Here are the relevant wsdl parts:
<xs:element name="GetSynonymResponse" type="GetSynonymResponse"/>
<xs:complexType name="GetSynonymResponse">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="Synonyms" type="account:Synonyms"/>
</xs:sequence>
</xs:complexType>
...
<wsdl:message name="GetSynonymResponse">
<wsdl:part element="msg:GetSynonymResponse" name="GetSynonymResponse"/>
</wsdl:message>
...
<wsdl:operation name="GetSynonym">
<soap:operation soapAction="GetSynonymRequest" style="document"/>
<wsdl:input name="GetSynonymRequestRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetSynonymRequestResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="BusinessFault">
<soap:fault name="BusinessFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ServiceFault">
<soap:fault name="ServiceFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
By default wsimport has generated service method with Synonyms class as return type rather than GetSynonymResponse class.
My question is whether this is customizable - is there a possibility to make wsimport generate service methods with different signatures, particularly having GetSynonymResponse class as return type?
Thanks in advance,
Valery
Found how this is configurable:
The feature called "WrapperStyle" should be disabled to make generated method return xxxResponse type.
This is accomplishable by providing -b parameter to wsimport like
wsimport" -b binding.xml ContactService.wsdl
with binding.xml contents as
<jaxws:bindings wsdlLocation="ContactService.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<!-- Turn off wrapper style Java method signature generation -->
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

Resources