
uk.org.retep.xmpp.muc.logic.RoomQueryLogic Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package uk.org.retep.xmpp.muc.logic;
import java.util.List;
import uk.org.retep.util.messaging.MessageException;
import uk.org.retep.xmpp.JID;
import uk.org.retep.xmpp.XMPPServer;
import uk.org.retep.xmpp.logic.UnexpectedMessageLogic;
import uk.org.retep.xmpp.logic.XMPPLogic;
import uk.org.retep.xmpp.logic.XMPPProtocolLogic;
import uk.org.retep.xmpp.message.Iq;
import uk.org.retep.xmpp.message.Message;
import uk.org.retep.xmpp.util.MessageFactory;
import uk.org.retep.xmpp.message.Presence;
import uk.org.retep.xmpp.message.Stanza;
import uk.org.retep.xmpp.muc.MucFeature;
import uk.org.retep.xmpp.muc.MucRoom;
import uk.org.retep.xmpp.muc.MucService;
/**
* XEP-0045 6.1 Discovering Component Support for MUC
*
* @author peter
*/
public enum RoomQueryLogic
implements XMPPProtocolLogic
{
/**
* XEP-0045 6.3 Querying for Room Information
*/
ROOM_INFO
{
@Override
public Class> getProtocol()
{
return org.jabber.protocol.disco_info.Query.class;
}
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Iq iq )
throws MessageException
{
final org.jabber.protocol.disco_info.QueryBuilder items = new org.jabber.protocol.disco_info.QueryBuilder();
items.addIdentity( room.getSubject(), "conference", "text", null );
for( MucFeature feature : room.getFeatures() )
{
feature.add( items );
}
server.send( iq.getResponseBuilder().addContent( items ) );
return null;
}
},
/**
* XEP-0045 6.4 Querying for Room Items
*/
ROOM_ITEMS
{
@Override
public Class> getProtocol()
{
return org.jabber.protocol.disco_items.Query.class;
}
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Iq iq )
throws MessageException
{
// After Example 9 it states that this list contains the membership
// only if the information is publically available. So is this a
// MucFeature type and which one?
// if( public ) {
final org.jabber.protocol.disco_items.QueryBuilder query = new org.jabber.protocol.disco_items.QueryBuilder();
// Copy so we don't accidentally corrupt it and no locking from
// Terracotta
final JID roomJid = room.getJid().copyWithoutResource();
for( String member : room.getMemberNicknames() )
{
query.addItem( null,
null,
roomJid.copy().setResource( member ),
null);
}
// } // if( public )
server.send( iq.getResponseBuilder().addContent( query ) );
return null;
}
};
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Message message )
throws MessageException
{
return UnexpectedMessageLogic.INSTANCE;
}
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Presence presence )
throws MessageException
{
return UnexpectedMessageLogic.INSTANCE;
}
@Override
public XMPPLogic process( final XMPPServer server,
final MucService service,
final MucRoom room,
final Stanza stanza )
throws MessageException
{
return UnexpectedMessageLogic.INSTANCE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy