Class MessageArchivePlugin

  • All Implemented Interfaces:
    java.lang.Comparable<tigase.xmpp.XMPPImplIfc>, tigase.kernel.beans.Initializable, tigase.kernel.beans.UnregisterAware, tigase.server.xmppsession.SessionManager.MessageArchive, tigase.xmpp.XMPPImplIfc, tigase.xmpp.XMPPProcessorConcurrencyAwareIfc, tigase.xmpp.XMPPProcessorIfc

    @Bean(name="message-archive",
          parents={Xep0136MessageArchivingProcessor.class,Xep0313MessageArchiveManagementProcessor.class,MAM2Processor.class},
          active=true,
          exportable=true)
    public class MessageArchivePlugin
    extends tigase.xmpp.impl.annotation.AnnotatedXMPPProcessor
    implements tigase.xmpp.XMPPProcessorIfc, tigase.server.xmppsession.SessionManager.MessageArchive, tigase.kernel.beans.Initializable, tigase.kernel.beans.UnregisterAware
    MessageArchingPlugin is implementation of plugin which forwards messages with type set to "chat" to MessageArchivingComponent to store this messages in message archive.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ARCHIVE  
      protected tigase.xmpp.jid.JID componentJid  
      static java.lang.String DEFAULT_SAVE  
      protected static java.lang.String ID  
      protected boolean ignorePubSubEventsFullJid  
      static java.lang.String MSG_ARCHIVE_PATHS  
      static java.lang.String MUC_SAVE  
      static java.lang.String OWNER_JID  
      protected static java.lang.String SETTINGS  
      • Fields inherited from class tigase.xmpp.XMPPProcessor

        ALL_NAMES, ALL_PATHS, cmpInfo
      • Fields inherited from interface tigase.xmpp.XMPPImplIfc

        CLIENT_XMLNS
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addStableId​(tigase.server.Packet packet, tigase.xmpp.XMPPResourceConnection session)  
      void beforeUnregister()  
      void generateStableId​(tigase.server.Packet packet)  
      java.lang.String[] getArchivingMatchers()  
      tigase.xmpp.jid.JID getComponentJid()  
      StoreMethod getDefaultStoreMethod​(java.util.Optional<MessageArchiveVHostItemExtension> maExt)  
      StoreMethod getRequiredStoreMethod​(java.util.Optional<MessageArchiveVHostItemExtension> maExt)  
      StoreMuc getRequiredStoreMucMessages​(tigase.xmpp.XMPPResourceConnection session)  
      Settings getSettings​(tigase.xmpp.jid.BareJID account, tigase.xmpp.XMPPResourceConnection session)  
      void initialize()  
      boolean isArchivingOfMixMessageEnabled()  
      Settings loadSettings​(tigase.archive.processors.MessageArchivePlugin.RepoStringSupplier dataSupplier, tigase.archive.processors.MessageArchivePlugin.RepoStringConsumer dataConsumer, java.util.function.Supplier<java.util.Optional<tigase.vhosts.VHostItem>> vhostSupplier)  
      Settings loadSettings​(tigase.xmpp.XMPPResourceConnection session)  
      void process​(tigase.server.Packet packet, tigase.xmpp.XMPPResourceConnection session, tigase.db.NonAuthUserRepository repo, java.util.Queue<tigase.server.Packet> results, java.util.Map<java.lang.String,​java.lang.Object> settings)  
      void setArchiveOffline​(boolean archiveOffline)  
      void setArchivingMatchers​(java.lang.String[] matcherStrs)  
      void setCacheSize​(int cacheSize)  
      void setComponentJid​(tigase.xmpp.jid.JID componentJid)  
      void setMamProcessors​(java.util.List<AbstractMAMProcessor> mamProcessors)  
      protected tigase.xml.Element.Matcher<tigase.xml.Element> stanzaIdMatcher​(java.lang.String by)  
      protected void userConnected​(tigase.server.xmppsession.UserConnectedEvent event)  
      boolean willArchive​(tigase.server.Packet packet, tigase.xmpp.jid.JID buddyJid, Settings settings, java.util.function.Supplier<java.util.Optional<tigase.vhosts.VHostItem>> vhostItemSupplier, java.util.function.Predicate<tigase.xmpp.jid.JID> isInRoster)  
      boolean willArchive​(tigase.server.Packet packet, tigase.xmpp.XMPPResourceConnection session)  
      • Methods inherited from class tigase.xmpp.impl.annotation.AnnotatedXMPPProcessor

        id, supDiscoFeatures, supElementNamePaths, supNamespaces, supStreamFeatures, supTypes
      • Methods inherited from class tigase.xmpp.XMPPProcessor

        canHandle, compareTo, concurrentQueuesNo, getComponentInfo, getInstance, getQueueSize, getStatistics, getThreadsNo, init, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.Comparable

        compareTo
      • Methods inherited from interface tigase.xmpp.XMPPImplIfc

        canHandle, concurrentQueuesNo, getComponentInfo, getStatistics, id, init, supDiscoFeatures, supElementNamePaths, supNamespaces, supStreamFeatures, supTypes
    • Field Detail

      • MSG_ARCHIVE_PATHS

        public static final java.lang.String MSG_ARCHIVE_PATHS
        See Also:
        Constant Field Values
      • componentJid

        @ConfigField(desc="Message archiving component JID",
                     alias="component-jid")
        protected tigase.xmpp.jid.JID componentJid
      • ignorePubSubEventsFullJid

        @ConfigField(desc="Ignore PubSub notifications sent to full JID",
                     alias="ignore-pubsub-events-full-jid")
        protected boolean ignorePubSubEventsFullJid
    • Constructor Detail

      • MessageArchivePlugin

        public MessageArchivePlugin()
    • Method Detail

      • isArchivingOfMixMessageEnabled

        public boolean isArchivingOfMixMessageEnabled()
      • setArchiveOffline

        public void setArchiveOffline​(boolean archiveOffline)
      • setCacheSize

        public void setCacheSize​(int cacheSize)
      • setMamProcessors

        public void setMamProcessors​(java.util.List<AbstractMAMProcessor> mamProcessors)
      • process

        public void process​(tigase.server.Packet packet,
                            tigase.xmpp.XMPPResourceConnection session,
                            tigase.db.NonAuthUserRepository repo,
                            java.util.Queue<tigase.server.Packet> results,
                            java.util.Map<java.lang.String,​java.lang.Object> settings)
                     throws tigase.xmpp.XMPPException
        Specified by:
        process in interface tigase.xmpp.XMPPProcessorIfc
        Throws:
        tigase.xmpp.XMPPException
      • getArchivingMatchers

        public java.lang.String[] getArchivingMatchers()
      • setArchivingMatchers

        public void setArchivingMatchers​(java.lang.String[] matcherStrs)
      • getComponentJid

        public tigase.xmpp.jid.JID getComponentJid()
      • setComponentJid

        public void setComponentJid​(tigase.xmpp.jid.JID componentJid)
      • getSettings

        public Settings getSettings​(tigase.xmpp.jid.BareJID account,
                                    tigase.xmpp.XMPPResourceConnection session)
                             throws tigase.xmpp.NotAuthorizedException
        Throws:
        tigase.xmpp.NotAuthorizedException
      • getRequiredStoreMucMessages

        public StoreMuc getRequiredStoreMucMessages​(tigase.xmpp.XMPPResourceConnection session)
      • initialize

        public void initialize()
        Specified by:
        initialize in interface tigase.kernel.beans.Initializable
      • beforeUnregister

        public void beforeUnregister()
        Specified by:
        beforeUnregister in interface tigase.kernel.beans.UnregisterAware
      • userConnected

        @HandleEvent
        protected void userConnected​(tigase.server.xmppsession.UserConnectedEvent event)
      • loadSettings

        public Settings loadSettings​(tigase.xmpp.XMPPResourceConnection session)
                              throws tigase.xmpp.NotAuthorizedException
        Throws:
        tigase.xmpp.NotAuthorizedException
      • loadSettings

        public Settings loadSettings​(tigase.archive.processors.MessageArchivePlugin.RepoStringSupplier dataSupplier,
                                     tigase.archive.processors.MessageArchivePlugin.RepoStringConsumer dataConsumer,
                                     java.util.function.Supplier<java.util.Optional<tigase.vhosts.VHostItem>> vhostSupplier)
                              throws tigase.xmpp.NotAuthorizedException
        Throws:
        tigase.xmpp.NotAuthorizedException
      • generateStableId

        public void generateStableId​(tigase.server.Packet packet)
        Specified by:
        generateStableId in interface tigase.server.xmppsession.SessionManager.MessageArchive
      • addStableId

        public void addStableId​(tigase.server.Packet packet,
                                tigase.xmpp.XMPPResourceConnection session)
        Specified by:
        addStableId in interface tigase.server.xmppsession.SessionManager.MessageArchive
      • stanzaIdMatcher

        protected tigase.xml.Element.Matcher<tigase.xml.Element> stanzaIdMatcher​(java.lang.String by)
      • willArchive

        public boolean willArchive​(tigase.server.Packet packet,
                                   tigase.xmpp.XMPPResourceConnection session)
                            throws tigase.xmpp.NotAuthorizedException
        Specified by:
        willArchive in interface tigase.server.xmppsession.SessionManager.MessageArchive
        Throws:
        tigase.xmpp.NotAuthorizedException
      • willArchive

        public boolean willArchive​(tigase.server.Packet packet,
                                   tigase.xmpp.jid.JID buddyJid,
                                   Settings settings,
                                   java.util.function.Supplier<java.util.Optional<tigase.vhosts.VHostItem>> vhostItemSupplier,
                                   java.util.function.Predicate<tigase.xmpp.jid.JID> isInRoster)
                            throws tigase.xmpp.NotAuthorizedException
        Throws:
        tigase.xmpp.NotAuthorizedException