public void receive()

in server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0160_offline_storage/AbstractOfflineStorageProvider.java [36:84]


    public void receive(Stanza stanza) {
        stanza = XMPPCoreStanza.getWrapper(stanza);
        
        // according to XEP-0160 only certain stanzas should be stored
        boolean store = false;
        logger.debug("Received Stanza for offline storage:" + stanza.getClass().getSimpleName());
        if (stanza instanceof MessageStanza) {
            MessageStanza messageStanza = (MessageStanza) stanza;
            MessageStanzaType type = messageStanza.getMessageType();
            
            switch (type) {
            case NORMAL:
            case CHAT:
                store = true;
                break;
            case GROUPCHAT:
            case ERROR:
            case HEADLINE:
                store = false;
                break;
            default:
                throw new RuntimeException("unknown mesage type " + type);
            }
        } else if (stanza instanceof PresenceStanza) {
            PresenceStanza presenceStanza = (PresenceStanza) stanza;
            PresenceStanzaType type = presenceStanza.getPresenceType();
            switch (type) {
            case SUBSCRIBE:
            case SUBSCRIBED:
            case UNSUBSCRIBE:
            case UNSUBSCRIBED:
                store = true;
                break;
            case ERROR:
            case PROBE:
            case UNAVAILABLE:
                store = false;
                break;
            default:
                throw new RuntimeException("unknown presence type " + type);
            }
        }
        if (!store) {
            logger.debug("Stanza is not intended for offline storage");
            return;
        }
        logger.debug("Stanza will be stored offline");
        storeStanza(stanza);
    }