WSDL for REST adaptor with file attachment in OSB 12C - wsdl

I am using Oracle Service Bus 12C with REST services. I add proxy and business services and select to use WSDL with both.
A typical request WSDL would be:
<?xml version = '1.0' encoding = 'UTF-8'?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
xmlns:tns="http://TargetNamespace.com/LocationServices_getDistricts_request"
targetNamespace="http://TargetNamespace.com/LocationServices_getDistricts_request"
elementFormDefault="qualified" attributeFormDefault="unqualified" nxsd:encoding="US-ASCII">
<xsd:element name="Districts-Proxy-Request-Root-Element">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="db" type="xsd:string" minOccurs="0"/>
<xsd:element name="divisionId" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation>
<xsd:appinfo>NXSDSAMPLE=</xsd:appinfo>
<xsd:appinfo>USEHEADER=false</xsd:appinfo>
</xsd:annotation>
</xsd:schema>
And a response would be:
<?xml version = '1.0' encoding = 'UTF-8'?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://TargetNamespace.com/LocationServices_getDistricts_response"
targetNamespace="http://TargetNamespace.com/LocationServices_getDistricts_response"
xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
elementFormDefault="qualified"
nxsd:version="JSON" nxsd:encoding="US-ASCII">
<xsd:element name="Districts-Proxy-Response-Root-Element">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="statusCode" type="xsd:integer"/>
<xsd:element name="statusDescription" type="xsd:string"/>
<xsd:element name="data" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="districtId" type="xsd:integer" minOccurs="0"/>
<xsd:element name="districtName" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:annotation xmlns="">
<xsd:appinfo>NXSDSAMPLE=</xsd:appinfo>
<xsd:appinfo>USEHEADER=false</xsd:appinfo>
</xsd:annotation>
</xsd:schema>
I know how to handle requests and responses with strings and numbers. My question is, what would the WSDL be if the request had a file attachment? What if the response did?
Related to above, I use XQuery transformations to convert proxy requests to business requests and business responses to proxy responses. A typical response transformation file would be:
xquery version "1.0" encoding "utf-8";
(:: OracleAnnotationVersion "1.0" ::)
declare namespace ns1="http://TargetNamespace.com/LocationServices_getDistricts_response";
(:: import schema at "Districts-Response.xsd" ::)
declare variable $statusCode as xs:integer external;
declare variable $statusDescription as xs:string external;
declare variable $data external;
declare function local:func($statusCode as xs:integer, $statusDescription as xs:string, $data) as element()
(:: schema-element(ns1:Districts-Proxy-Response-Root-Element) ::) {
<ns1:Districts-Proxy-Response-Root-Element
xmlns:ns1="http://TargetNamespace.com/LocationServices_getDistricts_response">
<ns1:statusCode>{fn:data($statusCode)}</ns1:statusCode>
<ns1:statusDescription>{fn:data($statusDescription)}</ns1:statusDescription>
{
if ( $data eq "" ) then (
<ns1:data/>
) else (
for $x in $data/ns1:data
return <ns1:data>
<ns1:districtId>{fn:data($x/ns1:DISTRICTID)}</ns1:districtId>
<ns1:districtName>{fn:data($x/ns1:DISTRICTNAME)}</ns1:districtName>
</ns1:data>
)
}
</ns1:Districts-Proxy-Response-Root-Element>
};
local:func($statusCode, $statusDescription, $data)
What would the XQuery code be to handle attachments?

Related

embedded bindings is not working with jaxb xjc 3.0.0

