Class IQHandler
- java.lang.Object
-
- org.jivesoftware.openfire.container.BasicModule
-
- org.jivesoftware.openfire.handler.IQHandler
-
- All Implemented Interfaces:
ChannelHandler
,Module
- Direct Known Subclasses:
AdHocCommandHandler
,IQBindHandler
,IQBlockingHandler
,IQDiscoInfoHandler
,IQDiscoItemsHandler
,IQEntityTimeHandler
,IQLastActivityHandler
,IQMessageCarbonsHandler
,IQMUCvCardHandler
,IQOfflineMessagesHandler
,IQPEPHandler
,IQPEPOwnerHandler
,IQPingHandler
,IQPrivacyHandler
,IQPrivateHandler
,IQRegisterHandler
,IQRosterHandler
,IQSessionEstablishmentHandler
,IQSharedGroupHandler
,IQvCardHandler
,IQVersionHandler
public abstract class IQHandler extends BasicModule implements ChannelHandler
Base class whose main responsibility is to handle IQ packets. Subclasses may only need to specify the IQHandlerInfo (i.e. name and namespace of the packets to handle) and actually handle the IQ packet. Simplifies creation of simple TYPE_IQ message handlers.- Author:
- Gaston Dombiak
-
-
Field Summary
Fields Modifier and Type Field Description protected PacketDeliverer
deliverer
protected SessionManager
sessionManager
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract IQHandlerInfo
getInfo()
Returns the handler information to help generically handle IQ packets.abstract org.xmpp.packet.IQ
handleIQ(org.xmpp.packet.IQ packet)
Handles the received IQ packet.void
initialize(XMPPServer server)
Initializes the basic module.boolean
performNoSuchUserCheck()
RFC 6121 8.5.1.void
process(org.xmpp.packet.Packet packet)
Process an XMPP packet.Optional<org.xmpp.packet.IQ>
processNoSuchUserCheck(org.xmpp.packet.IQ iq)
Performs the check as defined in RFC 6121 8.5.1.-
Methods inherited from class org.jivesoftware.openfire.container.BasicModule
destroy, getName, start, stop
-
-
-
-
Field Detail
-
deliverer
protected PacketDeliverer deliverer
-
sessionManager
protected SessionManager sessionManager
-
-
Constructor Detail
-
IQHandler
public IQHandler(String moduleName)
Create a basic module with the given name.- Parameters:
moduleName
- The name for the module or null to use the default
-
-
Method Detail
-
performNoSuchUserCheck
public boolean performNoSuchUserCheck()
RFC 6121 8.5.1. "No Such User" specifies how the server must respond to a request made against a non-existing user. The abstract IQ Handler plugin can act accordingly, but allows implementations to override this behavior. By default, Openfire will perform a non-existing user check and act according to the RFC 6121. Subclasses can disable this behavior by overriding this method, and returning 'false'.- Returns:
- 'true' if the Abstract IQ Handler implementation should detect if the IQ request is made against a non-existing user and return an error.
- See Also:
- RFC 6121 8.5.1. "No Such User", OF-880
-
processNoSuchUserCheck
public Optional<org.xmpp.packet.IQ> processNoSuchUserCheck(org.xmpp.packet.IQ iq)
Performs the check as defined in RFC 6121 8.5.1. "No Such User":If the 'to' address specifies a bare JID
or full JID where the domainpart of the JID matches a configured domain that is serviced by the server itself, the server MUST proceed as follows. [...] If the user account identified by the 'to' attribute does not exist, how the stanza is processed depends on the stanza type. [...] For an IQ stanza, the server MUST return a stanza error to the sender. - See Also:
- RFC 6121 8.5.1. "No Such User"
-
process
public void process(org.xmpp.packet.Packet packet) throws PacketException
Description copied from interface:ChannelHandler
Process an XMPP packet.- Specified by:
process
in interfaceChannelHandler
- Parameters:
packet
- a packet to process.- Throws:
PacketException
- thrown if the packet is malformed (results in the sender's session being shutdown).
-
handleIQ
public abstract org.xmpp.packet.IQ handleIQ(org.xmpp.packet.IQ packet) throws UnauthorizedException
Handles the received IQ packet.- 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.
-
getInfo
public abstract IQHandlerInfo getInfo()
Returns the handler information to help generically handle IQ packets. IQHandlers that aren't local server iq handlers (e.g. chatbots, transports, etc) returnnull
.- Returns:
- The IQHandlerInfo for this handler
-
initialize
public void initialize(XMPPServer server)
Description copied from class:BasicModule
Initializes the basic module.
Inheriting classes that choose to override this method MUST call this initialize() method before accessing BasicModule resources.
- Specified by:
initialize
in interfaceModule
- Overrides:
initialize
in classBasicModule
- Parameters:
server
- the server hosting this module.
-
-