Package tigase.xmpp.impl.push

# Class AbstractPushNotifications

java.lang.Object
tigase.xmpp.XMPPProcessor
tigase.xmpp.impl.annotation.AnnotatedXMPPProcessor
tigase.xmpp.impl.push.AbstractPushNotifications

All Implemented Interfaces:
  `Comparable<XMPPImplIfc>`, `XMPPImplIfc`, `XMPPProcessorConcurrencyAwareIfc`, `XMPPProcessorIfc`

Direct Known Subclasses:
  `PushNotifications`

public class AbstractPushNotifications extends AnnotatedXMPPProcessor implements XMPPProcessorIfc

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `ID`
  `protected Duration`
  `maxTimeout`
  `protected boolean`
  `withBody`
  `protected boolean`
  `withSender`
  `static final String`
  `XMLNS`

  ### Fields inherited from class tigase.xmpp.XMPPProcessor

  `ALL_NAMES, ALL_PATHS, cmpInfo`

  ### Fields inherited from interface tigase.xmpp.XMPPImplIfc

  `CLIENT_XMLNS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractPushNotifications()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Element`
  `createSettingsElement(JID jid, String node, Element enableElem, Element optionsForm)`
  `protected void`
  `disableNotifications(XMPPResourceConnection session, BareJID userJid, JID jid, String node, Consumer<Packet> packetConsumer)`
  `protected void`
  `enableNotifications(XMPPResourceConnection session, JID jid, String node, Element settings, Consumer<Packet> packetConsumer)`
  `protected void`
  `enableNotifications(XMPPResourceConnection session, JID jid, String node, Element enableElem, Element optionsForm, Consumer<Packet> packetConsumer)`
  `PushPresence`
  `getPushDevicesPresence()`
  `protected Map<String,Element>`
  `getPushServices(BareJID userJid)`
  `protected Map<String,Element>`
  `getPushServices(XMPPResourceConnection session)`
  `protected boolean`
  `isSendingNotificationAllowed(BareJID userJid, XMPPResourceConnection session, Element pushServiceSettings, Packet packet)`
  `protected Element`
  `prepareNotificationPayload(Element pushServiceSettings, Packet packet, long msgCount)`
  `void`
  `process(Packet packet, XMPPResourceConnection session, NonAuthUserRepository nonAuthUserRepository, Queue<Packet> results, Map<String,Object> map)`
  `protected void`
  `processMessage(Packet packet, XMPPResourceConnection session, Consumer<Packet> results)`
  `protected void`
  `sendPushNotification(BareJID userJid, Collection<Element> pushServices, XMPPResourceConnection session, Packet packet, Map<Enum,Long> notificationData, Consumer<Packet> packetConsumer)`
  `protected void`
  `sendPushNotification(XMPPResourceConnection session, Packet packet, Consumer<Packet> packetConsumer)`
  `void`
  `setPushDevicesPresence(PushPresence pushDevicesPresence)`
  `protected boolean`
  `shouldDisablePush(Authorization error)`

  ### 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 Details

  - ### XMLNS

    public static final String XMLNS
    See Also:
      - Constant Field Values

  - ### ID

    public static final String ID
    See Also:
      - Constant Field Values

  - ### withBody

    @ConfigField(desc="Send notifications with body", alias="with-body") protected boolean withBody

  - ### withSender

    @ConfigField(desc="Send notifications with sender", alias="with-sender") protected boolean withSender

  - ### maxTimeout

    @ConfigField(desc="Max notification timeout", alias="max-timeout") protected Duration maxTimeout

- ## Constructor Details

  - ### AbstractPushNotifications

    public AbstractPushNotifications()

- ## Method Details

  - ### getPushDevicesPresence

    public PushPresence getPushDevicesPresence()

  - ### setPushDevicesPresence

    public void setPushDevicesPresence(PushPresence pushDevicesPresence)

  - ### shouldDisablePush

    protected boolean shouldDisablePush(Authorization error)

  - ### process

    public void process(Packet packet, XMPPResourceConnection session, NonAuthUserRepository nonAuthUserRepository, Queue<Packet> results, Map<String,Object> map) throws XMPPException
    Specified by:
      `process` in interface `XMPPProcessorIfc`
    Parameters:
      `packet` - packet is which being processed. This parameter may never be null. Even though this is not immutable object it mustn't be altered. None of it's fields or attributes can be changed during processing.
      `session` - user session which keeps all the user session data and also gives an access to the user's repository data. It allows for storing information in a permanent storage or in memory only during the live of the online session. This parameter can be null if there is no online user session at the time of the packet processing.
      `nonAuthUserRepository` - this is a user data storage which is normally used when the user session (parameter above) is null. This is repository allows for a very restricted access only. It allows for storing some user private data (doesn't allow overwriting existing data) like messages for offline users and it also allows for reading user public data like VCard.
      `results` - this a collection with packets which have been generated as input packet processing results. Regardless a response to a user request is sent or the packet is forwarded to it's destination it is always required that a copy of the input packet is created and stored in the results queue.
      `map` - this map keeps plugin specific settings loaded from the Tigase server configuration. In most cases it is unused, however if the plugin needs to access an external database that this is a way to pass database connection string to the plugin.
    Throws:
      `XMPPException`

  - ### processMessage

    protected void processMessage(Packet packet, XMPPResourceConnection session, Consumer<Packet> results) throws NotAuthorizedException, TigaseDBException
    Throws:
      `NotAuthorizedException`
      `TigaseDBException`

  - ### enableNotifications

    protected void enableNotifications(XMPPResourceConnection session, JID jid, String node, Element enableElem, Element optionsForm, Consumer<Packet> packetConsumer) throws NotAuthorizedException, TigaseDBException
    Throws:
      `NotAuthorizedException`
      `TigaseDBException`

  - ### createSettingsElement

    protected Element createSettingsElement(JID jid, String node, Element enableElem, Element optionsForm)

  - ### enableNotifications

    protected void enableNotifications(XMPPResourceConnection session, JID jid, String node, Element settings, Consumer<Packet> packetConsumer) throws NotAuthorizedException, TigaseDBException
    Throws:
      `NotAuthorizedException`
      `TigaseDBException`

  - ### disableNotifications

    protected void disableNotifications(XMPPResourceConnection session, BareJID userJid, JID jid, String node, Consumer<Packet> packetConsumer) throws NotAuthorizedException, TigaseDBException
    Throws:
      `NotAuthorizedException`
      `TigaseDBException`

  - ### getPushServices

    protected Map<String,Element> getPushServices(XMPPResourceConnection session)

  - ### prepareNotificationPayload

    protected Element prepareNotificationPayload(Element pushServiceSettings, Packet packet, long msgCount)

  - ### sendPushNotification

    protected void sendPushNotification(BareJID userJid, Collection<Element> pushServices, XMPPResourceConnection session, Packet packet, Map<Enum,Long> notificationData, Consumer<Packet> packetConsumer)

  - ### getPushServices

    protected Map<String,Element> getPushServices(BareJID userJid) throws TigaseDBException
    Throws:
      `TigaseDBException`

  - ### sendPushNotification

    protected void sendPushNotification(XMPPResourceConnection session, Packet packet, Consumer<Packet> packetConsumer) throws TigaseDBException
    Throws:
      `TigaseDBException`

  - ### isSendingNotificationAllowed

    protected boolean isSendingNotificationAllowed(BareJID userJid, XMPPResourceConnection session, Element pushServiceSettings, Packet packet)