I am using jaxb 3.0.0 (xjc.sh) to create Java Classes but for some reason, it is NOT honoring embedded bindings. The same thing works fine with jaxb 2.3.1
$ pwd
/c/jaxb-ri-3.0.0/jaxb-ri/bin
$ ./xjc.sh Validation.xsd
It is creating ApiValidator.java where as I expect it to NOT create a new one rather than refer to the one which I put as embedded binding.
a/model/ApiValidator.java
a/model/ObjectFactory.java
a/model/package-info.java
a/model/ValidationAction.java
$ cat Validation.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="a/model"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:tns="a/model" elementFormDefault="qualified">
<xs:attribute name="Description" type="xs:string"/>
<xs:attribute name="Required" type="xs:boolean"/>
<xs:complexType name="ValidationAction">
<xs:sequence>
<xs:element name="api" type="xs:string" tns:Description="Indicates the validation API"/>
<xs:element name="method" type="xs:string" tns:Description="Indicates the validation method"/>
<xs:element name="beanName" type="xs:string" tns:Description="Validation bean name"/>
<xs:element name="validationClass" type="xs:string" tns:Description="Validation class type"/>
<xs:element name="idOwner" type="xs:int" tns:Description="Indicates the owner associated with the validation"/>
<xs:element name="valid" type="xs:boolean" tns:Description="Indicates if validation is valid"/>
<xs:element name="validator" type="tns:ApiValidator" minOccurs="0" maxOccurs="1"
tns:Description="Reference to the API validator"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ApiValidator">
<xs:annotation>
<xs:appinfo>
<jaxb:bindings node="//xs:complexType[#name='ApiValidator']">
<jaxb:class ref="a.ApiValidator"/>
</jaxb:bindings>
</xs:appinfo>
</xs:annotation>
</xs:complexType>
</xs:schema>
Whereas if I do the same with 2.3.1 version,
$ ./xjc.sh Validation.xsd
Java major version: 8
parsing a schema...
compiling a schema...
a\model\ObjectFactory.java
a\model\ValidationAction.java
a\model\package-info.java
I need to use the 3.0.0 version as it generates jakarta namespace. Please suggest why is it not working and how to fix it?
This behavior is same with below-mentioned xml:
$ cat V.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="a/model"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:tns="a/model" elementFormDefault="qualified">
<xs:attribute name="Description" type="xs:string"/>
<xs:attribute name="Required" type="xs:boolean"/>
<xs:complexType name="ValidationAction">
<xs:sequence>
<xs:element name="api" type="xs:string" tns:Description="Indicates the validation API"/>
<xs:element name="method" type="xs:string" tns:Description="Indicates the validation method"/>
<xs:element name="beanName" type="xs:string" tns:Description="Validation bean name"/>
<xs:element name="validationClass" type="xs:string" tns:Description="Validation class type"/>
<xs:element name="idOwner" type="xs:int" tns:Description="Indicates the owner associated with the validation"/>
<xs:element name="valid" type="xs:boolean" tns:Description="Indicates if validation is valid"/>
<xs:element name="validator" type="tns:ApiValidator" minOccurs="0" maxOccurs="1"
tns:Description="Reference to the API validator"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ApiValidator">
<xs:annotation>
<xs:appinfo>
<jaxb:class ref="rd.ApiValidator"/>
</xs:appinfo>
</xs:annotation>
</xs:complexType>
</xs:schema>
As suggested in :
Jaxb implClass specification ignored for rootElement
turned out, I had to change the line from:
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
to
xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" jaxb:version="3.0"

gsoap error : :ClientValidation constraint violation: invalid value in element

