Called by a proxy queue conversation group to notify this
factory of its closure.
@param conversation
@param group
13553
protected synchronized void groupCloseNotification(Conversation conversation, 
                                                      ProxyQueueConversationGroup group)
   {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(tc, "groupCloseNotification", new Object[] {conversation, group});
      if (convToGroupMap.remove(conversation) == null)
      {
         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "group unknown!");
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "groupCloseNotification");
   }
787420
public void removeGroup(String group) {
        if (worldGroupExist(group)) {
            Common.getInstance().getStorageHandler().getStorageEngine().removeWorldGroup(group);
            list.remove(group);
        }
    }
878959
private void handleGroupChannel(JsonNode channel) {
        long channelId = channel.get("id").asLong();

        api.getGroupChannelById(channelId).ifPresent(groupChannel -> {
            GroupChannelDeleteEvent event = new GroupChannelDeleteEventImpl(groupChannel);

            api.getEventDispatcher().dispatchGroupChannelDeleteEvent(
                    api, Collections.singleton(groupChannel), groupChannel.getMembers(), event);
            api.removeObjectListeners(GroupChannel.class, channelId);
            api.removeObjectListeners(VoiceChannel.class, channelId);
            api.removeObjectListeners(TextChannel.class, channelId);
            api.removeObjectListeners(Channel.class, channelId);
            api.forEachCachedMessageWhere(
                    msg -> msg.getChannel().getId() == groupChannel.getId(),
                    msg -> api.removeMessageFromCache(msg.getId())
            );
        });
    }
8885
public void mute(final AVIMConversationCallback callback) {
    if (StringUtil.isEmpty(getConversationId())) {
      if (null != callback) {
        callback.internalDone(new AVException(AVException.INVALID_QUERY, "ConversationId is empty"));
      } else {
        LOGGER.w("ConversationId is empty");
      }
      return;
    }
    InternalConfiguration.getOperationTube().participateConversation(client.getClientId(), conversationId, getType(),
            null, Conversation.AVIMOperation.CONVERSATION_MUTE, callback);
  }
213065
@Override
  public CommunicationGroupDriver newCommunicationGroup(final Class<? extends Name<String>> groupName,
                                                        final Class<? extends Topology> topologyClass,
                                                        final int numberOfTasks, final int customFanOut) {
    LOG.entering("GroupCommDriverImpl", "newCommunicationGroup",
        new Object[]{Utils.simpleName(groupName), numberOfTasks});

    final CommunicationGroupDriver commGroupDriver;
    try {
      commGroupDriver
          = commGroupDriverFactory.getNewInstance(groupName, topologyClass, numberOfTasks, customFanOut);
    } catch (final InjectionException e) {
      LOG.log(Level.WARNING, "Cannot inject new CommunicationGroupDriver");
      throw new RuntimeException(e);
    }

    commGroupDrivers.put(groupName, commGroupDriver);
    LOG.exiting("GroupCommDriverImpl", "newCommunicationGroup",
        "Created communication group: " + Utils.simpleName(groupName));
    return commGroupDriver;
  }
1216407
public static void dismissAllInteractions() {
		if (!isConversationQueue()) {
			dispatchOnConversationQueue(new DispatchTask() {
				@Override
				protected void execute() {
					dismissAllInteractions();
				}
			});
			return;
		}

		ApptentiveNotificationCenter.defaultCenter().postNotification(NOTIFICATION_INTERACTIONS_SHOULD_DISMISS);
	}
102753
protected void setConversation(Conversation conversation)
   {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "setConversation", conversation);
      con = conversation;
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "setConversation");
   }
152174
void groupReady(String group) {
    if (log.isDebugEnabled()) {
      log.debug(String.format("%s - Group ready: Group[group=%s]", this, group));
    }
    eventBus.send(outAddress, new JsonObject().putString("action", "group").putString("group", group));
  }
1223603
protected void setGroup(String group) {
    for (INodeHardLinkFile linkedFile : linkedFiles) {
      linkedFile.setGroup(group, false);
    }
  }
77619
protected void synchronizeGroupMembersOnDelete(IEntityGroup group) throws GroupsException {
        GroupMemberImpl gmi = null;

        for (Iterator it = group.getChildren().iterator(); it.hasNext(); ) {
            gmi = (GroupMemberImpl) it.next();
            gmi.invalidateInParentGroupsCache(Collections.singleton((IGroupMember) gmi));
            if (cacheInUse()) {
                cacheUpdate(gmi);
            }
        }
    }
1173157
@Override
	public void onReceiveNotification(ApptentiveNotification notification) {
		checkConversationQueue();

		if (notification.hasName(NOTIFICATION_INTERACTIONS_SHOULD_DISMISS)) {
			dispatchOnMainQueue(new DispatchTask() {
				@Override
				protected void execute() {
					dismissActivity();
				}
			});
		} else if (notification.hasName(NOTIFICATION_CONVERSATION_STATE_DID_CHANGE)) {
			final Conversation conversation = notification.getUserInfo(NOTIFICATION_KEY_CONVERSATION, Conversation.class);
			Assert.assertNotNull(conversation, "Conversation expected to be not null");
			if (conversation != null && !conversation.hasActiveState()) {
				dispatchOnMainQueue(new DispatchTask() {
					@Override
					protected void execute() {
						dismissActivity();
					}
				});
			}
		}
	}
2394
public void deleteGroupContact(final String groupId, final String contactId) throws NotFoundException, GeneralException, UnauthorizedException {
        if (groupId == null) {
            throw new IllegalArgumentException("Group ID must be specified.");
        }
        if (contactId == null) {
            throw new IllegalArgumentException("Contact ID must be specified.");
        }

        String id = String.format("%s%s/%s", groupId, CONTACTPATH, contactId);
        messageBirdService.deleteByID(GROUPPATH, id);
    }
798063
public synchronized void     add(QueueGroups group, Activity activity)
    {
        add(group, activity, 0, TimeUnit.MILLISECONDS);
    }
960502
public void onConversationHidden(Peer peer) {
        if (visiblePeer != null && visiblePeer.equals(peer)) {
            this.visiblePeer = null;
        }
    }
934280
@ObjectiveCName("onConversationClosedWithPeer:")
    public void onConversationClosed(@NotNull Peer peer) {
        modules.getEvents().post(new PeerChatClosed(peer));
    }
1112524
public void onMemberUnblocked(AVIMClient client, AVIMConversation conversation, List<String> members, String operator){
    LOGGER.d("Notification --- " + operator + " unblocked members: " + StringUtil.join(", ", members));
  }
620923
@Override
    public void deleteGroup(ILockableEntityGroup group) throws GroupsException {
        throwExceptionIfNotInternallyManaged();
        try {
            if (group.getLock().isValid()) {
                removeDeletedGroupFromParentGroups(group);
                deleteGroup((IEntityGroup) group);
            } else {
                throw new GroupsException(
                        "Could not delete group " + group.getKey() + " has invalid lock.");
            }
        } catch (LockingException le) {
            throw new GroupsException("Could not delete group " + group.getKey(), le);
        } finally {
            try {
                group.getLock().release();
            } catch (LockingException le) {
            }
        }
    }