Могу ли я запросить MAP в соединителе MuleESB?

Я пишу пользовательский коннектор, используя Джерси, и мне нужно создать @Processor, который принимает MultivalueMap в качестве параметра и передает его моему запросу Джерси.

Я ожидаю, что мой @Connector будет иметь

@Processor
public String query(MultiValuedMap<String,String> params) {
    ...
    return webResource.queryParams(params).get(String.class);
}

Затем xml.sample требуется объявление примера потока, но я не могу найти, как объявить параметр

<!-- BEGIN_INCLUDE(myconnector:qry) -->
    <myconnector:qry params=" ??? " />
<!-- END_INCLUDE(myconnector:qry) -->

а для mule-config.xml нужен реальный параметр!

<flow name="testQuery">
    <myconnector:qry params=" ??? " />
</flow>

В качестве альтернативы я мог бы просто вставить строку в запрос Джерси, например

@Processor
public String query(String paramString) {
    return webResource. ??? .get(String.class);
}

но как добавить эту строку ("?age=45&language=en") к URL-адресу запроса?


person TecOpen    schedule 15.05.2014    source источник


Ответы (2)


Взгляните на XSD, сгенерированный DevKit: он подскажет вам правильный синтаксис XML для передачи значений карты в процессор сообщений.

person David Dossot    schedule 16.05.2014

После долгих поисков наткнулся на ответ:

@Processor
Public void qry(List<String> param1,Map<String,String> param2) {
    ...
}

может быть объявлен как

<!-- BEGIN_INCLUDE(myconnector:qry) -->
    <myconnector:qry>
        <myconnector:param1 ref="" />
        <myconnector:param2 ref="" />
    </myconnector:qry>
<!-- END_INCLUDE(myconnector:qry) -->
person TecOpen    schedule 18.05.2014
comment
Зачем много искать? Взгляд на XSD сказал бы вам об этом, знакомя вас с выводами DevKit. - person David Dossot; 18.05.2014
comment
Спасибо, Дэвид. Да, он показывает ожидаемый формат, но не намекает, а открыто декларирует его, очень полно! К сожалению, я не видел его в то время. Думаю, я слишком углубился в проблему. - person TecOpen; 20.05.2014