Class LocalMUCRole

  • All Implemented Interfaces:
    MUCRole

    public class LocalMUCRole
    extends Object
    implements MUCRole
    Implementation of a local room occupant.
    Author:
    Gaston Dombiak
    • Constructor Detail

      • LocalMUCRole

        public LocalMUCRole​(MultiUserChatService chatserver,
                            LocalMUCRoom chatroom,
                            String nickname,
                            MUCRole.Role role,
                            MUCRole.Affiliation affiliation,
                            LocalMUCUser chatuser,
                            org.xmpp.packet.Presence presence,
                            PacketRouter packetRouter)
        Create a new role.
        Parameters:
        chatserver - the server hosting the role.
        chatroom - the room the role is valid in.
        nickname - the nickname of the user in the role.
        role - the role of the user in the room.
        affiliation - the affiliation of the user in the room.
        chatuser - the user on the chat server.
        presence - the presence sent by the user to join the room.
        packetRouter - the packet router for sending messages from this role.
    • Method Detail

      • getPresence

        public org.xmpp.packet.Presence getPresence()
        Description copied from interface: MUCRole
        Obtain the current presence status of a user in a chatroom.
        Specified by:
        getPresence in interface MUCRole
        Returns:
        The presence of the user in the room.
      • setPresence

        public void setPresence​(org.xmpp.packet.Presence newPresence)
        Description copied from interface: MUCRole
        Set the current presence status of a user in a chatroom.
        Specified by:
        setPresence in interface MUCRole
        Parameters:
        newPresence - The presence of the user in the room.
      • setRole

        public void setRole​(MUCRole.Role newRole)
                     throws NotAllowedException
        Description copied from interface: MUCRole
        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.

        Specified by:
        setRole in interface MUCRole
        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

        public MUCRole.Role getRole()
        Description copied from interface: MUCRole
        Obtain the role state of the user.
        Specified by:
        getRole in interface MUCRole
        Returns:
        The role status of this user.
      • setAffiliation

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

        public MUCRole.Affiliation getAffiliation()
        Description copied from interface: MUCRole
        Obtain the affiliation state of the user.
        Specified by:
        getAffiliation in interface MUCRole
        Returns:
        The affiliation status of this user.
      • getNickname

        public String getNickname()
        Description copied from interface: MUCRole
        Obtain the nickname for the user in the chatroom.
        Specified by:
        getNickname in interface MUCRole
        Returns:
        The user's nickname in the room or null if invisible.
      • changeNickname

        public void changeNickname​(String nickname)
        Description copied from interface: MUCRole
        Changes the nickname of the occupant within the room to the new nickname.
        Specified by:
        changeNickname in interface MUCRole
        Parameters:
        nickname - the new nickname of the occupant in the room.
      • destroy

        public void destroy()
        Description copied from interface: MUCRole
        Destroys this role after the occupant left the room. This role will be removed from MUCUser.
        Specified by:
        destroy in interface MUCRole
      • getChatRoom

        public MUCRoom getChatRoom()
        Description copied from interface: MUCRole
        Obtain the chat room that hosts this user's role.
        Specified by:
        getChatRoom in interface MUCRole
        Returns:
        The chatroom hosting this role.
      • getRoleAddress

        public org.xmpp.packet.JID getRoleAddress()
        Description copied from interface: MUCRole
        Obtain the XMPPAddress representing this role in a room: room@server/nickname
        Specified by:
        getRoleAddress in interface MUCRole
        Returns:
        The Jabber ID that represents this role in the room.
      • getUserAddress

        public org.xmpp.packet.JID getUserAddress()
        Description copied from interface: MUCRole
        Obtain the XMPPAddress of the user that joined the room. A null null value represents the room's role.
        Specified by:
        getUserAddress in interface MUCRole
        Returns:
        The address of the user that joined the room or null if this role belongs to the room itself.
      • getReportedFmucAddress

        public org.xmpp.packet.JID getReportedFmucAddress()
        Description copied from interface: MUCRole
        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.
        Specified by:
        getReportedFmucAddress in interface MUCRole
        Returns:
        The address of the user that joined the room through FMUC from a remote domain, or null.
      • setReportedFmucAddress

        public void setReportedFmucAddress​(@Nonnull
                                           org.xmpp.packet.JID reportedFmucAddress)
      • isLocal

        public boolean isLocal()
        Description copied from interface: MUCRole
        Returns true if this room occupant is hosted by this JVM.
        Specified by:
        isLocal in interface MUCRole
        Returns:
        true if this room occupant is hosted by this JVM
      • getNodeID

        public NodeID getNodeID()
        Description copied from interface: MUCRole
        Returns the id of the node that is hosting the room occupant.
        Specified by:
        getNodeID in interface MUCRole
        Returns:
        the id of the node that is hosting the room occupant.
      • isVoiceOnly

        public boolean isVoiceOnly()
        Description copied from interface: MUCRole
        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.
        Specified by:
        isVoiceOnly in interface MUCRole
        Returns:
        true if the room occupant does not want to get messages broadcasted to all room occupants.
      • send

        public void send​(org.xmpp.packet.Packet packet)
        Description copied from interface: MUCRole
        Sends a packet to the user.
        Specified by:
        send in interface MUCRole
        Parameters:
        packet - The packet to send
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object