Example usage for org.springframework.integration.xmpp.inbound ChatMessageListeningEndpoint setPayloadExpression

List of usage examples for org.springframework.integration.xmpp.inbound ChatMessageListeningEndpoint setPayloadExpression

Introduction

In this page you can find the example usage for org.springframework.integration.xmpp.inbound ChatMessageListeningEndpoint setPayloadExpression.

Prototype

public void setPayloadExpression(Expression payloadExpression) 

Source Link

Document

Specify a SpEL expression to evaluate a payload against an incoming org.jivesoftware.smack.packet.Message .

Usage

From source file:org.springframework.integration.xmpp.inbound.ChatMessageListeningEndpointTests.java

@Test
public void testExpression() throws Exception {
    TestXMPPConnection testXMPPConnection = new TestXMPPConnection();

    QueueChannel inputChannel = new QueueChannel();

    ChatMessageListeningEndpoint endpoint = new ChatMessageListeningEndpoint(testXMPPConnection);
    SpelExpressionParser parser = new SpelExpressionParser();
    endpoint.setPayloadExpression(parser.parseExpression("#root"));
    endpoint.setOutputChannel(inputChannel);
    endpoint.setBeanFactory(mock(BeanFactory.class));
    endpoint.afterPropertiesSet();//  w  ww.  j  a  v  a  2  s.co  m
    endpoint.start();

    Message smackMessage = new Message();
    smackMessage.setBody("foo");

    XmlPullParser xmlPullParser = PacketParserUtils.newXmppParser(new StringReader(smackMessage.toString()));
    xmlPullParser.next();
    testXMPPConnection.parseAndProcessStanza(xmlPullParser);

    org.springframework.messaging.Message<?> receive = inputChannel.receive(10000);
    assertNotNull(receive);

    Object payload = receive.getPayload();
    assertThat(payload, instanceOf(Message.class));
    assertEquals(smackMessage.getStanzaId(), ((Message) payload).getStanzaId());
    assertEquals(smackMessage.getBody(), ((Message) payload).getBody());

    Log logger = Mockito.spy(TestUtils.getPropertyValue(endpoint, "logger", Log.class));
    given(logger.isInfoEnabled()).willReturn(true);
    final CountDownLatch logLatch = new CountDownLatch(1);
    willAnswer(invocation -> {
        Object result = invocation.callRealMethod();
        logLatch.countDown();
        return result;
    }).given(logger).info(anyString());

    new DirectFieldAccessor(endpoint).setPropertyValue("logger", logger);

    endpoint.setPayloadExpression(null);

    smackMessage = new Message();
    xmlPullParser = PacketParserUtils.newXmppParser(new StringReader(smackMessage.toString()));
    xmlPullParser.next();
    testXMPPConnection.parseAndProcessStanza(xmlPullParser);

    ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);

    assertTrue(logLatch.await(10, TimeUnit.SECONDS));

    verify(logger).info(argumentCaptor.capture());

    assertEquals("The XMPP Message [" + smackMessage + "] with empty body is ignored.",
            argumentCaptor.getValue());

    endpoint.stop();
}

From source file:org.springframework.integration.xmpp.inbound.ChatMessageListeningEndpointTests.java

@Test
public void testGcmExtension() throws Exception {
    String data = "{\n" + "      \"to\":\"me\",\n" + "     \"notification\": {\n"
            + "        \"title\": \"Something interesting\",\n" + "        \"text\": \"Here we go\"\n"
            + "           },\n" + "      \"time_to_live\":\"600\"\n" + "      }\n" + "}";
    GcmPacketExtension packetExtension = new GcmPacketExtension(data);
    Message smackMessage = new Message();
    smackMessage.addExtension(packetExtension);

    TestXMPPConnection testXMPPConnection = new TestXMPPConnection();

    QueueChannel inputChannel = new QueueChannel();

    ChatMessageListeningEndpoint endpoint = new ChatMessageListeningEndpoint(testXMPPConnection);
    Expression payloadExpression = new SpelExpressionParser().parseExpression("#extension.json");
    endpoint.setPayloadExpression(payloadExpression);
    endpoint.setOutputChannel(inputChannel);
    endpoint.setBeanFactory(mock(BeanFactory.class));
    endpoint.afterPropertiesSet();//from   w w w  .  ja  v a 2s  .c o m
    endpoint.start();

    XmlPullParser xmlPullParser = PacketParserUtils.newXmppParser(new StringReader(smackMessage.toString()));
    xmlPullParser.next();
    testXMPPConnection.parseAndProcessStanza(xmlPullParser);

    org.springframework.messaging.Message<?> receive = inputChannel.receive(10000);
    assertNotNull(receive);

    assertEquals(data, receive.getPayload());

    endpoint.stop();
}