public void onAcceptDeliverSm(DeliverSm deliverSm) throws ProcessRequestException { if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass())) { try { DeliveryReceipt delReceipt = deliverSm.getShortMessageAsDeliveryReceipt(); StatusReportMessage statusReportMessage = new StatusReportMessage( delReceipt.getId(), deliverSm.getDestAddress(), deliverSm.getSourceAddr(), delReceipt.getText(), delReceipt.getSubmitDate(), delReceipt.getDoneDate()); switch (delReceipt.getFinalStatus()) { case DELIVRD: statusReportMessage.setStatus(DeliveryStatuses.DELIVERED); break; case REJECTD: case EXPIRED: case UNDELIV: statusReportMessage.setStatus(DeliveryStatuses.ABORTED); break; default: statusReportMessage.setStatus(DeliveryStatuses.UNKNOWN); } statusReportMessage.setGatewayId(getGatewayId()); Service.getInstance() .getNotifyQueueManager() .getNotifyQueue() .add( new InboundMessageNotification( getMyself(), MessageTypes.STATUSREPORT, statusReportMessage)); } catch (InvalidDeliveryReceiptException e) { Logger.getInstance().logError("Failed getting delivery receipt.", e, getGatewayId()); } } else { InboundMessage msg = new InboundMessage( new java.util.Date(), deliverSm.getSourceAddr(), new String(deliverSm.getShortMessage()), 0, null); msg.setGatewayId(JSMPPGateway.this.getGatewayId()); if (Alphabet.ALPHA_DEFAULT.value() == deliverSm.getDataCoding()) { msg.setEncoding(MessageEncodings.ENC7BIT); } else if (Alphabet.ALPHA_8_BIT.value() == deliverSm.getDataCoding()) { msg.setEncoding(MessageEncodings.ENC8BIT); } else if (Alphabet.ALPHA_UCS2.value() == deliverSm.getDataCoding()) { msg.setEncoding(MessageEncodings.ENCUCS2); } else { msg.setEncoding(MessageEncodings.ENCCUSTOM); } incInboundMessageCount(); Service.getInstance() .getNotifyQueueManager() .getNotifyQueue() .add(new InboundMessageNotification(getMyself(), MessageTypes.INBOUND, msg)); } }