@Override public boolean accept(String from, String recipient) { if (autoAccept) { return true; } StringResult result = new StringResult(); marshaller.marshal(createAcceptRequest(from, recipient), result); Message response = getEndpointAdapter().handleMessage(new DefaultMessage(result.toString())); if (response == null || response.getPayload() == null) { throw new CitrusRuntimeException( "Did not receive accept response. Missing accept response because autoAccept is disabled."); } AcceptResponse acceptResponse = null; if (response.getPayload() instanceof AcceptResponse) { acceptResponse = (AcceptResponse) response.getPayload(); } else if (response.getPayload() instanceof String) { acceptResponse = (AcceptResponse) marshaller.unmarshal(response.getPayload(Source.class)); } if (acceptResponse == null) { throw new CitrusRuntimeException("Unable to read accept response from payload: " + response); } return acceptResponse.isAccept(); }
@Override public void deliver(String from, String recipient, InputStream data) { try { MimeMailMessage mimeMailMessage = new MimeMailMessage(new MimeMessage(getSession(), data)); Message request = messageConverter.convertInbound(mimeMailMessage, getEndpointConfiguration()); Message response = invokeEndpointAdapter(request); if (response != null && response.getPayload() != null) { MailResponse mailResponse = null; if (response.getPayload() instanceof MailResponse) { mailResponse = (MailResponse) response.getPayload(); } else if (response.getPayload() instanceof String) { mailResponse = (MailResponse) marshaller.unmarshal(response.getPayload(Source.class)); } if (mailResponse != null && mailResponse.getCode() != MailResponse.OK_CODE) { throw new RejectException(mailResponse.getCode(), mailResponse.getMessage()); } } } catch (MessagingException e) { throw new CitrusRuntimeException(e); } }