Class MultiUserChatServiceImpl
- java.lang.Object
-
- org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl
-
- All Implemented Interfaces:
DiscoInfoProvider,DiscoItemsProvider,ServerItemsProvider,MultiUserChatService,XMPPServerListener,org.xmpp.component.Component
public class MultiUserChatServiceImpl extends Object implements org.xmpp.component.Component, MultiUserChatService, ServerItemsProvider, DiscoInfoProvider, DiscoItemsProvider, XMPPServerListener
Implements the chat server as a cached memory resident chat server. The server is also responsible for responding Multi-User Chat disco requests as well as removing inactive users from the rooms after a period of time and to maintain a log of the conversation in the rooms that require to log their conversations. The conversations log is saved to the database using a separate process.Temporary rooms are held in memory as long as they have occupants. They will be destroyed after the last occupant left the room. On the other hand, persistent rooms are always present in memory even after the last occupant left the room. In order to keep memory clean of persistent rooms that have been forgotten or abandoned this class includes a clean up process. The clean up process will remove from memory rooms that haven't had occupants for a while. Moreover, forgotten or abandoned rooms won't be loaded into memory when the Multi-User Chat service starts up.
- Author:
- Gaston Dombiak
-
-
Constructor Summary
Constructors Constructor Description MultiUserChatServiceImpl(String subdomain, String description, Boolean isHidden)Create a new group chat server.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddExtraFeature(String feature)Adds an extra Disco feature to the list of features returned for the conference service.voidaddExtraIdentity(String category, String name, String type)Adds an extra Disco identity to the list of identities returned for the conference service.voidaddIQHandler(IQHandler iqHandler)Add a IQHandler to MUC rooms and services.voidaddSysadmin(org.xmpp.packet.JID userJID)Adds a new system administrator of the MUC service.voidaddSysadmins(Collection<org.xmpp.packet.JID> userJIDs)Adds multiple system administrators for the MUC service.voidaddUserAllowedToCreate(org.xmpp.packet.JID userJID)Adds a new user/group to the list of JIDs that are allowed to create MUC rooms.voidaddUsersAllowedToCreate(Collection<org.xmpp.packet.JID> userJIDs)Adds new users/groups to the list of JIDs that are allowed to create MUC rooms.voidchatRoomAdded(LocalMUCRoom room)Notification message indicating that a chat room has been created in another cluster member.voidchatRoomRemoved(LocalMUCRoom room)Notification message indicating that the specified chat room was removed from some other cluster member.voidenableService(boolean enabled, boolean persistent)Enables or disables the MUC service.org.xmpp.packet.JIDgetAddress()ArchivergetArchiver()Accessor uses the "double-check idiom" for proper lazy instantiation.MUCRoomgetChatRoom(String roomName)Obtains a chatroom by name.MUCRoomgetChatRoom(String roomName, org.xmpp.packet.JID userjid)Obtains a chatroom by name.List<MUCRoom>getChatRooms()Retuns a list with a snapshot of all the rooms in the server (i.e.StringgetDescription()org.xmpp.forms.DataFormgetExtendedInfo(String name, String node, org.xmpp.packet.JID senderJID)Returns an XDataForm with the extended information about the entity or null if none.Set<org.xmpp.forms.DataForm>getExtendedInfos(String name, String node, org.xmpp.packet.JID senderJID)Returns a collection of XDataForm with the extended information about the entity or an empty collection if none.Iterator<String>getFeatures(String name, String node, org.xmpp.packet.JID senderJID)Returns an Iterator (of String) with the supported features.HistoryStrategygetHistoryStrategy()Obtain the server-wide default message history settings.Iterator<org.dom4j.Element>getIdentities(String name, String node, org.xmpp.packet.JID senderJID)Returns an Iterator (of Element) with the target entity's identities.longgetIncomingMessageCount(boolean resetAfter)Returns the total number of incoming messages since last reset.Iterator<DiscoServerItem>getItems()Returns an Iterator (of DiscoServerItem) with the items associated with the server or null if none.Iterator<DiscoItem>getItems(String name, String node, org.xmpp.packet.JID senderJID)Returns an Iterator (of DiscoItem) with the target entity's items or null if none.intgetKickIdleUsersTimeout()Returns the time to elapse between clearing of idle chat users.LocalMUCRoomgetLocalChatRoom(String roomName)DurationgetLogBatchGracePeriod()Returns the maximum time to wait for a next incoming entry before writing the batch to the database.intgetLogConversationBatchSize()Deprecated.UsegetLogMaxConversationBatchSize()instead.DurationgetLogMaxBatchInterval()Returns the maximum time allowed to elapse between writing archive entries to the database.intgetLogMaxConversationBatchSize()Returns the maximum number of messages to save to the database on each run of the archiving process.MUCEventDelegategetMUCDelegate()Gets the MUC event delegate handler for this service.Collection<MUCRole>getMUCRoles(org.xmpp.packet.JID user)Returns the list ofMUCRolein all rooms for the specified user's session.StringgetName()intgetNumberChatRooms()Retuns the number of existing rooms in the server (i.e.intgetNumberConnectedUsers(boolean onlyLocal)Retuns the total number of occupants in all rooms in the server.intgetNumberRoomOccupants()Retuns the total number of users that have joined in all rooms in the server.longgetOutgoingMessageCount(boolean resetAfter)Returns the total number of outgoing messages since last reset.StringgetServiceDomain()Returns the fully-qualifed domain name of this chat service.StringgetServiceName()Returns the subdomain of the chat service.Collection<org.xmpp.packet.JID>getSysadmins()Returns the collection of JIDs that are system administrators of the MUC service.longgetTotalChatTime()Returns the total chat time of all rooms combined.intgetUserIdleTime()Returns the number of milliseconds a user must be idle before he/she gets kicked from all the rooms.Collection<org.xmpp.packet.JID>getUsersAllowedToCreate()Returns the collection of JIDs that are allowed to create MUC rooms.booleanhasChatRoom(String roomName)Returns true if the server includes a chatroom with the requested name.booleanhasInfo(String name, String node, org.xmpp.packet.JID senderJID)Returns true if we can provide information related to the requested name and node.voidinitialize(XMPPServer server)voidinitialize(org.xmpp.packet.JID jid, org.xmpp.component.ComponentManager componentManager)voidinitializeSettings()booleanisAllowToDiscoverLockedRooms()Returns the flag that indicates if the service should provide information about locked rooms when handling service discovery requests.booleanisAllowToDiscoverMembersOnlyRooms()Returns the flag that indicates if the service should provide information about non-public members-only rooms when handling service discovery requests.booleanisAllRegisteredUsersAllowedToCreate()Sets if all registered users of Openfire are allowed to create rooms.booleanisHidden()Returns true if the MUC service is a hidden, externally managed, service.booleanisRoomCreationRestricted()Returns false if anyone can create rooms or true if only the returned JIDs ingetUsersAllowedToCreateare allowed to create rooms.booleanisServiceEnabled()Returns true if the MUC service is available.booleanisSysadmin(org.xmpp.packet.JID bareJID)Validates the given JID as a MUC service administrator.voidlogConversation(MUCRoom room, org.xmpp.packet.Message message, org.xmpp.packet.JID sender)Logs that a given message was sent to a room as part of a conversation.voidmessageBroadcastedTo(int numOccupants)Notification message indicating the server that an incoming message was broadcasted to a given number of occupants.voidprocessPacket(org.xmpp.packet.Packet packet)voidrefreshChatRoom(String roomName)Forces a re-read of the room.voidremoveChatRoom(String roomName)Removes the room associated with the given name.voidremoveExtraFeature(String feature)Removes an extra Disco feature from the list of features returned for the conference service.voidremoveExtraIdentity(String name)Removes an extra Disco identity from the list of identities returned for the conference service.voidremoveIQHandler(IQHandler iqHandler)voidremoveSysadmin(org.xmpp.packet.JID userJID)Removes a system administrator of the MUC service.voidremoveUserAllowedToCreate(org.xmpp.packet.JID userJID)Removes a user/group from list of JIDs that are allowed to create MUC rooms.voidremoveUsersAllowedToCreate(Collection<org.xmpp.packet.JID> userJIDs)Removes users/groups from list of JIDs that are allowed to create MUC rooms.voidserverStarted()Notification message indicating that the server has been started.voidserverStopping()Notification message indication that the server is about to be stopped.voidsetAllowToDiscoverLockedRooms(boolean allowToDiscoverLockedRooms)Sets the flag that indicates if the service should provide information about locked rooms when handling service discovery requests.voidsetAllowToDiscoverMembersOnlyRooms(boolean allowToDiscoverMembersOnlyRooms)Sets the flag that indicates if the service should provide information about non-public members-only rooms when handling service discovery requests.voidsetAllRegisteredUsersAllowedToCreate(boolean allow)Sets if all registered users of Openfire are allowed to create rooms.voidsetDescription(String desc)voidsetKickIdleUsersTimeout(int timeout)Sets the time to elapse between clearing of idle chat users.voidsetLogBatchGracePeriod(Duration interval)Sets the maximum time to wait for a next incoming entry before writing the batch to the database.voidsetLogConversationBatchSize(int size)Deprecated.UsesetLogMaxConversationBatchSize(int)instead.voidsetLogMaxBatchInterval(Duration interval)Sets the maximum time allowed to elapse between writing archive batches to the database.voidsetLogMaxConversationBatchSize(int size)Sets the maximum number of messages to save to the database on each run of the archiving process.voidsetMUCDelegate(MUCEventDelegate delegate)Sets the MUC event delegate handler for this service.voidsetRoomCreationRestricted(boolean roomCreationRestricted)Sets if anyone can create rooms.voidsetUserIdleTime(int idleTime)Sets the number of milliseconds a user must be idle before he/she gets kicked from all the rooms.voidshutdown()voidstart()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jivesoftware.openfire.muc.MultiUserChatService
getLogConversationsTimeout, isPasswordRequiredForSysadminsToJoinRoom, setLogConversationsTimeout, setPasswordRequiredForSysadminsToJoinRoom
-
-
-
-
Constructor Detail
-
MultiUserChatServiceImpl
public MultiUserChatServiceImpl(String subdomain, String description, Boolean isHidden)
Create a new group chat server.- Parameters:
subdomain- Subdomain portion of the conference services (for example, conference for conference.example.org)description- Short description of service for disco and such. Ifnullor empty, a default value will be used.isHidden- True if this service should be hidden from services views.- Throws:
IllegalArgumentException- if the provided subdomain is an invalid, according to the JID domain definition.
-
-
Method Detail
-
addIQHandler
public void addIQHandler(IQHandler iqHandler)
Description copied from interface:MultiUserChatServiceAdd a IQHandler to MUC rooms and services. If the IQHandler only supports one or other, it should quietly ignore it.- Specified by:
addIQHandlerin interfaceMultiUserChatService- Parameters:
iqHandler- the IQ handler to add
-
removeIQHandler
public void removeIQHandler(IQHandler iqHandler)
- Specified by:
removeIQHandlerin interfaceMultiUserChatService
-
getDescription
public String getDescription()
- Specified by:
getDescriptionin interfaceorg.xmpp.component.Component
-
setDescription
public void setDescription(String desc)
-
processPacket
public void processPacket(org.xmpp.packet.Packet packet)
- Specified by:
processPacketin interfaceorg.xmpp.component.Component
-
initialize
public void initialize(org.xmpp.packet.JID jid, org.xmpp.component.ComponentManager componentManager)- Specified by:
initializein interfaceorg.xmpp.component.Component
-
shutdown
public void shutdown()
- Specified by:
shutdownin interfaceorg.xmpp.component.Component
-
getServiceDomain
public String getServiceDomain()
Description copied from interface:MultiUserChatServiceReturns the fully-qualifed domain name of this chat service. The domain is composed by the service name and the name of the XMPP server where the service is running.- Specified by:
getServiceDomainin interfaceMultiUserChatService- Returns:
- the chat server domain (service name + host name).
-
getAddress
public org.xmpp.packet.JID getAddress()
-
serverStarted
public void serverStarted()
Description copied from interface:XMPPServerListenerNotification message indicating that the server has been started. At this point all server modules have been initialized and started. Message sending and receiving is now possible. However, some plugins may still be pending to be loaded.- Specified by:
serverStartedin interfaceXMPPServerListener
-
serverStopping
public void serverStopping()
Description copied from interface:XMPPServerListenerNotification message indication that the server is about to be stopped. At this point all modules are still running so all services are still available.- Specified by:
serverStoppingin interfaceXMPPServerListener
-
getChatRoom
public MUCRoom getChatRoom(String roomName, org.xmpp.packet.JID userjid) throws NotAllowedException
Description copied from interface:MultiUserChatServiceObtains a chatroom by name. A chatroom is created for that name if none exists and the user has permission. The user that asked for the chatroom will be the room's owner if the chatroom was created.- Specified by:
getChatRoomin interfaceMultiUserChatService- Parameters:
roomName- Name of the room to get.userjid- The user's normal jid, not the chat nickname jid.- Returns:
- The chatroom for the given name.
- Throws:
NotAllowedException- If the caller doesn't have permission to create a new room.
-
getChatRoom
public MUCRoom getChatRoom(String roomName)
Description copied from interface:MultiUserChatServiceObtains a chatroom by name. If the chatroom does not exists then null will be returned.- Specified by:
getChatRoomin interfaceMultiUserChatService- Parameters:
roomName- Name of the room to get.- Returns:
- The chatroom for the given name or null if the room does not exists.
-
refreshChatRoom
public void refreshChatRoom(String roomName)
Description copied from interface:MultiUserChatServiceForces a re-read of the room. Useful when a change occurs externally.- Specified by:
refreshChatRoomin interfaceMultiUserChatService- Parameters:
roomName- Name of the room to refresh.
-
getLocalChatRoom
public LocalMUCRoom getLocalChatRoom(String roomName)
-
getChatRooms
public List<MUCRoom> getChatRooms()
Description copied from interface:MultiUserChatServiceRetuns a list with a snapshot of all the rooms in the server (i.e. persistent or not, in memory or not).- Specified by:
getChatRoomsin interfaceMultiUserChatService- Returns:
- a list with a snapshot of all the rooms.
-
hasChatRoom
public boolean hasChatRoom(String roomName)
Description copied from interface:MultiUserChatServiceReturns true if the server includes a chatroom with the requested name.- Specified by:
hasChatRoomin interfaceMultiUserChatService- Parameters:
roomName- the name of the chatroom to check.- Returns:
- true if the server includes a chatroom with the requested name.
-
removeChatRoom
public void removeChatRoom(String roomName)
Description copied from interface:MultiUserChatServiceRemoves the room associated with the given name.- Specified by:
removeChatRoomin interfaceMultiUserChatService- Parameters:
roomName- The room to remove.
-
chatRoomRemoved
public void chatRoomRemoved(LocalMUCRoom room)
Notification message indicating that the specified chat room was removed from some other cluster member.- Specified by:
chatRoomRemovedin interfaceMultiUserChatService- Parameters:
room- the removed room in another cluster node.
-
chatRoomAdded
public void chatRoomAdded(LocalMUCRoom room)
Notification message indicating that a chat room has been created in another cluster member.- Specified by:
chatRoomAddedin interfaceMultiUserChatService- Parameters:
room- the created room in another cluster node.
-
getServiceName
public String getServiceName()
Description copied from interface:MultiUserChatServiceReturns the subdomain of the chat service.- Specified by:
getServiceNamein interfaceMultiUserChatService- Returns:
- the subdomain of the chat service.
-
getName
public String getName()
- Specified by:
getNamein interfaceorg.xmpp.component.Component
-
getHistoryStrategy
public HistoryStrategy getHistoryStrategy()
Description copied from interface:MultiUserChatServiceObtain the server-wide default message history settings.- Specified by:
getHistoryStrategyin interfaceMultiUserChatService- Returns:
- The message history strategy defaults for the server.
-
getMUCRoles
public Collection<MUCRole> getMUCRoles(org.xmpp.packet.JID user)
Description copied from interface:MultiUserChatServiceReturns the list ofMUCRolein all rooms for the specified user's session. When running in a cluster the list will includeLocalMUCRoleandRemoteMUCRole.- Specified by:
getMUCRolesin interfaceMultiUserChatService- Parameters:
user- the full JID that identifies the session of the user.- Returns:
- the list of MUCRoles in all rooms for the specified user's session.
-
setKickIdleUsersTimeout
public void setKickIdleUsersTimeout(int timeout)
Description copied from interface:MultiUserChatServiceSets the time to elapse between clearing of idle chat users. ATimerTaskwill be added to aTimerscheduled for repeated fixed-delay execution whose main responsibility is to kick users that have been idle for a certain time. A user is considered idle if he/she didn't send any message to any group chat room for a certain amount of time. SeeMultiUserChatService.setUserIdleTime(int).- Specified by:
setKickIdleUsersTimeoutin interfaceMultiUserChatService- Parameters:
timeout- the time to elapse between clearing of idle chat users.
-
getKickIdleUsersTimeout
public int getKickIdleUsersTimeout()
Description copied from interface:MultiUserChatServiceReturns the time to elapse between clearing of idle chat users. A user is considered idle if he/she didn't send any message to any group chat room for a certain amount of time. SeeMultiUserChatService.getUserIdleTime().- Specified by:
getKickIdleUsersTimeoutin interfaceMultiUserChatService- Returns:
- the time to elapse between clearing of idle chat users.
-
setUserIdleTime
public void setUserIdleTime(int idleTime)
Description copied from interface:MultiUserChatServiceSets the number of milliseconds a user must be idle before he/she gets kicked from all the rooms. By idle we mean that the user didn't send any message to any group chat room.- Specified by:
setUserIdleTimein interfaceMultiUserChatService- Parameters:
idleTime- the amount of time to wait before considering a user idle.
-
getUserIdleTime
public int getUserIdleTime()
Description copied from interface:MultiUserChatServiceReturns the number of milliseconds a user must be idle before he/she gets kicked from all the rooms. By idle we mean that the user didn't send any message to any group chat room.- Specified by:
getUserIdleTimein interfaceMultiUserChatService- Returns:
- the amount of time to wait before considering a user idle.
-
getUsersAllowedToCreate
public Collection<org.xmpp.packet.JID> getUsersAllowedToCreate()
Description copied from interface:MultiUserChatServiceReturns the collection of JIDs that are allowed to create MUC rooms. WhenisAllRegisteredUsersAllowedToCreate, this method will not return a JID of every user in the system.- Specified by:
getUsersAllowedToCreatein interfaceMultiUserChatService- Returns:
- a list of user/group JIDs.
-
getSysadmins
public Collection<org.xmpp.packet.JID> getSysadmins()
Description copied from interface:MultiUserChatServiceReturns the collection of JIDs that are system administrators of the MUC service. A sysadmin has the same permissions as a room owner.- Specified by:
getSysadminsin interfaceMultiUserChatService- Returns:
- a list of user/group JIDs.
-
isSysadmin
public boolean isSysadmin(org.xmpp.packet.JID bareJID)
Description copied from interface:MultiUserChatServiceValidates the given JID as a MUC service administrator.- Specified by:
isSysadminin interfaceMultiUserChatService- Parameters:
bareJID- the bare JID of the user- Returns:
- true if the given JID is a MUC service administrator
-
addSysadmins
public void addSysadmins(Collection<org.xmpp.packet.JID> userJIDs)
Description copied from interface:MultiUserChatServiceAdds multiple system administrators for the MUC service. A sysadmin has the same permissions as a room owner.- Specified by:
addSysadminsin interfaceMultiUserChatService- Parameters:
userJIDs- the JIDs of the new users/groups to add as a system administrator.
-
addSysadmin
public void addSysadmin(org.xmpp.packet.JID userJID)
Description copied from interface:MultiUserChatServiceAdds a new system administrator of the MUC service. A sysadmin has the same permissions as a room owner.- Specified by:
addSysadminin interfaceMultiUserChatService- Parameters:
userJID- the bare JID of the new user/group to add as a system administrator.
-
removeSysadmin
public void removeSysadmin(org.xmpp.packet.JID userJID)
Description copied from interface:MultiUserChatServiceRemoves a system administrator of the MUC service.- Specified by:
removeSysadminin interfaceMultiUserChatService- Parameters:
userJID- the bare JID of the user/group to remove from the list.
-
isAllowToDiscoverMembersOnlyRooms
public boolean isAllowToDiscoverMembersOnlyRooms()
Returns the flag that indicates if the service should provide information about non-public members-only rooms when handling service discovery requests.- Returns:
- true if the service should provide information about non-public members-only rooms.
-
setAllowToDiscoverMembersOnlyRooms
public void setAllowToDiscoverMembersOnlyRooms(boolean allowToDiscoverMembersOnlyRooms)
Sets the flag that indicates if the service should provide information about non-public members-only rooms when handling service discovery requests.- Parameters:
allowToDiscoverMembersOnlyRooms- if the service should provide information about non-public members-only rooms.
-
isAllowToDiscoverLockedRooms
public boolean isAllowToDiscoverLockedRooms()
Returns the flag that indicates if the service should provide information about locked rooms when handling service discovery requests.- Returns:
- true if the service should provide information about locked rooms.
-
setAllowToDiscoverLockedRooms
public void setAllowToDiscoverLockedRooms(boolean allowToDiscoverLockedRooms)
Sets the flag that indicates if the service should provide information about locked rooms when handling service discovery requests. Note: Setting this flag in false is not compliant with the spec. A user may try to join a locked room thinking that the room doesn't exist because the user didn't discover it before.- Parameters:
allowToDiscoverLockedRooms- if the service should provide information about locked rooms.
-
isRoomCreationRestricted
public boolean isRoomCreationRestricted()
Description copied from interface:MultiUserChatServiceReturns false if anyone can create rooms or true if only the returned JIDs ingetUsersAllowedToCreateare allowed to create rooms.- Specified by:
isRoomCreationRestrictedin interfaceMultiUserChatService- Returns:
- true if only some JIDs are allowed to create rooms.
-
setRoomCreationRestricted
public void setRoomCreationRestricted(boolean roomCreationRestricted)
Description copied from interface:MultiUserChatServiceSets if anyone can create rooms. When set to true, users are allowed to create rooms only whenisAllRegisteredUsersAllowedToCreateorgetUsersAllowedToCreate(or both) allow them to.- Specified by:
setRoomCreationRestrictedin interfaceMultiUserChatService- Parameters:
roomCreationRestricted- whether anyone can create rooms or not.
-
isAllRegisteredUsersAllowedToCreate
public boolean isAllRegisteredUsersAllowedToCreate()
Description copied from interface:MultiUserChatServiceSets if all registered users of Openfire are allowed to create rooms. When true, anonymous users and users from other domains (through federation) are initially prohibited from creating rooms, but can still be allowed by registering their JIDs inaddUserAllowedToCreate.- Specified by:
isAllRegisteredUsersAllowedToCreatein interfaceMultiUserChatService- Returns:
- true if all registered users are allowed to create rooms.
-
setAllRegisteredUsersAllowedToCreate
public void setAllRegisteredUsersAllowedToCreate(boolean allow)
Description copied from interface:MultiUserChatServiceSets if all registered users of Openfire are allowed to create rooms.- Specified by:
setAllRegisteredUsersAllowedToCreatein interfaceMultiUserChatService- Parameters:
allow- whether all registered users can create rooms.
-
addUsersAllowedToCreate
public void addUsersAllowedToCreate(Collection<org.xmpp.packet.JID> userJIDs)
Description copied from interface:MultiUserChatServiceAdds new users/groups to the list of JIDs that are allowed to create MUC rooms.- Specified by:
addUsersAllowedToCreatein interfaceMultiUserChatService- Parameters:
userJIDs- collection of JIDs for users/groups to add to list.
-
addUserAllowedToCreate
public void addUserAllowedToCreate(org.xmpp.packet.JID userJID)
Description copied from interface:MultiUserChatServiceAdds a new user/group to the list of JIDs that are allowed to create MUC rooms.- Specified by:
addUserAllowedToCreatein interfaceMultiUserChatService- Parameters:
userJID- the JID of the new user/group to add to list.
-
removeUsersAllowedToCreate
public void removeUsersAllowedToCreate(Collection<org.xmpp.packet.JID> userJIDs)
Description copied from interface:MultiUserChatServiceRemoves users/groups from list of JIDs that are allowed to create MUC rooms.- Specified by:
removeUsersAllowedToCreatein interfaceMultiUserChatService- Parameters:
userJIDs- collection of JIDs of users/groups to remove from the list.
-
removeUserAllowedToCreate
public void removeUserAllowedToCreate(org.xmpp.packet.JID userJID)
Description copied from interface:MultiUserChatServiceRemoves a user/group from list of JIDs that are allowed to create MUC rooms.- Specified by:
removeUserAllowedToCreatein interfaceMultiUserChatService- Parameters:
userJID- the JID of the user/group to remove from the list.
-
initialize
public void initialize(XMPPServer server)
-
initializeSettings
public void initializeSettings()
-
setLogConversationBatchSize
@Deprecated public void setLogConversationBatchSize(int size)
Deprecated.UsesetLogMaxConversationBatchSize(int)instead.Property accessor temporarily retained for backward compatibility. The interface prescribes use ofsetLogMaxConversationBatchSize(int)- so please use that instead.- Specified by:
setLogConversationBatchSizein interfaceMultiUserChatService- Parameters:
size- the number of messages to save to the database on each run of the logging process.
-
getLogConversationBatchSize
@Deprecated public int getLogConversationBatchSize()
Deprecated.UsegetLogMaxConversationBatchSize()instead.Property accessor temporarily retained for backward compatibility. The interface prescribes use ofgetLogMaxConversationBatchSize()- so please use that instead.- Specified by:
getLogConversationBatchSizein interfaceMultiUserChatService- Returns:
- the number of messages to save to the database on each run of the logging process.
-
setLogMaxConversationBatchSize
public void setLogMaxConversationBatchSize(int size)
Sets the maximum number of messages to save to the database on each run of the archiving process. Even though the saving of queued conversations takes place in another thread it is not recommended specifying a big number.- Specified by:
setLogMaxConversationBatchSizein interfaceMultiUserChatService- Parameters:
size- the maximum number of messages to save to the database on each run of the archiving process.
-
getLogMaxConversationBatchSize
public int getLogMaxConversationBatchSize()
Returns the maximum number of messages to save to the database on each run of the archiving process.- Specified by:
getLogMaxConversationBatchSizein interfaceMultiUserChatService- Returns:
- the maximum number of messages to save to the database on each run of the archiving process.
-
setLogMaxBatchInterval
public void setLogMaxBatchInterval(Duration interval)
Sets the maximum time allowed to elapse between writing archive batches to the database.- Specified by:
setLogMaxBatchIntervalin interfaceMultiUserChatService- Parameters:
interval- the maximum time allowed to elapse between writing archive batches to the database.
-
getLogMaxBatchInterval
public Duration getLogMaxBatchInterval()
Returns the maximum time allowed to elapse between writing archive entries to the database.- Specified by:
getLogMaxBatchIntervalin interfaceMultiUserChatService- Returns:
- the maximum time allowed to elapse between writing archive entries to the database.
-
setLogBatchGracePeriod
public void setLogBatchGracePeriod(Duration interval)
Sets the maximum time to wait for a next incoming entry before writing the batch to the database.- Specified by:
setLogBatchGracePeriodin interfaceMultiUserChatService- Parameters:
interval- the maximum time to wait for a next incoming entry before writing the batch to the database.
-
getLogBatchGracePeriod
public Duration getLogBatchGracePeriod()
Returns the maximum time to wait for a next incoming entry before writing the batch to the database.- Specified by:
getLogBatchGracePeriodin interfaceMultiUserChatService- Returns:
- the maximum time to wait for a next incoming entry before writing the batch to the database.
-
getArchiver
public Archiver getArchiver()
Accessor uses the "double-check idiom" for proper lazy instantiation.- Specified by:
getArchiverin interfaceMultiUserChatService- Returns:
-
start
public void start()
- Specified by:
startin interfaceorg.xmpp.component.Component
-
enableService
public void enableService(boolean enabled, boolean persistent)Description copied from interface:MultiUserChatServiceEnables or disables the MUC service. When disabled the MUC service will disappear from the disco#items list. Moreover, service discovery features will be disabled.- Specified by:
enableServicein interfaceMultiUserChatService- Parameters:
enabled- true if the service is enabled.persistent- true if the new setting will persist across restarts.
-
isServiceEnabled
public boolean isServiceEnabled()
Description copied from interface:MultiUserChatServiceReturns true if the MUC service is available. UseMultiUserChatService.enableService(boolean, boolean)to enable or disable the service.- Specified by:
isServiceEnabledin interfaceMultiUserChatService- Returns:
- true if the MUC service is available.
-
getTotalChatTime
public long getTotalChatTime()
Description copied from interface:MultiUserChatServiceReturns the total chat time of all rooms combined.- Specified by:
getTotalChatTimein interfaceMultiUserChatService- Returns:
- total chat time in milliseconds.
-
getNumberChatRooms
public int getNumberChatRooms()
Retuns the number of existing rooms in the server (i.e. persistent or not, in memory or not).- Specified by:
getNumberChatRoomsin interfaceMultiUserChatService- Returns:
- the number of existing rooms in the server.
-
getNumberConnectedUsers
public int getNumberConnectedUsers(boolean onlyLocal)
Retuns the total number of occupants in all rooms in the server.- Specified by:
getNumberConnectedUsersin interfaceMultiUserChatService- Parameters:
onlyLocal- true if only users connected to this JVM will be considered. Otherwise count cluster wise.- Returns:
- the number of existing rooms in the server.
-
getNumberRoomOccupants
public int getNumberRoomOccupants()
Retuns the total number of users that have joined in all rooms in the server.- Specified by:
getNumberRoomOccupantsin interfaceMultiUserChatService- Returns:
- the number of existing rooms in the server.
-
getIncomingMessageCount
public long getIncomingMessageCount(boolean resetAfter)
Returns the total number of incoming messages since last reset.- Specified by:
getIncomingMessageCountin interfaceMultiUserChatService- Parameters:
resetAfter- True if you want the counter to be reset after results returned.- Returns:
- the number of incoming messages through the service.
-
getOutgoingMessageCount
public long getOutgoingMessageCount(boolean resetAfter)
Returns the total number of outgoing messages since last reset.- Specified by:
getOutgoingMessageCountin interfaceMultiUserChatService- Parameters:
resetAfter- True if you want the counter to be reset after results returned.- Returns:
- the number of outgoing messages through the service.
-
logConversation
public void logConversation(MUCRoom room, org.xmpp.packet.Message message, org.xmpp.packet.JID sender)
Description copied from interface:MultiUserChatServiceLogs that a given message was sent to a room as part of a conversation. Every message sent to the room that is allowed to be broadcasted and that was sent either from the room itself or from an occupant will be logged.Note: For performane reasons, the logged message won't be immediately saved. Instead we keep the logged messages in memory until the logging process saves them to the database. It's possible to configure the logging process to run every X milliseconds and also the number of messages to log on each execution.
- Specified by:
logConversationin interfaceMultiUserChatService- Parameters:
room- the room that received the message.message- the message to log as part of the conversation in the room.sender- the real XMPPAddress of the sender (e.g. john@example.org).- See Also:
initialize(org.jivesoftware.openfire.XMPPServer)
-
messageBroadcastedTo
public void messageBroadcastedTo(int numOccupants)
Description copied from interface:MultiUserChatServiceNotification message indicating the server that an incoming message was broadcasted to a given number of occupants.- Specified by:
messageBroadcastedToin interfaceMultiUserChatService- Parameters:
numOccupants- number of occupants that received the message.
-
getItems
public Iterator<DiscoServerItem> getItems()
Description copied from interface:ServerItemsProviderReturns an Iterator (of DiscoServerItem) with the items associated with the server or null if none.- Specified by:
getItemsin interfaceServerItemsProvider- Returns:
- an Iterator (of DiscoServerItem) with the items associated with the server or null if none.
-
getIdentities
public Iterator<org.dom4j.Element> getIdentities(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an Iterator (of Element) with the target entity's identities. Each Element must include the categoty, type and name attributes of the entity.- Specified by:
getIdentitiesin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an Iterator (of Element) with the target entity's identities.
-
getFeatures
public Iterator<String> getFeatures(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an Iterator (of String) with the supported features. The features to include are the features offered and supported protocols by the target entity identified by the requested name and node.- Specified by:
getFeaturesin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an Iterator (of String) with the supported features.
-
getExtendedInfo
public org.xmpp.forms.DataForm getExtendedInfo(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns an XDataForm with the extended information about the entity or null if none. Each bit of information about the entity must be included as a value of a field of the form.- Specified by:
getExtendedInfoin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- an XDataForm with the extended information about the entity or null if none.
-
getExtendedInfos
public Set<org.xmpp.forms.DataForm> getExtendedInfos(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns a collection of XDataForm with the extended information about the entity or an empty collection if none. Each bit of information about the entity must be included as a value of a field of the form.- Specified by:
getExtendedInfosin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- A collection of XDataForms with the extended information about the entity or an empty collection if none.
-
addExtraFeature
public void addExtraFeature(String feature)
Adds an extra Disco feature to the list of features returned for the conference service.- Specified by:
addExtraFeaturein interfaceMultiUserChatService- Parameters:
feature- Feature to add.
-
removeExtraFeature
public void removeExtraFeature(String feature)
Removes an extra Disco feature from the list of features returned for the conference service.- Specified by:
removeExtraFeaturein interfaceMultiUserChatService- Parameters:
feature- Feature to remove.
-
addExtraIdentity
public void addExtraIdentity(String category, String name, String type)
Adds an extra Disco identity to the list of identities returned for the conference service.- Specified by:
addExtraIdentityin interfaceMultiUserChatService- Parameters:
category- Category for identity. e.g. conferencename- Descriptive name for identity. e.g. Public Chatroomstype- Type for identity. e.g. text
-
removeExtraIdentity
public void removeExtraIdentity(String name)
Removes an extra Disco identity from the list of identities returned for the conference service.- Specified by:
removeExtraIdentityin interfaceMultiUserChatService- Parameters:
name- Name of identity to remove.
-
setMUCDelegate
public void setMUCDelegate(MUCEventDelegate delegate)
Sets the MUC event delegate handler for this service.- Parameters:
delegate- Handler for MUC events.
-
getMUCDelegate
public MUCEventDelegate getMUCDelegate()
Gets the MUC event delegate handler for this service.- Returns:
- Handler for MUC events (delegate)
-
hasInfo
public boolean hasInfo(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoInfoProviderReturns true if we can provide information related to the requested name and node. For example, if the requested name refers to a non-existant MUC room then the answer will be false. In case that the sender of the disco request is not authorized to discover this information an UnauthorizedException will be thrown.- Specified by:
hasInfoin interfaceDiscoInfoProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco info request.- Returns:
- true if we can provide information related to the requested name and node.
-
getItems
public Iterator<DiscoItem> getItems(String name, String node, org.xmpp.packet.JID senderJID)
Description copied from interface:DiscoItemsProviderReturns an Iterator (of DiscoItem) with the target entity's items or null if none. Each DiscoItem must include a JID attribute and may include the name and node attributes of the entity. In case that the sender of the disco request is not authorized to discover items an UnauthorizedException will be thrown.- Specified by:
getItemsin interfaceDiscoItemsProvider- Parameters:
name- the recipient JID's name.node- the requested disco node.senderJID- the XMPPAddress of user that sent the disco items request.- Returns:
- an Iterator (of DiscoItem) with the target entity's items or null if none.
-
isHidden
public boolean isHidden()
Description copied from interface:MultiUserChatServiceReturns true if the MUC service is a hidden, externally managed, service. This is typically set to true when the implementation is not the default one, and is not to be managed by the standard Openfire interface. If this is set to true, the service will not show up in the service list in the admin console.- Specified by:
isHiddenin interfaceMultiUserChatService- Returns:
- true if the MUC service is hidden and externally managed.
-
-