
uk.org.retep.xmpp.muc.room.AbstractRoomBroadcast Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.org.retep.xmpp.muc.room;
import javax.xml.bind.JAXBElement;
import org.jabber.protocol.nick.NickBuilder;
import uk.org.retep.util.messaging.MessageException;
import uk.org.retep.xmpp.builder.PresenceBuilder;
import uk.org.retep.xmpp.logic.AbstractXMPPLogic;
import uk.org.retep.xmpp.logic.XMPPLogic;
import uk.org.retep.xmpp.message.Presence;
import uk.org.retep.xmpp.muc.MucRoom;
import uk.org.retep.xmpp.muc.MucRoomMember;
import uk.org.retep.xmpp.muc.MucService;
/**
* {@link XMPPLogic} implementation created by another to generate responses
* for when a user joins a chat room
*
* @author peter
*/
public abstract class AbstractRoomBroadcast
extends AbstractXMPPLogic
{
/**
* Returns a Presence that can be used as some response. It will have the
* correct muc#user.X element set with the details for the supplied
* MucRoomMember applied.
*
* Note you need to set the from/to attributes on Presence, the default will
* be the to/from pair from the passed instance.
*
* @param presence Presence to base the response on
* @param member MucRoomMember
* @param nonAnon true if the room is not anonymous
* @param nickname Nickname or null
* @return
* @throws uk.org.retep.util.messaging.MessageException
*/
protected final PresenceBuilder createMembershipPresence(
final Presence presence,
final MucRoomMember member,
final boolean nonAnon,
final String nickname )
throws MessageException
{
final org.jabber.protocol.muc_user.ItemBuilder item = new org.jabber.protocol.muc_user.ItemBuilder();
item.setAffiliation( member.getAffiliation() ).
setRole( member.getRole() ). // Nickname change
setNick( nickname );
if( nonAnon )
{
item.setJid( member.getJID() );
}
final org.jabber.protocol.muc_user.XBuilder x = new org.jabber.protocol.muc_user.XBuilder();
x.add( item );
final PresenceBuilder p = presence.getResponseBuilder();
p.addContent( x );
// XEP-0172 persistent Nickname support
final String persistentNickname = member.getPersistentNickname();
if( persistentNickname != null )
{
p.addContent( new NickBuilder().setValue( persistentNickname ) );
}
return p;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy