Muka
Muka

Reputation: 1200

Java Transform: Return NullPayload

I don't know what occurs. Java Transform return a NullPayload.

XML CODE:

<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="teste-tranformationFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/trans" doc:name="HTTP"/>
    <custom-transformer class="TransformTest" doc:name="Java"/>
    <logger message="SUPER TESTE #[payload]" level="INFO" doc:name="Logger"/>
</flow>

JAVA CODE:

public class TransformTest extends AbstractMessageTransformer {

  @Override
  public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {

    String s = "";
    try {
        s = ((ParameterMap)message.getInboundProperty("http.query.params")).get("id").toString();   

        message.setOutboundProperty("id", s + "***");           

    } catch (Exception e) {
        e.printStackTrace();
    } 
    return message;
  }

}

Logger print :

SUPER TESTE null

Is Java Transform implementation correct?

Upvotes: 0

Views: 304

Answers (1)

DavoCoder
DavoCoder

Reputation: 872

You are printing the payload #[payload], not the "id" outbound property set in the transformer. #[message.outboundProperties.propertyName] --> #[message.outboundProperties.id]

If you want to set an outbound property, you don’t need a Custom Java Transformer, you can do it with a Property Transformer, take a look to the documentation:

https://docs.mulesoft.com/mule-user-guide/v/3.7/property-transformer-reference

For the Mule Message structure understanding:

https://docs.mulesoft.com/mule-fundamentals/v/3.7/mule-message-structure

For doing transformations (Dataweave):

https://docs.mulesoft.com/mule-user-guide/v/3.7/using-dataweave-in-studio

Upvotes: 1

Related Questions