Camel -> NullPointerException, когда я пытаюсь получить значение переменной из перенесенного исключения - PullRequest
0 голосов
/ 02 мая 2019

Я создаю свое собственное исключение, в котором будут храниться несколько полей (в примерах только одно поле). В верблюде я ловлю исключение Java и передаю его оболочке. В методе я вынимаю то, что мне нужно, и сохраняю это в Exchange как myException. В другом месте верблюд ловит это исключение и передает его методу, который должен получить определенное поле. Проблема в том, что myException.getMessage () всегда генерирует исключение NullPointerException. Если я сохраню Optional.ofNullable (myException) .map (Throwables :: getStackTraceAsString), он вернет то, что перешло в super (message), но мне нужно определенное поле.

public class MyException extends Exception {
       private String message;
       public MyException(String message){
           super(message);
           this.message = message + "something";
       }
       public String getMessage() {
           return message;
       }
}

<doCatch>
   <exception>java.lang.someException</exception>
   <process ref="wrapper"/>
</doCatch>

public class Wrapper implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
       String something = StringUtils.substringBetween(exception.toString(), "(", ")");
       MyException myException = new MyException(something);
       exchange.setException(myException);
    }
}

<doCatch>
   <exception>com.exception.MyException</exception>
   <to id="createMessageDTO" uri="bean:messageDTOBuilder?method=newMessage"/>
       ...
</doCatch>

public MessageDTO newMessage(@ExchangeException MyException myException) {
       return MessageDTO
           .builder()
           .message(Optional.ofNullable(myException.getMessage()))
       .build();
}

Я подозреваю, что тег хранит только то, что имеет класс Exception, а остальное усекается. Может быть, есть какой-то способ исправить это, и мое отсутствие знаний блокирует меня. Я признаю, что я только начинаю свое приключение с Верблюдом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...