Whenever I try to execute a service getContractHdr using online test tools like :
http://www.soapclient.com/soaptest.html
I get the error listed below. The type (of inTENANTREFNO ) is an INTEGER. Even when I place something like 33 in for the field inTENANTREFNO, I still get the error of "type mismatch". Additionally, the message states that the variable inTENANTREFNO is associated with the namespace of am but I do not see why gsoap is making this assignment.
Question
How can I fix this so that I no longer get the error? Is there a way to
configure this so that the namespaces are not used at all? Why am I
getting
it in the first place? I have seen this message here but it is not clear
as to whether or not implementing this would resolve the problem in
this case
Note: All works fine whenever I use the sample generated .xml files. I fill out the fields of course.The service runs and I get data (correct) back. I execute it with "ServerName < testfile.xml"
When I attempt to execute the service from one of the online testing areas (as mentioned above). It does not work citing a "type mismatch".
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns="urn:conmony">
<SOAP-ENV:Body>
<ns:getContractHdr>
<ns:inLogonID></ns:inLogonID>
<ns:inLogonPassword></ns:inLogonPassword>
<ns:inTENANTREFNO>0</ns:inTENANTREFNO>
<ns:incallhost></ns:incallhost>
<ns:incallpid>0</ns:incallpid>
<ns:incallfilename></ns:incallfilename>
<ns:incalllineno>0</ns:incalllineno>
</ns:getContractHdr>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Error message
SOAP-ENV:ClientValidation constraint violation: invalid value in
element 'am:inTENANTREFNO'
Error Message With SOAP Fault
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:am="urn:conmony" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>Validation constraint violation: invalid value in element 'am:inTENANTREFNO'</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ran soapcpp2 -c -n -pdukmony - AND - soapcpp2 -c on a file with the contents below
//gsoap am service name: conmony
//gsoap am service style: document
//gsoap am service encoding: literal
//gsoap am service location: http://99.33.23.2232:8075
//gsoap am schema namespace: urn:conmony
typedef char *xsd__string;
typedef char *xsd__anyURI;
typedef float xsd__float;
typedef long xsd__int;
typedef double xsd__double;
typedef unsigned long long xsd__positiveInteger;
typedef struct am__struct_DBCONTRACTHDR{
xsd__int TENANTREFNO;
xsd__string FirstName;
xsd__string MiddleName;
xsd__string LastName;
xsd__string EMail;
xsd__string CellPhoneNo;
xsd__string HomePhoneNo;
xsd__string AsgnLogonID;
xsd__string WebPicLocation;
xsd__int ReturnCode;
xsd__double KeyID;
xsd__string Message; };
typedef struct am__CONTRACTHDRItems {
struct am__struct_DBCONTRACTHDR *__ptr;
int __size;
int __offset; };
inTENANTREFNO
int am__getContractHdr(
xsd__int inTENANTREFNO,
xsd__string inLogonID,
xsd__string inLogonPassword,
xsd__string incallhost,
xsd__int incallpid,
xsd__string incallfilename,
xsd__int incalllineno,
struct am__CONTRACTHDRItems *DBListing);
The result is the conmony.wsdl file
<definitions xmlns:tns="urn:conmony/conmony.wsdl" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:am="urn:conmony" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:HTTP="http://schemas.xmlsoap.org/wsdl/http/" xmlns:MIME="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:DIME="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/" xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="conmony" targetNamespace="urn:conmony/conmony.wsdl">
<types>
<schema xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:am="urn:conmony" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:conmony" elementFormDefault="qualified" attributeFormDefault="unqualified">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="struct-DBCONTRACTHDR">
<!-- am__struct_DBCONTRACTHDR -->
<sequence>
<element name="TENANTREFNO" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<!-- am__struct_DBCONTRACTHDR::TENANTREFNO -->
<element name="FirstName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::FirstName -->
<element name="MiddleName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::MiddleName -->
<element name="LastName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::LastName -->
<element name="EMail" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::EMail -->
<element name="CellPhoneNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::CellPhoneNo -->
<element name="HomePhoneNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::HomePhoneNo -->
<element name="AsgnLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::AsgnLogonID -->
<element name="WebPicLocation" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::WebPicLocation -->
<element name="ReturnCode" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<!-- am__struct_DBCONTRACTHDR::ReturnCode -->
<element name="KeyID" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<!-- am__struct_DBCONTRACTHDR::KeyID -->
<element name="Message" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__struct_DBCONTRACTHDR::Message -->
</sequence>
</complexType>
<complexType name="CONTRACTHDRItems">
<!-- am__CONTRACTHDRItems -->
<sequence>
<element name="item" type="am:struct-DBCONTRACTHDR" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
</sequence>
</complexType>
<!-- operation request element -->
<element name="getContractHdr">
<complexType>
<sequence>
<element name="inTENANTREFNO" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<!-- am__getContractHdr::inTENANTREFNO -->
<element name="inLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__getContractHdr::inLogonID -->
<element name="inLogonPassword" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__getContractHdr::inLogonPassword -->
<element name="incallhost" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__getContractHdr::incallhost -->
<element name="incallpid" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<!-- am__getContractHdr::incallpid -->
<element name="incallfilename" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__getContractHdr::incallfilename -->
<element name="incalllineno" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<!-- am__getContractHdr::incalllineno -->
</sequence>
</complexType>
</element>
<!-- operation response element -->
<element name="getContractHdrResponse">
<complexType>
<sequence>
<element name="DBListing" type="am:CONTRACTHDRItems" minOccurs="0" maxOccurs="1" nillable="true"/>
<!-- am__getContractHdr::DBListing -->
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="getContractHdrRequest">
<part name="Body" element="am:getContractHdr"/>
<!-- am__getContractHdr::am__getContractHdr -->
</message>
<message name="getContractHdrResponse">
<part name="Body" element="am:getContractHdrResponse"/>
</message>
<portType name="conmonyPortType">
<operation name="getContractHdr">
<documentation>Service definition of function am__getContractHdr</documentation>
<input message="tns:getContractHdrRequest"/>
<output message="tns:getContractHdrResponse"/>
</operation>
</portType>
<binding name="conmony" type="tns:conmonyPortType">
<SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getContractHdr">
<SOAP:operation soapAction=""/>
<input>
<SOAP:body parts="Body" use="literal"/>
</input>
<output>
<SOAP:body parts="Body" use="literal"/>
</output>
</operation>
</binding>
<service name="conmony">
<documentation>gSOAP 2.8.26 generated service definition</documentation>
<port name="conmony" binding="tns:conmony">
<SOAP:address location="http://99.33.23.2232:8075"/>
</port>
</service>
</definitions>
UPDATE:
Changed header portion of file that soapcpp2 is ran upon to:
//gsoap ns service name: conmony Special SOAP SErvices
//gsoap ns service protocol: SOAP
//gsoap ns service style: document
//gsoap ns service encoding: literal
//gsoap ns service namespace: http://99.33.23.2232:8075?conmony.wsdl
//gsoap ns service location: http://99.33.23.2232:8075
//gsoap ns schema namespace: urn:conmony
and still got the same issue
But still getting data when filling out the sample req.xml files generated
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:conmony"><SOAP-ENV:Body><ns:getContractHdrResponse><ns:DBListing><ns:item><ns:TENANTREFNO>8288</ns:TENANTREFNO><ns:FirstName>Test</ns:FirstName><ns:MiddleName></ns:MiddleName><ns:LastName>Last</ns:LastName><ns:EMail>testing#last.com</ns:EMail><ns:CellPhoneNo>210-444-2212</ns:CellPhoneNo><ns:HomePhoneNo>210-444-2212</ns:HomePhoneNo><ns:AsgnLogonID>w10testing</ns:AsgnLogonID><ns:WebPicLocation>stuff</ns:WebPicLocation><ns:ReturnCode>0</ns:ReturnCode><ns:KeyID>0.000000</ns:KeyID><ns:Message> testing ...</ns:Message></ns:item></ns:DBListing></ns:getContractHdrResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
Everything in the ".h file" and ".c" file was changed so that it used "ns" namespace and not the "am" namespace

