2014-02-06 1 views
0

мне нужно отправить и получить объект Java к пользовательскому разъему, который ожидает:Как отправить и приобрести объект из соединителя в Mule Studio?

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

Я пытаюсь отправить ему экземпляр класса FakeData. Я могу проверить, что это работает, когда я посылаю объект, используя класс 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); 
    } 
} 

Я не могу понять, как отправить объект FakeData и получить другой объект в обычном Mule потоком с использованием Мул Studio.

Может кто-нибудь помочь мне?

------- -------- Update

Я вызова потока, используя конец 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 
+0

Вы называете поток «Do_Something» из другого потока? Вы должны иметь поток где-то, который начинается с входящей конечной точки (например, http, jms, file), которая затем устанавливает полезную нагрузку как объект FakeData перед вызовом вашего соединителя. – neildo

ответ

1

В вашем потоке, вы можете что-то вроде:

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

EDIT: вы изменили свой вопрос и добавили конечную точку HTTP. Ошибка, которую вы получаете, вероятно, связана с тем, что конечная точка входящего HTTP равна request-response, и вы не преобразовали org.mule.example.FakeData во что-то, чем потоковое через HTTP.

+0

Привет, Дэвид. Я получаю следующую ошибку, когда я пробую ваше предложение: «Выполнение выражения« новый FakeData() »не выполнено. (Org.mule.api.expression.ExpressionRuntimeException). Полезная нагрузка сообщения имеет тип: String». – TERACytE

+0

Stange. Является ли 'FakeData' объявленным в пакете? –

+0

Подождите, пока вы сделаете это на самом деле 'org.mule.example.FakeData'. –