如何从Mule Studio中的连接器发送和获取对象?

时间:2014-02-06 00:32:00

标签: java mule mule-studio

我需要将Java对象发送并获取到期望的自定义​​连接器:

// inside MyConnector.java
@Processor
public Object doSomething(@Default(#[payload]) final Object data) {...}

我正在尝试向它发送一个FakeData类的实例。当我使用Mule的FunctionalTestCase类发送对象时,我可以验证这是否有效:

<!-- inside mule-config.xml -->
<flow name="Do_Something">
    <myconnector:do-Something document-ref="#[payload]"/>
</flow>


public class FlowBuilder extends FunctionalTestCase {

    public void run() {
        Object payload = new FakeData();
        Flow flow = lookupFlowConstruct("Do_Something");
        MuleEvent event = FunctionalTestCase.getTestEvent(payload);
        MuleEvent responseEvent= flow.process(event);
    }
}

我无法弄清楚如何使用Mule Studio发送FakeData对象并在常规Mule流中接收另一个对象。

有人能帮助我吗?

-------更新--------

我正在使用HTTP前端调用流程。流程如下:

[HTTP] -> [Java "My Transformer"] -> [Custom Connector]

我尝试在连接器前面添加一个变压器:

public class MyTransformer extends AbstractMessageTransformer {

    @Override
    public Object transformMessage(MuleMessage message, String outputEncoding)
            throws TransformerException {
        return new fakeData();
    }
}

现在我收到了这个回复:

Could not find a transformer to transform  
"SimpleDataType{type=org.mule.example.FakeData, mimeType='*/*'}" to 
"SimpleDataType{type=org.mule.api.transport.OutputHandler, mimeType='*/*'}". 
(org.mule.api.transformer.TransformerException) (org.mule.api.transformer.TransformerException). Message payload is of type: FakeData

1 个答案:

答案 0 :(得分:1)

在您的流程中,您可以执行以下操作:

<set-payload value="#[new org.mule.example.FakeData()]" />

编辑:您已修改了问题并添加了HTTP入站端点。您获得的错误可能是因为您的入站HTTP端点为request-response,并且您尚未将org.mule.example.FakeData转换为通过HTTP流式传输的内容。