How to create a Mule Project v3.8 which redirects messages to an external Web Service?

I would like to create a Mule Project, and the idea is to send a SOAP message (for example through soapUI) to this project, and then, redirect the message to an external web service.
I have read the documentation, I can't figure out how to do this simple task.
I would appreciate if someone could help me. I am using Mule v3.8.
Thanks in advance.
You can use the Web Service Consumer connector as explained at MuleSoft Documentation and Video Tutorial
In general,
You can use:
HTTP endpoint (request-response) ->
CXF component (for you proxy service, optional) ->
Web Service Consumer (to call needed service)
If I'm not very clear, I can help you in building this project.
update
I made a simple service and now we have wsdl:
<wsdl:definitions name="SimpleServiceService" targetNamespace="http://simple/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://simple/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema elementFormDefault="unqualified" targetNamespace="http://simple/" version="1.0" xmlns:tns="http://simple/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="doSomething" type="tns:doSomething"/>
<xs:element name="doSomethingResponse" type="tns:doSomethingResponse"/>
<xs:complexType name="doSomething">
<xs:sequence>
<xs:element minOccurs="0" name="Input" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="doSomethingResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="doSomethingResponse">
<wsdl:part element="tns:doSomethingResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="doSomething">
<wsdl:part element="tns:doSomething" name="parameters"/>
</wsdl:message>
<wsdl:portType name="SimpleService">
<wsdl:operation name="doSomething">
<wsdl:input message="tns:doSomething" name="doSomething"/>
<wsdl:output message="tns:doSomethingResponse" name="doSomethingResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SimpleServiceServiceSoapBinding" type="tns:SimpleService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="doSomething">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="doSomething">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="doSomethingResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SimpleServiceService">
<wsdl:port binding="tns:SimpleServiceServiceSoapBinding" name="SimpleServicePort">
<soap:address location="http://exoldy-simple-mule-project.cloudhub.io/service"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Next we need to interact with this service using proxy service implemented on Mule
<mule xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:ws="http://www.mulesoft.org/schema/mule/ws" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd">
<ws:consumer-config name="Web_Service_Consumer" service="SimpleServiceService" port="SimpleServicePort" serviceAddress="http://exoldy-simple-mule-project.cloudhub.io/service" wsdlLocation="http://exoldy-simple-mule-project.cloudhub.io/service?wsdl" doc:name="Web Service Consumer"/>
<http:listener-config name="HTTP_Listener_Configuration1" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="external" initialState="started">
<http:listener config-ref="HTTP_Listener_Configuration1" path="service" doc:name="Receive HTTP request" doc:description="This endpoint receives an HTTP message."/>
<logger message="#[flow.name]" level="INFO" doc:name="Logger"/>
<cxf:proxy-service payload="body" doc:name="CXF" namespace="http://simple/" service="SimpleServiceService" wsdlLocation="http://exoldy-simple-mule-project.cloudhub.io/service?wsdl"/>
<ws:consumer config-ref="Web_Service_Consumer" operation="doSomething" doc:name="Web Service Consumer"/>
</flow>
</mule>
Now everything should work, at least it works for me )

