2014-03-11 4 views
1

Щас код разъема выглядит следующим образом:Как передать Java HashMap в пользовательский соединитель Mule?

// myConnector class 
/** 
* Process item 
* 
* {@sample.xml ../../../doc/my-connector.xml.sample myConnector:process} 
* 
* @param binary 
*   the item to process 
* @param stuff 
*   key value pairs for processing 
* 
* @return the status as a string 
* 
* @throws NullPointerException 
*   when one of the parameters are null 
*/ 
@Processor 
public String process ( @Payload final byte[] binary, 
         final HashMap<String,String> stuff) 
     throws NullPointerException {...} 


// myConnector.sample 
<!-- BEGIN_INCLUDE(myConnector:process) --> 
    <myConnector:process> 
      <myConnector:stuff> 
       <item1>data1</item1> 
       <item2>data2</item2> 
      </myConnector:stuff> 
    </myConnector:process> 
<!-- END_INCLUDE(myConnector:process) —> 

У меня есть HashMap хранится в заголовке сеанса внутри моего Mule потока (# [заголовок: сессия: myHashMap]), но я не могу понять, как чтобы отправить его на разъем.

--- обновление ---

Если изменить образец соединителя и соединительный элемент, чтобы соответствовать я получаю ошибку, когда я построил разъем.

// myConnector.sample 
<!-- BEGIN_INCLUDE(myConnector:process) --> 
    <myConnector:process stuff="#[stuff]"/> 
<!-- END_INCLUDE(myConnector:process) —> 

// my mule flow 
<flow> 
    <myConnector:process stuff="#[sessionVars.myHashMap]"/> 
</flow> 

// the error 
[ERROR] Error validating example: cvc-complex-type.3.2.2: Attribute 'stuff' is not allowed to appear in element 'myConnector:process'. Failing example: <myConnector:process stuff="#[stuff]"/> 
[ERROR] error on execute: An error ocurred while the DevKit was generating Java code. Check the logs for further details. 
+0

Пожалуйста, покажите точные аннотации на 'process' –

+0

Я обновил оригинальный пост с интерфейсом и комментариями метода. Это то, о чем вы просили? – TERACytE

+0

У вас есть параметр '@ Payload', всегда предоставляйте всю информацию, пожалуйста. –

ответ

2

насчет:

<myConnector:process> 
    <myConnector:stuff ref="#[sessionVars['myHashMap']]" /> 
</myConnector:process> 
+0

Если я изменил .sample и изменил элемент соединителя, как вы предложили, я получаю следующую ошибку: «[ERROR] Пример проверки ошибки: cvc-complex-type.3.2.2: атрибут« материал »не может появляться в элемент 'myConnector: process'. Неудачный пример: Ошибка при выполнении: [ERROR]: ошибка, возникающая при генерации Java-кода DevKit. Подробнее просмотрите журналы. " – TERACytE

+0

Просьба показать точные аннотации к' process'. –

+0

Пожалуйста, уточните мой обновленный ответ. –

Смежные вопросы