простой языковой тест apache верблюда на нулевом обмене в Bluepring XML не работает - PullRequest
0 голосов
/ 20 октября 2019

Я использую Apache Camel 2.17 и использую простой язык для перехвата нулевого обмена. Это не работает, и я попробовал несколько подходов форматирования, но это не ловит ноль. Я считаю, что это формат / синтаксис того, как я его использую. Прошу сообщить, где я иду не так. спасибо!

<process id="_process18" ref="csvMarshallerProcessor"/>
<process id="toReOrgCSV" ref="reOrgCSVData"/>
<choice id="_choice13">
    <when id="_when13">
        <simple>"${body}" == null</simple>
        <log id="_log22" message="body is NULL, do not send NULL body!"/>
        <stop id="_stop7"/>
    </when>
    <otherwise id="_otherwise1">

Я пытался

<simple>"${body} == null"</simple>
<simple>"${body}" == null</simple>
<simple>${body} == null</simple>
<simple>${body} == 'null'</simple>

Я установил обмен на null в предыдущем процессе, ЕСЛИ данные отфильтрованы и недопустимы для отправки. Я хотел бы просто использовать Camel Spring XML.

???

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Не устанавливайте exchange как ноль, так как это недопустимо, установите тело сообщения равным нулю или пустой строке и т. Д.

exchange.getIn().setBody(null);

И затем вы можете использовать простой для проверки его ноль,

${body} == null

или если вы установите его как пустой текст

${body} == ''
0 голосов
/ 21 октября 2019

спасибо, Клаус!

это то, чем я закончил, ..

...
    line.append(System.lineSeparator());

    if ( lookup ) {
        if ( validate(fleetName, line.toString()) ) {
            baos.write(line.toString().getBytes());
        }
    } else {
            baos.write(line.toString().getBytes());
    }
 }
    List<String> serviceRecords = new ArrayList<String>(Arrays.asList(baos.toString().split(System.lineSeparator())));

    if ( serviceRecords.size() > 1 ) {  //has more than a header
        byte[] ba = baos.toByteArray();
        exchange.getIn().setBody(ba);
    } else {
        exchange.getIn().setBody(null);  //empty message, only header, no data
    }

Camel Context
    <process id="_process18" ref="csvMarshallerProcessor"/>
    <choice id="_choice13">
        <when id="_when13">
            <simple trim="true">"${body}" == "" || ${body} == null</simple>
            <log id="_log22" message="body is NULL, do not send NULL body!"/>
            <stop id="_stop7"/>
        </when>
        <otherwise id="_otherwise1">
            <process id="toReOrgCSV" ref="reOrgCSVData"/>
            <to id="_to7" uri="{{DDFEndpoint}}?fileName={{APMLoaderPath}}/${header.aircraftMetadata.shipNumber}-${header.enginePosition}_${header.messageDateTime}.csv"/>
            <log id="_log23" message="Sending data packet: ${header.aircraftMetadata.outputPath}/${header.aircraftMetadata.shipNumber}-${header.enginePosition}_${header.messageDateTime}.csv"/>
        </otherwise>
    </choice>
</aggregate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...