Использование setProperty () в Apache Camel с необязательным значением - PullRequest
0 голосов
/ 30 октября 2019

Это часть моего верблюжьего маршрута. Я использую действие POST в Postman и, указав в теле «filePath» и «mailTo», отправляю электронное письмо всем, кого я перечисляю в mailTo. Как бы я поступил, если бы хотел указать mailTo в качестве необязательного параметра, т.е. пользователю не нужно вводить это значение?

Я надеялся, что Camel будет настолько умен, чтобы справиться с этим исключением, но еслиТеперь я полностью удаляю значение в mailTo в теле, перед отправкой запроса POST он показывает исключение PathNotFoundException. В то время как я хочу, чтобы он мог работать без поля mailTo.

{"filePath": "what", "mailTo": ""} <= это запускает программу <br>{"filePath":«что угодно»} <= это не запускает программу </p>

Есть ли такая функция, которая может установить необязательное свойство?

rest(whatever)
    .bindingMode(RestBindingMode.json)
    .produces(MediaType.APPLICATION_JSON_UTF8_VALUE)
    .consumes(MediaType.APPLICATION_JSON_UTF8_VALUE)
    .post("/send-email")
        .outType(Email.class)
        .route()
            .setProperty(FILE_PATH, jsonpath("$.filePath"))
            .setProperty(RECIPIENT_LIST, jsonpath("$.mailTo")) // should be optional
            .to(direct(ENTRY_ROUTE))
.endRest();

1 Ответ

0 голосов
/ 30 октября 2019

Для этого вы можете установить параметр suppressExceptions компонента jsonpath равным true

.route()
    .setProperty(FILE_PATH, jsonpath("$.filePath"))
    .setProperty(RECIPIENT_LIST, jsonpath("$.mailTo", true, String.class))
...