Class IQPEPHandler
- java.lang.Object
-
- org.jivesoftware.openfire.container.BasicModule
-
- org.jivesoftware.openfire.handler.IQHandler
-
- org.jivesoftware.openfire.pep.IQPEPHandler
-
- All Implemented Interfaces:
ChannelHandler,Module,DiscoInfoProvider,ServerFeaturesProvider,ServerIdentitiesProvider,UserFeaturesProvider,UserIdentitiesProvider,UserItemsProvider,UserEventListener,RosterEventListener,PresenceEventListener
public class IQPEPHandler extends IQHandler implements ServerIdentitiesProvider, ServerFeaturesProvider, UserIdentitiesProvider, UserFeaturesProvider, UserItemsProvider, PresenceEventListener, RosterEventListener, UserEventListener, DiscoInfoProvider
An
IQHandlerused to implement XEP-0163: "Personal Eventing via Pubsub" Version 1.0For each user on the server there is an associated
PEPServiceinteracting with a singlePubSubEnginefor managing the user's PEP nodes.An IQHandler can only handle one namespace in its IQHandlerInfo. However, PEP related packets are seen having a variety of different namespaces. Thus, classes like
IQPEPOwnerHandlerare used to forward packets having these other namespaces tohandleIQ(IQ).This handler is used for the following namespaces:
- http://jabber.org/protocol/pubsub
- http://jabber.org/protocol/pubsub#owner
- Author:
- Armando Jagucki, Guus der Kinderen, guus.der.kinderen@gmail.com
-
-
Field Summary
-
Fields inherited from class org.jivesoftware.openfire.handler.IQHandler
deliverer, sessionManager
-
-
Constructor Summary
Constructors Constructor Description IQPEPHandler()Constructs a newIQPEPHandlerinstance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddingContact(Roster roster, RosterItem item, boolean persistent)Notification message indicating that a contact is about to be added to a roster.voidavailableSession(ClientSession session, org.xmpp.packet.Presence presence)Notification message indicating that a session that was not available is now available.voidcontactAdded(Roster roster, RosterItem item)Notification message indicating that a contact has been added to a roster.voidcontactDeleted(Roster roster, RosterItem item)Notification message indicating that a contact has been deleted from a roster.voidcontactUpdated(Roster roster, RosterItem item)Notification message indicating that a contact has been updated.voiddestroy()Destroys the module.org.xmpp.forms.DataFormgetExtendedInfo(String name, String node, org.xmpp.packet.JID senderJID)Returns an XDataForm with the extended information about the entity or null if none.Set<org.xmpp.forms.DataForm>getExtendedInfos(String name, String node, org.xmpp.packet.JID senderJID)Returns a collection of XDataForm with the extended information about the entity or an empty collection if none.Iterator<String>getFeatures()Implements ServerFeaturesProvider to include all supported XEP-0060 features in the server's disco#info result (as per section 4 of XEP-0163).Iterator<String>getFeatures(String name, String node, org.xmpp.packet.JID senderJID)Returns an Iterator (of String) with the supported features.Iterator<org.dom4j.Element>getIdentities()Implements ServerIdentitiesProvider and UserIdentitiesProvider, adding the PEP identity to the respective disco#info results.Iterator<org.dom4j.Element>getIdentities(String name, String node, org.xmpp.packet.JID senderJID)Returns an Iterator (of Element) with the target entity's identities.IQHandlerInfogetInfo()Returns the handler information to help generically handle IQ packets.PEPServiceManagergetServiceManager()Iterator<org.dom4j.Element>getUserItems(String name, org.xmpp.packet.JID senderJID)Implements UserItemsProvider, adding PEP related items to a disco#items result.org.xmpp.packet.IQhandleIQ(org.xmpp.packet.IQ packet)Handles the received IQ packet.booleanhasInfo(String name, String node, org.xmpp.packet.JID senderJID)Returns true if we can provide information related to the requested name and node.voidinitialize(XMPPServer server)Initializes the basic module.booleanisEnabled()Returns true if the PEP service is enabled in the server.voidpresenceChanged(ClientSession session, org.xmpp.packet.Presence presence)Notification message indicating that an available session has changed its presence.voidrosterLoaded(Roster roster)Notification message indicating that a roster has just been loaded.voidstart()Starts the basic module.voidstop()Stops the basic module.voidsubscribedToPresence(org.xmpp.packet.JID subscriberJID, org.xmpp.packet.JID authorizerJID)Notification message indicating that a user has successfully subscribed to the presence of another user.voidunavailableSession(ClientSession session, org.xmpp.packet.Presence presence)The following functions are unimplemented required interface methods.voidunsubscribedToPresence(org.xmpp.packet.JID unsubscriberJID, org.xmpp.packet.JID recipientJID)Notification message indicating that a user has unsubscribed to the presence of another user.voiduserCreated(User user, Map<String,Object> params)A user was created.voiduserDeleting(User user, Map<String,Object> params)A user is being deleted.voiduserModified(User user, Map<String,Object> params)A user's name, email, or an extended property was changed.-
Methods inherited from class org.jivesoftware.openfire.container.BasicModule
getName
-
-
-
-
Constructor Detail
-
IQPEPHandler
public IQPEPHandler()
Constructs a newIQPEPHandlerinstance.
-
-
Method Detail
-
initialize
public void initialize(XMPPServer server)
Description copied from class:BasicModuleInitializes the basic module.
Inheriting classes that choose to override this method MUST call this initialize() method before accessing BasicModule resources.
- Specified by:
initializein interfaceModule- Overrides:
initializein classIQHandler- Parameters:
server- the server hosting this module.
-
getServiceManager
public PEPServiceManager getServiceManager()
-
destroy
public void destroy()
Description copied from class:BasicModuleDestroys the module.
Does nothing in the basic module.
- Specified by:
destroyin interfaceModule- Overrides:
destroyin classBasicModule
-
start
public void start()
Description copied from class:BasicModuleStarts the basic module.
Inheriting classes that choose to override this method MUST call this start() method before accessing BasicModule resources.
- Specified by:
startin interfaceModule- Overrides:
startin classBasicModule
-
stop
public void stop()
Description copied from class:BasicModuleStops the basic module.
Inheriting classes that choose to override this method MUST call this stop() method before accessing BasicModule resources.
- Specified by:
stopin interfaceModule- Overrides:
stopin classBasicModule
-
getInfo
public IQHandlerInfo getInfo()
Description copied from class:IQHandlerReturns the handler information to help generically handle IQ packets. IQHandlers that aren't local server iq handlers (e.g. chatbots, transports, etc) returnnull.
-
getIdentities
public Iterator<org.dom4j.Element> getIdentities()
Implements ServerIdentitiesProvider and UserIdentitiesProvider, adding the PEP identity to the respective disco#info results.- Specified by:
getIdentitiesin interfaceServerIdentitiesProvider- Specified by:
getIdentitiesin interfaceUserIdentitiesProvider- Returns:
- an Iterator (of Element) with identities of protocols supported by the server.
-
getFeatures
public Iterator<String> getFeatures()
Implements ServerFeaturesProvider to include all supported XEP-0060 features in the server's disco#info result (as per section 4 of XEP-0163).- Specified by:
getFeaturesin interfaceServerFeaturesProvider- Specified by:
getFeaturesin interfaceUserFeaturesProvider- Returns:
- an Iterator (of String) with the supported features by the server.
-
isEnabled
public boolean isEnabled()
Returns true if the PEP service is enabled in the server.- Returns:
- true if the PEP service is enabled in the server.
-
handleIQ
public org.xmpp.packet.IQ handleIQ(org.xmpp.packet.IQ packet) throws UnauthorizedExceptionDescription copied from class:IQHandlerHandles the received IQ packet.- Specified by:
handleIQin classIQHandler- Parameters:
packet- the IQ packet to handle.- Returns:
- the response to send back.
- Throws:
UnauthorizedException- if the user that sent the packet is not authorized to request the given operation.
-
getUserItems
public Iterator<org.dom4j.Element> getUserItems(String name, org.xmpp.packet.JID senderJID)
Implements UserItemsProvider, adding PEP related items to a disco#items result.- Specified by:
getUserItemsin interfaceUserItemsProvider- Parameters:
name- the recipient JID's name.senderJID- the XMPPAddress of user that sent the disco items request.- Returns:
- an Iterator (of Element) with the target entity's items or null if none.
-
subscribedToPresence
public void subscribedToPresence(org.xmpp.packet.JID subscriberJID, org.xmpp.packet.JID authorizerJID)Description copied from interface:PresenceEventListenerNotification message indicating that a user has successfully subscribed to the presence of another user.- Specified by:
subscribedToPresencein interfacePresenceEventListener- Parameters:
subscriberJID- the user that initiated the subscription.authorizerJID- the user that authorized the subscription.
-
unsubscribedToPresence
public void unsubscribedToPresence(org.xmpp.packet.JID unsubscriberJID, org.xmpp.packet.JID recipientJID)Description copied from interface:PresenceEventListenerNotification message indicating that a user has unsubscribed to the presence of another user.- Specified by:
unsubscribedToPresencein interfacePresenceEventListener- Parameters:
unsubscriberJID- the user that initiated the unsubscribe request.recipientJID- the recipient user of the unsubscribe request.
-
availableSession
public void availableSession(ClientSession session, org.xmpp.packet.Presence presence)
Description copied from interface:PresenceEventListenerNotification message indicating that a session that was not available is now available. A session becomes available when an available presence is received. Sessions that are available will have a route in the routing table thus becoming eligible for receiving messages (in particular messages sent to the user bare JID).- Specified by:
availableSessionin interfacePresenceEventListener- Parameters:
session- the session that is now available.presence- the received available presence.
-
contactDeleted
public void contactDeleted(Roster roster, RosterItem item)
Description copied from interface:RosterEventListenerNotification message indicating that a contact has been deleted from a roster.- Specified by:
contactDeletedin interfaceRosterEventListener- Parameters:
roster- the roster that was updated.item- the roster item that was deleted.
-
userDeleting
public void userDeleting(User user, Map<String,Object> params)
Description copied from interface:UserEventListenerA user is being deleted.- Specified by:
userDeletingin interfaceUserEventListener- Parameters:
user- the user.params- event parameters.
-
unavailableSession
public void unavailableSession(ClientSession session, org.xmpp.packet.Presence presence)
The following functions are unimplemented required interface methods.- Specified by:
unavailableSessionin interfacePresenceEventListener- Parameters:
session- the session that is no longer available.presence- the received unavailable presence.
-
presenceChanged
public void presenceChanged(ClientSession session, org.xmpp.packet.Presence presence)
Description copied from interface:PresenceEventListenerNotification message indicating that an available session has changed its presence. This is the case when the user presence changed the show value (e.g. away, dnd, etc.) or the presence status message.- Specified by:
presenceChangedin interfacePresenceEventListener- Parameters:
session- the affected session.presence- the received available presence with the new information.
-
addingContact
public boolean addingContact(Roster roster, RosterItem item, boolean persistent)
Description copied from interface:RosterEventListenerNotification message indicating that a contact is about to be added to a roster. New contacts may be persisted to the database or not. Listeners may indicate that contact about to be persisted should not be persisted. Only one listener is needed to returnfalseso that the contact is not persisted.- Specified by:
addingContactin interfaceRosterEventListener- Parameters:
roster- the roster that was updated.item- the new roster item.persistent- true if the new contact is going to be saved to the database.- Returns:
- false if the contact should not be persisted to the database.
-
contactAdded
public void contactAdded(Roster roster, RosterItem item)
Description copied from interface:RosterEventListenerNotification message indicating that a contact has been added to a roster.- Specified by:
contactAddedin interfaceRosterEventListener- Parameters:
roster- the roster that was updated.item- the new roster item.
-
contactUpdated
public void contactUpdated(Roster roster, RosterItem item)
Description copied from interface:RosterEventListenerNotification message indicating that a contact has been updated.- Specified by:
contactUpdatedin interfaceRosterEventListener- Parameters:
roster- the roster that was updated.item- the updated roster item.
-
rosterLoaded
public void rosterLoaded(Roster roster)
Description copied from interface:RosterEventListenerNotification message indicating that a roster has just been loaded.- Specified by:
rosterLoadedin interfaceRosterEventListener- Parameters:
roster- the loaded roster.
-
userCreated
public void userCreated(User user, Map<String,Object> params)
Description copied from interface:UserEventListenerA user was created.- Specified by:
userCreatedin interfaceUserEventListener- Parameters:
user- the user.params- event parameters.
-
userModified
public void userModified(User user, Map<String,Object> params)
Description copied from interface:UserEventListenerA user's name, email, or an extended property was changed.- Specified by:
userModifiedin interfaceUserEventListener- Parameters:
user- the user.params- event parameters.
-
getIdentities
public Iterator<org.dom4j.Element> getIdentities(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an Iterator (of Element) with the target entity's identities. Each Element must include the categoty, type and name attributes of the entity.- Specified by:
getIdentitiesin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an Iterator (of Element) with the target entity's identities.
-
getFeatures
public Iterator<String> getFeatures(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an Iterator (of String) with the supported features. The features to include are the features offered and supported protocols by the target entity identified by the requested name and node.- Specified by:
getFeaturesin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an Iterator (of String) with the supported features.
-
getExtendedInfo
public org.xmpp.forms.DataForm getExtendedInfo(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an XDataForm with the extended information about the entity or null if none. Each bit of information about the entity must be included as a value of a field of the form.- Specified by:
getExtendedInfoin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an XDataForm with the extended information about the entity or null if none.
-
getExtendedInfos
public Set<org.xmpp.forms.DataForm> getExtendedInfos(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns a collection of XDataForm with the extended information about the entity or an empty collection if none. Each bit of information about the entity must be included as a value of a field of the form.- Specified by:
getExtendedInfosin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- A collection of XDataForms with the extended information about the entity or an empty collection if none.
-
hasInfo
public boolean hasInfo(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns true if we can provide information related to the requested name and node. For example, if the requested name refers to a non-existant MUC room then the answer will be false. In case that the sender of the disco request is not authorized to discover this information an UnauthorizedException will be thrown.- Specified by:
hasInfoin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- true if we can provide information related to the requested name and node.
-
-