2016-06-08 3 views
0

Мой Обмен тела является HashMapACCESSING объекта от Apache Camel

public void processHeathData(@Body HashMap<String, Object> body) 
{ 

    CompleteTxnDetail competeTxnDetail = getCompeteTxn(); 
    competeTxnDetail.setTxnDataMap(txnDataMap); 
    body.put("NOW", competeTxnDetail); 
} 

Я поставил объект на карте

public class CompleteTxnDetail { 
public float getTotalFaliurePercentage() 
{ 
    Set<String> keySet = txnDataMap.keySet(); 
    Integer totaltxn = getTotalTxn(); 
    if(totaltxn==0) 
     return 0; 

    Integer faliure=0; 
    for(String key : keySet) 
    { 
     TransactionStatusDetailDTO dto = txnDataMap.get(key); 
     faliure = faliure + dto.getFailedTxn(); 
    } 

    float faliurePercentage = faliure*100f/totaltxn; 
    return faliurePercentage;  
} 
} 

Теперь я доступ к этому в том, когда, но не может получить доступ к

<choice> 
    <camel:when> 
     <simple>${body.NOW.getTotalFaliurePercentage} &lt; 2</simple> 
     <bean ref="test" method="printMessage('One')" /> 
    </camel:when> 
    <camel:otherwise> 
      <bean ref="test" method="printMessage('two')" /> 
    </camel:otherwise> 
+0

Просьба уточнить ваш вопрос. Вы получаете сообщения об ошибках? – Alex

+0

Я получаю gettin не могу вызвать метод на NULL, я также пробовал $ {body [NOW] .getTotalFaliurePercantage $ lt; 2} –

+0

Вы помещаете MAP на кузов обмена и пытаетесь получить к нему доступ из простого заявления? Я не уверен, что работает. Для этого я обычно использую процессоры. –

ответ

0

Попробуйте с

<simple>${body.get('NOW').getTotalFaliurePercentage()} &lt; 2</simple>