@Override
    public Iterator<DiscoItem> getItems(final String name, final String node, final JID senderJID) {
        // Check if the service is disabled. Info is not available when disabled.
        if (!isServiceEnabled()) {
            return null;
        }
        final Set<DiscoItem> answer = new HashSet<>();
        if (name == null && node == null)
        {
            // Before returning the items, ensure that all rooms are properly loaded in memory
            getActiveAndInactiveRooms();

            // Answer all the public rooms as items
            for (final MUCRoom room : localMUCRoomManager.getAll())
            {
                if (canDiscoverRoom(room, senderJID))
                {
                    answer.add(new DiscoItem(room.getSelfRepresentation().getOccupantJID(),
                        room.getNaturalLanguageName(), null, null));
                }
            }
        }
        else if (name != null && node == null) {
            // Answer the room occupants as items if that info is publicly available
            final MUCRoom room = getChatRoom(name);
            if (room != null && canDiscoverRoom(room, senderJID)) {
                for (final MUCOccupant occupant : room.getOccupants()) {
                    // TODO Should we filter occupants that are invisible (presence is not broadcasted)?
                    answer.add(new DiscoItem(occupant.getOccupantJID(), null, null, null));
                }
            }
        }
        return answer.iterator();
    }
Gets the MUC event delegate handler for this service.
@return Handler for MUC events (delegate)
xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java