Search in sources :

Example 31 with StanzaListener

use of org.jivesoftware.smack.StanzaListener in project Spark by igniterealtime.

the class ChatContainer method cleanupChatRoom.

/**
 * Removes the ChatRoom resources.
 *
 * @param room the room to remove.
 */
private void cleanupChatRoom(ChatRoom room) {
    if (room.isActive()) {
        room.leaveChatRoom();
        room.closeChatRoom();
    }
    final StanzaListener listener = presenceMap.get(room.getRoomname());
    if (listener != null) {
        SparkManager.getConnection().removeAsyncStanzaListener(listener);
    }
    fireChatRoomClosed(room);
    room.removeMessageListener(this);
    // Remove mappings
    presenceMap.remove(room.getRoomname());
    chatRoomList.remove(room);
    room.getChatInputEditor().removeKeyListener(this);
    // Clear all Text :)
    room.getTranscriptWindow().cleanup();
}
Also used : StanzaListener(org.jivesoftware.smack.StanzaListener)

Example 32 with StanzaListener

use of org.jivesoftware.smack.StanzaListener in project Spark by igniterealtime.

the class BattleshipPlugin method initialize.

@Override
public void initialize() {
    ProviderManager.addIQProvider(GameOfferPacket.ELEMENT_NAME, GameOfferPacket.NAMESPACE, GameOfferPacket.class);
    ProviderManager.addExtensionProvider(MovePacket.ELEMENT_NAME, MovePacket.NAMESPACE, MovePacket.class);
    ProviderManager.addExtensionProvider(MoveAnswerPacket.ELEMENT_NAME, MoveAnswerPacket.NAMESPACE, MoveAnswerPacket.class);
    _gameofferListener = new StanzaListener() {

        @Override
        public void processPacket(Stanza stanza) {
            GameOfferPacket invitation = (GameOfferPacket) stanza;
            if (invitation.getType() == IQ.Type.get) {
                showInvitationInChat(invitation);
            }
        }
    };
    SparkManager.getConnection().addAsyncStanzaListener(_gameofferListener, new StanzaTypeFilter(GameOfferPacket.class));
    _chatRoomListener = new ChatRoomOpeningListener();
    SparkManager.getChatManager().addChatRoomListener(_chatRoomListener);
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) GameOfferPacket(battleship.packets.GameOfferPacket) Stanza(org.jivesoftware.smack.packet.Stanza) StanzaListener(org.jivesoftware.smack.StanzaListener) ChatRoomOpeningListener(battleship.listener.ChatRoomOpeningListener)

Example 33 with StanzaListener

use of org.jivesoftware.smack.StanzaListener in project spring-integration by spring-projects.

the class ChatMessageListeningEndpointTests method testWithErrorChannel.

@Test
public void testWithErrorChannel() throws Exception {
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    XMPPConnection connection = mock(XMPPConnection.class);
    bf.registerSingleton(XmppContextUtils.XMPP_CONNECTION_BEAN_NAME, connection);
    ChatMessageListeningEndpoint endpoint = new ChatMessageListeningEndpoint();
    DirectChannel outChannel = new DirectChannel();
    outChannel.subscribe(message -> {
        throw new RuntimeException("ooops");
    });
    PollableChannel errorChannel = new QueueChannel();
    endpoint.setBeanFactory(bf);
    endpoint.setOutputChannel(outChannel);
    endpoint.setErrorChannel(errorChannel);
    endpoint.afterPropertiesSet();
    StanzaListener listener = (StanzaListener) TestUtils.getPropertyValue(endpoint, "stanzaListener");
    Message smackMessage = new Message(JidCreate.from("kermit@frog.com"));
    smackMessage.setBody("hello");
    smackMessage.setThread("1234");
    listener.processStanza(smackMessage);
    ErrorMessage msg = (ErrorMessage) errorChannel.receive();
    assertEquals("hello", ((MessagingException) msg.getPayload()).getFailedMessage().getPayload());
}
Also used : QueueChannel(org.springframework.integration.channel.QueueChannel) ErrorMessage(org.springframework.messaging.support.ErrorMessage) Message(org.jivesoftware.smack.packet.Message) DirectChannel(org.springframework.integration.channel.DirectChannel) MessagingException(org.springframework.messaging.MessagingException) DefaultListableBeanFactory(org.springframework.beans.factory.support.DefaultListableBeanFactory) PollableChannel(org.springframework.messaging.PollableChannel) StanzaListener(org.jivesoftware.smack.StanzaListener) XMPPConnection(org.jivesoftware.smack.XMPPConnection) ErrorMessage(org.springframework.messaging.support.ErrorMessage) Test(org.junit.Test)

