Interface MUCRole

  • All Known Implementing Classes:
    LocalMUCRole, RemoteMUCRole

    public interface MUCRole
    Defines the permissions and actions that a MUCUser may use in a particular room. Each MUCRole defines the relationship between a MUCRoom and a MUCUser.

    MUCUsers can play different roles in different chatrooms.

    Author:
    Gaston Dombiak
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static org.slf4j.Logger Log  
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default void augmentOutboundStanzaWithFMUCData​(org.xmpp.packet.Packet packet)
      When sending data to a user that joined the room through FMUC (when the user is a user that is local to a remote chatroom that joined our room as a 'joining FMUC node'), then we'll need to add an 'fmuc' element to all data that we send it.
      void changeNickname​(String nickname)
      Changes the nickname of the occupant within the room to the new nickname.
      void destroy()
      Destroys this role after the occupant left the room.
      MUCRole.Affiliation getAffiliation()
      Obtain the affiliation state of the user.
      MUCRoom getChatRoom()
      Obtain the chat room that hosts this user's role.
      String getNickname()
      Obtain the nickname for the user in the chatroom.
      NodeID getNodeID()
      Returns the id of the node that is hosting the room occupant.
      org.xmpp.packet.Presence getPresence()
      Obtain the current presence status of a user in a chatroom.
      org.xmpp.packet.JID getReportedFmucAddress()
      Obtain the XMPPAddress representing this role in a room in context of FMUC.
      MUCRole.Role getRole()
      Obtain the role state of the user.
      org.xmpp.packet.JID getRoleAddress()
      Obtain the XMPPAddress representing this role in a room: room@server/nickname
      org.xmpp.packet.JID getUserAddress()
      Obtain the XMPPAddress of the user that joined the room.
      boolean isLocal()
      Returns true if this room occupant is hosted by this JVM.
      default boolean isRemoteFmuc()
      Returns true if the user is one that is in the room as a result of that user being in another room that is federated with this room, through the FMUC protocol
      boolean isVoiceOnly()
      Returns true if the room occupant does not want to get messages broadcasted to all room occupants.
      void send​(org.xmpp.packet.Packet packet)
      Sends a packet to the user.
      void setAffiliation​(MUCRole.Affiliation newAffiliation)
      Call this method to promote or demote a user's affiliation in a chatroom.
      void setPresence​(org.xmpp.packet.Presence presence)
      Set the current presence status of a user in a chatroom.
      void setRole​(MUCRole.Role newRole)
      Call this method to promote or demote a user's role in a chatroom.
    • Field Detail

      • Log

        static final org.slf4j.Logger Log
    • Method Detail

      • getPresence

        org.xmpp.packet.Presence getPresence()
        Obtain the current presence status of a user in a chatroom.
        Returns:
        The presence of the user in the room.
      • setPresence

        void setPresence​(org.xmpp.packet.Presence presence)
        Set the current presence status of a user in a chatroom.
        Parameters:
        presence - The presence of the user in the room.
      • setRole

        void setRole​(MUCRole.Role newRole)
              throws NotAllowedException
        Call this method to promote or demote a user's role in a chatroom. It is common for the chatroom or other chat room members to change the role of users (a moderator promoting another user to moderator status for example).

        Owning ChatUsers should have their membership roles updated.

        Parameters:
        newRole - The new role that the user will play.
        Throws:
        NotAllowedException - Thrown if trying to change the moderator role to an owner or administrator.
      • getRole

        MUCRole.Role getRole()
        Obtain the role state of the user.
        Returns:
        The role status of this user.
      • setAffiliation

        void setAffiliation​(MUCRole.Affiliation newAffiliation)
                     throws NotAllowedException
        Call this method to promote or demote a user's affiliation in a chatroom.
        Parameters:
        newAffiliation - the new affiliation that the user will play.
        Throws:
        NotAllowedException - thrown if trying to ban an owner or an administrator.
      • getAffiliation

        MUCRole.Affiliation getAffiliation()
        Obtain the affiliation state of the user.
        Returns:
        The affiliation status of this user.
      • changeNickname

        void changeNickname​(String nickname)
        Changes the nickname of the occupant within the room to the new nickname.
        Parameters:
        nickname - the new nickname of the occupant in the room.
      • getNickname

        String getNickname()
        Obtain the nickname for the user in the chatroom.
        Returns:
        The user's nickname in the room or null if invisible.
      • destroy

        void destroy()
        Destroys this role after the occupant left the room. This role will be removed from MUCUser.
      • isVoiceOnly

        boolean isVoiceOnly()
        Returns true if the room occupant does not want to get messages broadcasted to all room occupants. This type of users are called "deaf" occupants. Deaf occupants will still be able to get private messages, presences, IQ packets or room history.

        To be a deaf occupant the initial presence sent to the room while joining the room has to include the following child element:

         <x xmlns='http://jivesoftware.org/protocol/muc'>
             <deaf-occupant/>
         </x>
         
        Note that this is a custom extension to the MUC specification.
        Returns:
        true if the room occupant does not want to get messages broadcasted to all room occupants.
      • getChatRoom

        MUCRoom getChatRoom()
        Obtain the chat room that hosts this user's role.
        Returns:
        The chatroom hosting this role.
      • getRoleAddress

        org.xmpp.packet.JID getRoleAddress()
        Obtain the XMPPAddress representing this role in a room: room@server/nickname
        Returns:
        The Jabber ID that represents this role in the room.
      • getUserAddress

        org.xmpp.packet.JID getUserAddress()
        Obtain the XMPPAddress of the user that joined the room. A null null value represents the room's role.
        Returns:
        The address of the user that joined the room or null if this role belongs to the room itself.
      • getReportedFmucAddress

        org.xmpp.packet.JID getReportedFmucAddress()
        Obtain the XMPPAddress representing this role in a room in context of FMUC. This typically represents the XMPPAddress as it is known locally at the joining FMUC node. For users that are joined through FMUC from a remote node, this method will return the value as reported by the joining FMUC node. For users that are in the room, but connected directly to this instance of Openfire, this method returns null, even if the room is part of an FMUC node. Users that joined through server-to-server federation (as opposed to FMUC), will not have a FMUC address. Null is returned by this method for these users.
        Returns:
        The address of the user that joined the room through FMUC from a remote domain, or null.
      • isRemoteFmuc

        default boolean isRemoteFmuc()
        Returns true if the user is one that is in the room as a result of that user being in another room that is federated with this room, through the FMUC protocol
        Returns:
        true if this user is a user on a remote MUC room that is federated with this chatroom.
      • isLocal

        boolean isLocal()
        Returns true if this room occupant is hosted by this JVM.
        Returns:
        true if this room occupant is hosted by this JVM
      • getNodeID

        NodeID getNodeID()
        Returns the id of the node that is hosting the room occupant.
        Returns:
        the id of the node that is hosting the room occupant.
      • send

        void send​(org.xmpp.packet.Packet packet)
        Sends a packet to the user.
        Parameters:
        packet - The packet to send
      • augmentOutboundStanzaWithFMUCData

        default void augmentOutboundStanzaWithFMUCData​(@Nonnull
                                                       org.xmpp.packet.Packet packet)
        When sending data to a user that joined the room through FMUC (when the user is a user that is local to a remote chatroom that joined our room as a 'joining FMUC node'), then we'll need to add an 'fmuc' element to all data that we send it. The data that is to be added must include the 'from' address representing the FMUC role for the occupant that sent the stanza. We either use the reported FMUC address as passed down from other FMUC nodes, or we use the address of users connected locally to our server. This method will add an 'fmuc' child element to the stanza when the user is a user that joined through FMUC (is a member of a room that federates with the MUC room local to our server). If the provided stanza already contains an FMUC element with relevant data, this data is left unchanged.
        Parameters:
        packet - The stanza to augment