WSO2 API Manager 2.0.0- Receive GET request and send POST to backend

I've created an RESTful API in wso2-am 2.0.0. But I'm face a problem and a would some help.
I have a resource wiht GET http method which receive an url param and I made a SOAP payload to send via POST to backend (backend is soap11).
For this, I used a custom 'in' sequence:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="JSONtoSOAP" trace="disable"
xmlns="http://ws.apache.org/ns/synapse">
<log description="Entrada" level="full" separator=",">
<property expression="get-property('uri.var.cpfCnpj')" name="cpfcnpj" />
<property name="trace"
value="IN LOG" />
</log>
<property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING" />
<property name="messageType" scope="axis2" type="STRING"
value="application/soap+xml" />
<enrich>
<source type="inline">
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body />
</soap:Envelope>
</source>
<target action="replace" type="envelope" />
</enrich>
<payloadFactory media-type="xml">
<format>
<man:QueryCustomerDetailsRequestMessage
xmlns:man="http://www.algartelecom.com.br/SOA/Service/ManageCustomerInformationPortalClientesReqCS">
<man:documentNumber>$1</man:documentNumber>
<man:tagetCRM />
</man:QueryCustomerDetailsRequestMessage>
</format>
<args>
<arg evaluator="xml" expression="get-property('uri.var.cpfCnpj')" />
</args>
</payloadFactory>
<property name="REST_URL_POSTFIX" value="" scope="axis2" />
<header name="Action" scope="default" value="queryCustomerDetails" />
<log description="Saida" level="full" separator=",">
<property name="trace" value="DEBUG LOG" />
</log>
</sequence>
Until here, without problem.
But when I try to call the resource from any restClient (SOAPui for example or wso2-am store) result in Runtime exception, like this:
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code/>
<am:type>Status report</am:type>
<am:message>Runtime Error</am:message>
<am:description/>
</am:fault>
</soap:Body>
</soap:Envelope>
Note that code and description tags are empty, and when I checked the server's log I found:
[2016-09-30 16:53:44,603] INFO - LogMediator STATUS = Executing default 'fault' sequence, ERROR_CODE = null, ERROR_MESSAGE = null
This is the correct way to produces a restful API and call a SOAP backend?
Anybody knows about this issue? (I believe, this feature works on WSO2 ESB).
You can try the following:
In the publisher, set your endpoint type to HTTP/SOAP endpoint
In your sequence don't set the REST_URL_POSTFIX to "", but remove the property completely

Ant xmlvalidate cvc-elt.1.a: Cannot find the declaration of element 'topic'

I've made an xsd that represent a restriction of docbook topic. Here is a basic xml example of that. The restriction should be valid within docbook namespace.
<?xml version="1.0" encoding="UTF-8"?>
<topic
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://docbook.org/ns/docbook"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xml:id="TT_LONDON002-003CONTEN" role="imprint">
<title>title</title>
</topic>
The top of the xsd restriction looks like the following. In oxygen the xml validates nicely.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://docbook.org/ns/docbook"
xmlns:docbook="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink">
<xs:import namespace="http://www.w3.org/1999/xlink"
schemaLocation="xlink.xsd"/>
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="xml.xsd"/>
<xs:element name="topic">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0"
maxOccurs="unbounded"
ref="docbook:title"/>
<xs:choice>
<xs:element ref="docbook:mediaobject"/>
<xs:element minOccurs="0"
maxOccurs="unbounded"
ref="docbook:para"/>
</xs:choice>
</xs:sequence>
However I'm trying to write the following ant script to validate a whole directory.
I get error output: cvc-elt.1.a: Cannot find the declaration of element 'topic'.
I've been searching online but can't find the solution.
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="dist" name="ANTProject">
<target name="dist">
<property name="xmlDir" value="../xml/"/>
<pathconvert dirsep="/" property="xsd.file">
<path>
<pathelement location="../xsd/topic.xsd"/>
</path>
</pathconvert>
<xmlvalidate lenient="true"
failonerror="false"
warn="true"
classname="org.apache.xerces.parsers.SAXParser"
classpath="../../lib/xercesImpl.jar">
<fileset dir="${xmlDir}" includes="**/*.xml"/>
<attribute name="http://xml.org/sax/features/validation"
value="true"/>
<attribute name="http://xml.org/sax/features/namespaces"
value="true"/>
<attribute name="http://apache.org/xml/features/validation/schema"
value="true"/>
<property name="http://apache.org/xml/properties/schema/external-schemaLocation"
value="${xsd.file}"/>
</xmlvalidate>
</target>
</project>
Any ideas?
Thanks
Conteh

Resources