use of com.zimbra.soap.admin.message.GetDistributionListMembershipRequest in project zm-mailbox by Zimbra.
the class GetDistributionListMembership method handle.
@Override
public Element handle(Element request, Map<String, Object> context) throws ServiceException {
ZimbraSoapContext zsc = getZimbraSoapContext(context);
Provisioning prov = Provisioning.getInstance();
GetDistributionListMembershipRequest req = JaxbUtil.elementToJaxb(request);
int limit = (req.getLimit() == null) ? 0 : req.getLimit();
if (limit < 0) {
throw ServiceException.INVALID_REQUEST("limit" + limit + " is negative", null);
}
int offset = (req.getOffset() == null) ? 0 : req.getOffset();
if (offset < 0) {
throw ServiceException.INVALID_REQUEST("offset" + offset + " is negative", null);
}
DistributionListSelector dlSel = req.getDl();
DistributionListBy dlBy = dlSel.getBy().toKeyDistributionListBy();
String dlKey = dlSel.getKey();
DistributionList distributionList = prov.get(dlBy, dlKey);
defendAgainstGroupHarvesting(distributionList, dlBy, dlKey, zsc, Admin.R_getDistributionListMembership, /* shouldn't be used */
Admin.R_getDistributionListMembership);
HashMap<String, String> via = new HashMap<String, String>();
List<DistributionList> lists = prov.getDistributionLists(distributionList, false, via);
Element response = zsc.createElement(AdminConstants.GET_DISTRIBUTION_LIST_MEMBERSHIP_RESPONSE);
for (DistributionList dl : lists) {
Element dlEl = response.addNonUniqueElement(AdminConstants.E_DL);
dlEl.addAttribute(AdminConstants.A_NAME, dl.getName());
dlEl.addAttribute(AdminConstants.A_ID, dl.getId());
String viaDl = via.get(dl.getName());
if (viaDl != null)
dlEl.addAttribute(AdminConstants.A_VIA, viaDl);
}
return response;
}
Aggregations