Search in sources :

Example 11 with SubmitMultiResult

use of org.jsmpp.bean.SubmitMultiResult in project camel by apache.

the class SmppSubmitMultiCommandTest method execute.

@Test
public void execute() throws Exception {
    Exchange exchange = new DefaultExchange(new DefaultCamelContext(), ExchangePattern.InOut);
    exchange.getIn().setHeader(SmppConstants.COMMAND, "SubmitMulti");
    exchange.getIn().setHeader(SmppConstants.ID, "1");
    exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_TON, TypeOfNumber.NATIONAL.value());
    exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR_NPI, NumberingPlanIndicator.NATIONAL.value());
    exchange.getIn().setHeader(SmppConstants.SOURCE_ADDR, "1818");
    exchange.getIn().setHeader(SmppConstants.DEST_ADDR_TON, TypeOfNumber.INTERNATIONAL.value());
    exchange.getIn().setHeader(SmppConstants.DEST_ADDR_NPI, NumberingPlanIndicator.INTERNET.value());
    exchange.getIn().setHeader(SmppConstants.DEST_ADDR, Arrays.asList("1919"));
    exchange.getIn().setHeader(SmppConstants.SCHEDULE_DELIVERY_TIME, new Date(1111111));
    exchange.getIn().setHeader(SmppConstants.VALIDITY_PERIOD, new Date(2222222));
    exchange.getIn().setHeader(SmppConstants.PROTOCOL_ID, (byte) 1);
    exchange.getIn().setHeader(SmppConstants.PRIORITY_FLAG, (byte) 2);
    exchange.getIn().setHeader(SmppConstants.REGISTERED_DELIVERY, new RegisteredDelivery(SMSCDeliveryReceipt.FAILURE).value());
    exchange.getIn().setHeader(SmppConstants.REPLACE_IF_PRESENT_FLAG, ReplaceIfPresentFlag.REPLACE.value());
    exchange.getIn().setBody("short message body");
    expect(session.submitMultiple(eq("CMT"), eq(TypeOfNumber.NATIONAL), eq(NumberingPlanIndicator.NATIONAL), eq("1818"), aryEq(new Address[] { new Address(TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.INTERNET, "1919") }), eq(new ESMClass()), eq((byte) 1), eq((byte) 2), eq("-300101001831100+"), eq("-300101003702200+"), eq(new RegisteredDelivery(SMSCDeliveryReceipt.FAILURE)), eq(ReplaceIfPresentFlag.REPLACE), eq(DataCodings.newInstance((byte) 0)), eq((byte) 0), aryEq("short message body".getBytes()))).andReturn(new SubmitMultiResult("1"));
    replay(session);
    command.execute(exchange);
    verify(session);
    assertEquals(Arrays.asList("1"), exchange.getOut().getHeader(SmppConstants.ID));
    assertEquals(1, exchange.getOut().getHeader(SmppConstants.SENT_MESSAGE_COUNT));
    assertNull(exchange.getOut().getHeader(SmppConstants.ERROR));
}
Also used : Exchange(org.apache.camel.Exchange) DefaultExchange(org.apache.camel.impl.DefaultExchange) DefaultExchange(org.apache.camel.impl.DefaultExchange) Address(org.jsmpp.bean.Address) SubmitMultiResult(org.jsmpp.bean.SubmitMultiResult) RegisteredDelivery(org.jsmpp.bean.RegisteredDelivery) ESMClass(org.jsmpp.bean.ESMClass) DefaultCamelContext(org.apache.camel.impl.DefaultCamelContext) Date(java.util.Date) Test(org.junit.Test)

Example 12 with SubmitMultiResult

use of org.jsmpp.bean.SubmitMultiResult in project camel by apache.

the class SmppSubmitMultiCommand method execute.