Example 34 with StanzaListener

use of org.jivesoftware.smack.StanzaListener in project xabber-android by redsolution.

the class AbstractChat method sendMessage.

@SuppressWarnings("WeakerAccess")
boolean sendMessage(MessageItem messageItem) {
    String text = prepareText(messageItem.getText());
    messageItem.setEncrypted(OTRManager.getInstance().isEncrypted(text));
    Long timestamp = messageItem.getTimestamp();
    Date currentTime = new Date(System.currentTimeMillis());
    Date delayTimestamp = null;
    if (timestamp != null) {
        if (currentTime.getTime() - timestamp > 60000) {
            delayTimestamp = currentTime;
        }
    }
    Message message = null;
    if (messageItem.haveAttachments()) {
        message = createFileMessagePacket(messageItem.getStanzaId(), messageItem.getAttachments(), text);
    } else if (messageItem.haveForwardedMessages()) {
        Realm realm = MessageDatabaseManager.getInstance().getNewBackgroundRealm();
        RealmResults<MessageItem> items = realm.where(MessageItem.class).in(MessageItem.Fields.UNIQUE_ID, messageItem.getForwardedIdsAsArray()).findAll();
        List<ReferenceElement> references = new ArrayList<>();
        StringBuilder builder = new StringBuilder();
        if (items != null && !items.isEmpty()) {
            for (MessageItem item : items) {
                String forward = ClipManager.createMessageTree(realm, item.getUniqueId()) + "\n";
                int begin = getSizeOfEncodedChars(builder.toString());
                builder.append(forward);
                ReferenceElement reference = ReferencesManager.createForwardReference(item, begin, getSizeOfEncodedChars(builder.toString()) - 1);
                references.add(reference);
            }
        }
        builder.append(text);
        text = builder.toString();
        message = createMessagePacket(text, messageItem.getStanzaId());
        for (ReferenceElement element : references) {
            message.addExtension(element);
        }
    } else if (text != null) {
        message = createMessagePacket(text, messageItem.getStanzaId());
    }
    if (message != null) {
        ChatStateManager.getInstance().updateOutgoingMessage(AbstractChat.this, message);
        CarbonManager.getInstance().updateOutgoingMessage(AbstractChat.this, message);
        message.addExtension(new OriginIdElement(messageItem.getStanzaId()));
        if (delayTimestamp != null) {
            message.addExtension(new DelayInformation(delayTimestamp));
        }
        final String messageId = messageItem.getUniqueId();
        try {
            StanzaSender.sendStanza(account, message, new StanzaListener() {

                @Override
                public void processStanza(Stanza packet) throws SmackException.NotConnectedException {
                    Realm realm = MessageDatabaseManager.getInstance().getNewBackgroundRealm();
                    realm.executeTransaction(new Realm.Transaction() {

                        @Override
                        public void execute(Realm realm) {
                            MessageItem acknowledgedMessage = realm.where(MessageItem.class).equalTo(MessageItem.Fields.UNIQUE_ID, messageId).findFirst();
                            if (acknowledgedMessage != null) {
                                acknowledgedMessage.setAcknowledged(true);
                            }
                        }
                    });
                    realm.close();
                }
            });
        } catch (NetworkException e) {
            return false;
        }
    }
    if (message == null) {
        messageItem.setError(true);
        messageItem.setErrorDescription("Internal error: message is null");
    } else {
        message.setFrom(account.getFullJid());
        messageItem.setOriginalStanza(message.toXML().toString());
    }
    if (delayTimestamp != null) {
        messageItem.setDelayTimestamp(delayTimestamp.getTime());
    }
    if (messageItem.getTimestamp() == null) {
        messageItem.setTimestamp(currentTime.getTime());
    }
    messageItem.setSent(true);
    return true;
}
Also used : MessageItem(com.xabber.android.data.database.messagerealm.MessageItem) Message(org.jivesoftware.smack.packet.Message) Stanza(org.jivesoftware.smack.packet.Stanza) StanzaListener(org.jivesoftware.smack.StanzaListener) Date(java.util.Date) DelayInformation(org.jivesoftware.smackx.delay.packet.DelayInformation) ReferenceElement(com.xabber.android.data.extension.references.ReferenceElement) List(java.util.List) RealmList(io.realm.RealmList) ArrayList(java.util.ArrayList) OriginIdElement(com.xabber.xmpp.sid.OriginIdElement) Realm(io.realm.Realm) NetworkException(com.xabber.android.data.NetworkException) RealmResults(io.realm.RealmResults)

