From ccb8b1e95011eac8f50d82b2e4df4acb6b8dde05 Mon Sep 17 00:00:00 2001 From: drazen04 Date: Thu, 26 Sep 2024 18:01:24 +0200 Subject: [PATCH] feat: add delete calendar group. --- .../com/zimbra/common/soap/MailConstants.java | 7 ++++ .../main/java/com/zimbra/soap/JaxbUtil.java | 2 + .../message/DeleteCalendarGroupRequest.java | 39 +++++++++++++++++++ .../message/DeleteCalendarGroupResponse.java | 15 +++++++ .../cs/service/mail/DeleteCalendarGroup.java | 30 ++++++++++++++ .../zimbra/cs/service/mail/MailService.java | 1 + 6 files changed, 94 insertions(+) create mode 100644 soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupRequest.java create mode 100644 soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupResponse.java create mode 100644 store/src/main/java/com/zimbra/cs/service/mail/DeleteCalendarGroup.java diff --git a/common/src/main/java/com/zimbra/common/soap/MailConstants.java b/common/src/main/java/com/zimbra/common/soap/MailConstants.java index 27fc605f955..00ffcb0e868 100644 --- a/common/src/main/java/com/zimbra/common/soap/MailConstants.java +++ b/common/src/main/java/com/zimbra/common/soap/MailConstants.java @@ -283,6 +283,8 @@ private MailConstants() {} public static final String E_GET_CALENDAR_GROUPS_RESPONSE = "GetCalendarGroupsResponse"; public static final String E_CREATE_CALENDAR_GROUP_REQUEST = "CreateCalendarGroupRequest"; public static final String E_CREATE_CALENDAR_GROUP_RESPONSE = "CreateCalendarGroupResponse"; + public static final String E_DELETE_CALENDAR_GROUP_REQUEST = "DeleteCalendarGroupRequest"; + public static final String E_DELETE_CALENDAR_GROUP_RESPONSE = "DeleteCalendarGroupResponse"; // noop public static final QName NO_OP_REQUEST = QName.get(E_NO_OP_REQUEST, NAMESPACE); @@ -460,6 +462,11 @@ private MailConstants() {} QName.get(E_CREATE_CALENDAR_GROUP_REQUEST, NAMESPACE); public static final QName CREATE_CALENDAR_GROUP_RESPONSE = QName.get(E_CREATE_CALENDAR_GROUP_RESPONSE, NAMESPACE); + public static final QName DELETE_CALENDAR_GROUP_REQUEST = + QName.get(E_DELETE_CALENDAR_GROUP_REQUEST, NAMESPACE); + public static final QName DELETE_CALENDAR_GROUP_RESPONSE = + QName.get(E_DELETE_CALENDAR_GROUP_RESPONSE, NAMESPACE); + public static final QName GET_APPT_SUMMARIES_REQUEST = QName.get(E_GET_APPT_SUMMARIES_REQUEST, NAMESPACE); public static final QName GET_APPOINTMENT_REQUEST = diff --git a/soap/src/main/java/com/zimbra/soap/JaxbUtil.java b/soap/src/main/java/com/zimbra/soap/JaxbUtil.java index e30e76e2b78..1620119408a 100644 --- a/soap/src/main/java/com/zimbra/soap/JaxbUtil.java +++ b/soap/src/main/java/com/zimbra/soap/JaxbUtil.java @@ -706,6 +706,8 @@ public final class JaxbUtil { com.zimbra.soap.mail.message.GetCalendarGroupsResponse.class, com.zimbra.soap.mail.message.CreateCalendarGroupRequest.class, com.zimbra.soap.mail.message.CreateCalendarGroupResponse.class, + com.zimbra.soap.mail.message.DeleteCalendarGroupRequest.class, + com.zimbra.soap.mail.message.DeleteCalendarGroupResponse.class, com.zimbra.soap.mail.message.GetCalendarItemSummariesRequest.class, com.zimbra.soap.mail.message.GetCalendarItemSummariesResponse.class, com.zimbra.soap.mail.message.GetContactsRequest.class, diff --git a/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupRequest.java b/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupRequest.java new file mode 100644 index 00000000000..b7c0d69fc5c --- /dev/null +++ b/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupRequest.java @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2022 Synacor, Inc. +// SPDX-FileCopyrightText: 2022 Zextras +// +// SPDX-License-Identifier: GPL-2.0-only + +package com.zimbra.soap.mail.message; + +import com.zimbra.common.soap.MailConstants; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +/** + * @zm-api-command-auth-required true + * @zm-api-command-admin-auth-required false + * @zm-api-command-description Delete a new Calendar Group + */ +@XmlRootElement(name = MailConstants.E_DELETE_CALENDAR_GROUP_REQUEST) +public class DeleteCalendarGroupRequest { + /** no-argument constructor wanted by JAXB */ + public DeleteCalendarGroupRequest() {} + + /** + * @zm-api-field-tag id + * @zm-api-field-description Calendar Group id + */ + @XmlAttribute(name = "id" /* id */, required = true) + private String id; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupResponse.java b/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupResponse.java new file mode 100644 index 00000000000..be6f1c74797 --- /dev/null +++ b/soap/src/main/java/com/zimbra/soap/mail/message/DeleteCalendarGroupResponse.java @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022 Synacor, Inc. +// SPDX-FileCopyrightText: 2022 Zextras +// +// SPDX-License-Identifier: GPL-2.0-only + +package com.zimbra.soap.mail.message; + +import com.zimbra.common.soap.MailConstants; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = MailConstants.E_DELETE_CALENDAR_GROUP_RESPONSE) +public class DeleteCalendarGroupResponse { +} diff --git a/store/src/main/java/com/zimbra/cs/service/mail/DeleteCalendarGroup.java b/store/src/main/java/com/zimbra/cs/service/mail/DeleteCalendarGroup.java new file mode 100644 index 00000000000..649815ef068 --- /dev/null +++ b/store/src/main/java/com/zimbra/cs/service/mail/DeleteCalendarGroup.java @@ -0,0 +1,30 @@ +package com.zimbra.cs.service.mail; + +import com.zimbra.common.service.ServiceException; +import com.zimbra.common.soap.Element; +import com.zimbra.common.soap.MailConstants; +import com.zimbra.soap.mail.message.DeleteCalendarGroupRequest; + +import java.util.Map; + +public class DeleteCalendarGroup extends MailDocumentHandler { + + @Override + public Element handle(Element request, Map context) throws ServiceException { + final var zsc = getZimbraSoapContext(context); + final var account = getRequestedAccount(zsc); + + if (!canAccessAccount(zsc, account)) + throw ServiceException.PERM_DENIED("can not access account"); + + final var mbox = getRequestedMailbox(zsc); + final var octxt = getOperationContext(zsc, context); + + DeleteCalendarGroupRequest req = zsc.elementToJaxb(request); + + mbox.deleteFolder(octxt, req.getId()); + + return zsc.createElement(MailConstants.DELETE_CALENDAR_GROUP_RESPONSE); + } + +} diff --git a/store/src/main/java/com/zimbra/cs/service/mail/MailService.java b/store/src/main/java/com/zimbra/cs/service/mail/MailService.java index ac1b546c93d..c78d7b7ef58 100644 --- a/store/src/main/java/com/zimbra/cs/service/mail/MailService.java +++ b/store/src/main/java/com/zimbra/cs/service/mail/MailService.java @@ -118,6 +118,7 @@ public void registerHandlers(DocumentDispatcher dispatcher) { // Calendar dispatcher.registerHandler(MailConstants.GET_CALENDAR_GROUPS_REQUEST, new GetCalendarGroups()); dispatcher.registerHandler(MailConstants.CREATE_CALENDAR_GROUP_REQUEST, new CreateCalendarGroup()); + dispatcher.registerHandler(MailConstants.DELETE_CALENDAR_GROUP_REQUEST, new DeleteCalendarGroup()); dispatcher.registerHandler(MailConstants.GET_APPT_SUMMARIES_REQUEST, new GetApptSummaries()); dispatcher.registerHandler(MailConstants.GET_APPOINTMENT_REQUEST, new GetAppointment()); dispatcher.registerHandler(MailConstants.SET_APPOINTMENT_REQUEST, new SetAppointment());