Search code examples
jaxbmuleanypoint-studio

Mule - Object To XML with JAXB


I'm using Mule 3.8 to get some JSON data which I turn to Java and then to XML files. Everything works until my File endpoint where it all ends in disaster:

Message               : Could not find a transformer to transform
"SimpleDataType{type=java.io.ByteArrayOutputStream, mimeType='text/xml',
encoding='null'}" to "SimpleDataType{type=java.io.InputStream,
mimeType='*/*', encoding='null'}".

Payload               : <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Header ....></Header>
Payload Type          : java.io.ByteArrayOutputStream

..and all i get is dozens of empty .xml files..

I guess somehow I have to tranform my payload to something the file component could actually take and turn into a file, or is this something I have to do manually in a Java component?

Regards

EDIT - forgot the config

    <flow name="Product">
    <file:inbound-endpoint path="C:\temp\fileIn" responseTimeout="10000" doc:name="File"/>
    <logger message="#[payload != null]" level="INFO" doc:name="Logger"/>
    <json:json-to-object-transformer returnClass="java.util.List" encoding="UTF-8" doc:name="JSON to ObjectList"/>
    <collection-splitter doc:name="Collection Splitter"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <custom-transformer returnClass="se.131.Product.Header" encoding="UTF-8" class="se.131.Tranformer.Map2Product" doc:name="MapToProduct" mimeType="application/xml"/>
    <mulexml:jaxb-object-to-xml-transformer name="myMarshaller" jaxbContext-ref="JAXB_Context" doc:name="JAXB Object to XML" encoding="UTF-8" mimeType="application/xml"/>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <file:outbound-endpoint path="C:\temp\fileOut" responseTimeout="10000" doc:name="File" outputPattern="Product-#[function:dateStamp].xml" mimeType="text/xml"/>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <logger message="Oh no!!" level="INFO" doc:name="Logger"/>
    </catch-exception-strategy>
</flow>

Solution

  • Try with placing <object-to-string-transformer> just before File outbound endpoint and check ... The File endpoint expect String format of the payload to create the file