Example 35 with StanzaListener

use of org.jivesoftware.smack.StanzaListener in project Smack by igniterealtime.

the class MamIntegrationTest method mamTest.

@SmackIntegrationTest
public void mamTest() throws TimeoutException, Exception {
    EntityBareJid userOne = conOne.getUser().asEntityBareJid();
    EntityBareJid userTwo = conTwo.getUser().asEntityBareJid();
    final String messageBody = "Test MAM message (" + testRunId + ')';
    Message message = conTwo.getStanzaFactory().buildMessageStanza().to(userTwo).setBody(messageBody).build();
    final String messageId = message.getStanzaId();
    final SimpleResultSyncPoint messageReceived = new SimpleResultSyncPoint();
    final StanzaListener stanzaListener = new StanzaListener() {

        @Override
        public void processStanza(Stanza stanza) {
            Message message = (Message) stanza;
            if (message.getBody().equals(messageBody)) {
                messageReceived.signal();
            }
        }
    };
    conTwo.addAsyncStanzaListener(stanzaListener, MessageWithBodiesFilter.INSTANCE);
    try {
        conOne.sendStanza(message);
        messageReceived.waitForResult(timeout);
    } finally {
        conTwo.removeAsyncStanzaListener(stanzaListener);
    }
    MamQueryArgs mamQueryArgs = MamQueryArgs.builder().setResultPageSizeTo(1).limitResultsToJid(userOne).queryLastPage().build();
    MamQuery mamQuery = mamManagerConTwo.queryArchive(mamQueryArgs);
    assertEquals(1, mamQuery.getMessages().size());
    Message mamMessage = mamQuery.getMessages().get(0);
    assertEquals(messageId, mamMessage.getStanzaId());
    assertEquals(messageBody, mamMessage.getBody());
    assertEquals(conOne.getUser(), mamMessage.getFrom());
    assertEquals(userTwo, mamMessage.getTo());
}
Also used : Message(org.jivesoftware.smack.packet.Message) Stanza(org.jivesoftware.smack.packet.Stanza) StanzaListener(org.jivesoftware.smack.StanzaListener) MamQuery(org.jivesoftware.smackx.mam.MamManager.MamQuery) EntityBareJid(org.jxmpp.jid.EntityBareJid) SimpleResultSyncPoint(org.igniterealtime.smack.inttest.util.SimpleResultSyncPoint) MamQueryArgs(org.jivesoftware.smackx.mam.MamManager.MamQueryArgs) SmackIntegrationTest(org.igniterealtime.smack.inttest.annotations.SmackIntegrationTest) AbstractSmackIntegrationTest(org.igniterealtime.smack.inttest.AbstractSmackIntegrationTest)

Aggregations

StanzaListener (org.jivesoftware.smack.StanzaListener)46 Stanza (org.jivesoftware.smack.packet.Stanza)24 InputStream (java.io.InputStream)12 Message (org.jivesoftware.smack.packet.Message)12 DataPacketExtension (org.jivesoftware.smackx.bytestreams.ibb.packet.DataPacketExtension)12 Test (org.junit.jupiter.api.Test)12 IQ (org.jivesoftware.smack.packet.IQ)10 SmackException (org.jivesoftware.smack.SmackException)9 Data (org.jivesoftware.smackx.bytestreams.ibb.packet.Data)9 StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)8 IOException (java.io.IOException)7 XMPPConnection (org.jivesoftware.smack.XMPPConnection)6 XMPPException (org.jivesoftware.smack.XMPPException)6 ArrayList (java.util.ArrayList)5 Random (java.util.Random)5 ActionEvent (java.awt.event.ActionEvent)4 List (java.util.List)4 SmackIntegrationTest (org.igniterealtime.smack.inttest.annotations.SmackIntegrationTest)4 SimpleResultSyncPoint (org.igniterealtime.smack.inttest.util.SimpleResultSyncPoint)4 StanzaFilter (org.jivesoftware.smack.filter.StanzaFilter)4