
uk.org.retep.xmpp.muc.builder.MucRoomLogicBuilder Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.org.retep.xmpp.muc.builder;
import uk.org.retep.xmpp.builder.AbstractProtocolLogicSetBuilder;
import uk.org.retep.xmpp.builder.XMPPLogicBuilder;
import uk.org.retep.xmpp.muc.MucRoom;
import uk.org.retep.xmpp.muc.MucService;
import uk.org.retep.xmpp.muc.logic.RoomQueryLogic;
import uk.org.retep.xmpp.muc.room.JoinExistingRoomLogic;
import uk.org.retep.xmpp.muc.room.LeaveRoomLogic;
import uk.org.retep.xmpp.muc.room.relay.BasicMessageRelayLogic;
/**
* {@link XMPPLogicBuilder} implementation for building logic for handling rooms
* that currently exist
*
* @author peter
* @since 9.12
*/
public class MucRoomLogicBuilder
extends AbstractProtocolLogicSetBuilder
{
/**
* Use {@link MucServiceBuilder#getMucRoomLogicBuilder()
*/
public MucRoomLogicBuilder()
{
}
/**
* Adds the various components needed for a basic Muc implementation.
*
* @param Type of this builder
* @return this instance
*/
@Override
public T addDefaultLogic()
{
addBasicMessageRelayLogic();
addLeaveRoomLogic();
addJoinExistingRoomLogic();
addRoomInfoQuery();
addRoomItemsQuery();
@SuppressWarnings( "unchecked" )
final T ret = (T) this;
return ret;
}
/**
* Adds a Basic message relay algorithm to the service - i.e. one message
* per room occupant is sent
*
* @return this instance
*/
public MucRoomLogicBuilder addBasicMessageRelayLogic()
{
return addXMPPLogic( BasicMessageRelayLogic.getInstance() );
}
/**
* Adds logic to enable a room occupant to leave a room
*
* @return this instance
*/
public MucRoomLogicBuilder addLeaveRoomLogic()
{
return addXMPPLogic( LeaveRoomLogic.getInstance() );
}
/**
* Adds logic to allow a user to enter a room
*
* @return this instance
*/
public MucRoomLogicBuilder addJoinExistingRoomLogic()
{
return addXMPPLogic( JoinExistingRoomLogic.getInstance() );
}
/**
* Adds logic to enable a client to query a rooms information
*
* @return this instance
*/
public MucRoomLogicBuilder addRoomInfoQuery()
{
return addXMPPLogic( RoomQueryLogic.ROOM_INFO );
}
/**
* Adds logic to enable a client to query a room's items - specifically
* the members of a room
*
* @return this instance
*/
public MucRoomLogicBuilder addRoomItemsQuery()
{
return addXMPPLogic( RoomQueryLogic.ROOM_ITEMS );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy