@Override public void process(AGateway gateway, OutboundMessage msg) { log.info(String.format("[%s] Outbound notification for (%s) with message (%s) received from gateway (%s)", msg.getMessageStatus().toString(), msg.getRecipient(), msg.getText(), gateway.getGatewayId())); DateTime sentTime = newDateTime(msg.getDate()); if (sendingFailed(msg)) { if (msg.getRetryCount() >= maxRetries) { raiseFailureEvent(msg, sentTime); } else if (msg.getRetryCount() < maxRetries) { smsAuditService.log(new SmsRecord(OUTBOUND, msg.getRecipient(), msg.getText(), sentTime, KEEPTRYING, msg.getRefNo())); } } else { smsAuditService.log(new SmsRecord(SMSType.OUTBOUND, msg.getRecipient(), msg.getText(), sentTime, DeliveryStatus.DISPATCHED, msg.getRefNo())); } }