@Override
public void execute(Exchange exchange) throws SmppException {
    SubmitMulti[] submitMulties = createSubmitMulti(exchange);
    List<SubmitMultiResult> results = new ArrayList<SubmitMultiResult>(submitMulties.length);
    for (SubmitMulti submitMulti : submitMulties) {
        SubmitMultiResult result;
        if (log.isDebugEnabled()) {
            log.debug("Sending multiple short messages for exchange id '{}'...", exchange.getExchangeId());
        }
        try {
            result = session.submitMultiple(submitMulti.getServiceType(), TypeOfNumber.valueOf(submitMulti.getSourceAddrTon()), NumberingPlanIndicator.valueOf(submitMulti.getSourceAddrNpi()), submitMulti.getSourceAddr(), (Address[]) submitMulti.getDestAddresses(), new ESMClass(submitMulti.getEsmClass()), submitMulti.getProtocolId(), submitMulti.getPriorityFlag(), submitMulti.getScheduleDeliveryTime(), submitMulti.getValidityPeriod(), new RegisteredDelivery(submitMulti.getRegisteredDelivery()), new ReplaceIfPresentFlag(submitMulti.getReplaceIfPresentFlag()), DataCodings.newInstance(submitMulti.getDataCoding()), submitMulti.getSmDefaultMsgId(), submitMulti.getShortMessage(), submitMulti.getOptionalParameters());
            results.add(result);
        } catch (Exception e) {
            throw new SmppException(e);
        }
    }
    if (log.isDebugEnabled()) {
        log.debug("Sent multiple short messages for exchange id '{}' and received results '{}'", exchange.getExchangeId(), results);
    }
    List<String> messageIDs = new ArrayList<String>(results.size());
    // {messageID : [{destAddr : address, error : errorCode}]}
    Map<String, List<Map<String, Object>>> errors = new HashMap<String, List<Map<String, Object>>>();
    for (SubmitMultiResult result : results) {
        UnsuccessDelivery[] deliveries = result.getUnsuccessDeliveries();
        if (deliveries != null) {
            List<Map<String, Object>> undelivered = new ArrayList<Map<String, Object>>();
            for (UnsuccessDelivery delivery : deliveries) {
                Map<String, Object> error = new HashMap<String, Object>();
                error.put(SmppConstants.DEST_ADDR, delivery.getDestinationAddress().getAddress());
                error.put(SmppConstants.ERROR, delivery.getErrorStatusCode());
                undelivered.add(error);
            }
            if (!undelivered.isEmpty()) {
                errors.put(result.getMessageId(), undelivered);
            }
        }
        messageIDs.add(result.getMessageId());
    }
    Message message = getResponseMessage(exchange);
    message.setHeader(SmppConstants.ID, messageIDs);
    message.setHeader(SmppConstants.SENT_MESSAGE_COUNT, messageIDs.size());
    if (!errors.isEmpty()) {
        message.setHeader(SmppConstants.ERROR, errors);
    }
}
Also used : ReplaceIfPresentFlag(org.jsmpp.bean.ReplaceIfPresentFlag) Message(org.apache.camel.Message) HashMap(java.util.HashMap) ESMClass(org.jsmpp.bean.ESMClass) ArrayList(java.util.ArrayList) SubmitMultiResult(org.jsmpp.bean.SubmitMultiResult) RegisteredDelivery(org.jsmpp.bean.RegisteredDelivery) UnsuccessDelivery(org.jsmpp.bean.UnsuccessDelivery) ArrayList(java.util.ArrayList) List(java.util.List) SubmitMulti(org.jsmpp.bean.SubmitMulti) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ESMClass (org.jsmpp.bean.ESMClass)12 RegisteredDelivery (org.jsmpp.bean.RegisteredDelivery)12 SubmitMultiResult (org.jsmpp.bean.SubmitMultiResult)12 Exchange (org.apache.camel.Exchange)11 DefaultCamelContext (org.apache.camel.impl.DefaultCamelContext)11 DefaultExchange (org.apache.camel.impl.DefaultExchange)11 Address (org.jsmpp.bean.Address)11 Test (org.junit.Test)11 Date (java.util.Date)4 LinkedHashMap (java.util.LinkedHashMap)2 UnsuccessDelivery (org.jsmpp.bean.UnsuccessDelivery)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Message (org.apache.camel.Message)1 EasyMock.isNull (org.easymock.EasyMock.isNull)1 ReplaceIfPresentFlag (org.jsmpp.bean.ReplaceIfPresentFlag)1 SubmitMulti (org.jsmpp.bean.SubmitMulti)1 Assert.assertNotNull (org.junit.Assert.assertNotNull)1