protected List handleGet()

in server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java [87:135]


    protected List<Stanza> handleGet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext,
            SessionContext sessionContext, StanzaBroker stanzaBroker) {
        try {
            Entity roomEntity = stanza.getTo();
            Room room = conference.findRoom(roomEntity);
            Affiliation fromAffiliation = room.getAffiliations().getAffiliation(stanza.getFrom());

            XMLElement query = stanza.getSingleInnerElementsNamed("query", NamespaceURIs.XEP0045_MUC_ADMIN);
            XMLElement itemElm = query.getSingleInnerElementsNamed("item", NamespaceURIs.XEP0045_MUC_ADMIN);

            StanzaBuilder result = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
            result.startInnerElement("query", NamespaceURIs.XEP0045_MUC_ADMIN);

            IqAdminItem item = IqAdminItem.getWrapper(itemElm);
            Affiliation affiliation = item.getAffiliation();
            if (affiliation != null) {
                // check access
                if (affiliation == Affiliation.Outcast || affiliation == Affiliation.Member) {
                    if (fromAffiliation.compareTo(Affiliation.Admin) > 0) {
                        return Collections.singletonList(MUCHandlerHelper.createErrorReply(stanza,
                                StanzaErrorType.CANCEL, StanzaErrorCondition.NOT_ALLOWED));
                    }
                } else if (affiliation == Affiliation.Owner || affiliation == Affiliation.Admin) {
                    if (fromAffiliation.compareTo(Affiliation.Owner) > 0) {
                        return Collections.singletonList(MUCHandlerHelper.createErrorReply(stanza,
                                StanzaErrorType.CANCEL, StanzaErrorCondition.NOT_ALLOWED));
                    }
                }

                // Retrieve ban list
                Collection<Entity> users = room.getAffiliations().getByAffiliation(affiliation);

                for (Entity user : users) {
                    IqAdminItem resultItem = new IqAdminItem(user, affiliation);
                    result.addPreparedElement(resultItem);
                }
            }

            return Collections.singletonList(result.build());

        } catch (XMLSemanticError e) {
            logger.debug("Invalid MUC admin stanza", e);
            return Collections.singletonList(
                    createBadRequestError(stanza, serverRuntimeContext, sessionContext, "Invalid IQ stanza"));
        } catch (EntityFormatException e) {
            return Collections
                    .singletonList(createBadRequestError(stanza, serverRuntimeContext, sessionContext, "Invalid JID"));
        }
    }