Search in sources :

Example 1 with AddGalSyncDataSourceRequest

use of com.zimbra.soap.admin.message.AddGalSyncDataSourceRequest in project zm-mailbox by Zimbra.

the class AddGalSyncDataSource method handle.

@Override
public Element handle(Element request, Map<String, Object> context) throws ServiceException {
    ZimbraSoapContext zsc = getZimbraSoapContext(context);
    Provisioning prov = Provisioning.getInstance();
    AddGalSyncDataSourceRequest dsRequest = zsc.elementToJaxb(request);
    String name = dsRequest.getName();
    String domainStr = dsRequest.getDomain();
    GalMode type = dsRequest.getType();
    AccountSelector acctSelector = dsRequest.getAccount();
    AccountBy acctBy = acctSelector.getBy();
    String acctValue = acctSelector.getKey();
    String folder = dsRequest.getFolder();
    Domain domain = prov.getDomainByName(domainStr);
    if (domain == null) {
        throw AccountServiceException.NO_SUCH_DOMAIN(domainStr);
    }
    Account account = null;
    try {
        account = prov.get(acctBy.toKeyAccountBy(), acctValue, zsc.getAuthToken());
    } catch (ServiceException se) {
        ZimbraLog.gal.warn("error checking GalSyncAccount", se);
    }
    if (account == null) {
        throw AccountServiceException.NO_SUCH_ACCOUNT(acctValue);
    }
    if (!Provisioning.onLocalServer(account)) {
        String host = account.getMailHost();
        Server server = prov.getServerByName(host);
        return proxyRequest(request, context, server);
    }
    CreateGalSyncAccount.addDataSource(request, zsc, account, domain, folder, name, type);
    Element response = zsc.createElement(AdminConstants.ADD_GAL_SYNC_DATASOURCE_RESPONSE);
    ToXML.encodeAccount(response, account, false, emptySet, null);
    return response;
}
Also used : Account(com.zimbra.cs.account.Account) GalMode(com.zimbra.soap.admin.type.GalMode) AddGalSyncDataSourceRequest(com.zimbra.soap.admin.message.AddGalSyncDataSourceRequest) AccountServiceException(com.zimbra.cs.account.AccountServiceException) ServiceException(com.zimbra.common.service.ServiceException) Server(com.zimbra.cs.account.Server) ZimbraSoapContext(com.zimbra.soap.ZimbraSoapContext) Element(com.zimbra.common.soap.Element) AccountSelector(com.zimbra.soap.type.AccountSelector) Domain(com.zimbra.cs.account.Domain) Provisioning(com.zimbra.cs.account.Provisioning) AccountBy(com.zimbra.soap.type.AccountBy)

Aggregations

ServiceException (com.zimbra.common.service.ServiceException)1 Element (com.zimbra.common.soap.Element)1 Account (com.zimbra.cs.account.Account)1 AccountServiceException (com.zimbra.cs.account.AccountServiceException)1 Domain (com.zimbra.cs.account.Domain)1 Provisioning (com.zimbra.cs.account.Provisioning)1 Server (com.zimbra.cs.account.Server)1 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)1 AddGalSyncDataSourceRequest (com.zimbra.soap.admin.message.AddGalSyncDataSourceRequest)1 GalMode (com.zimbra.soap.admin.type.GalMode)1 AccountBy (com.zimbra.soap.type.AccountBy)1 AccountSelector (com.zimbra.soap.type.AccountSelector)1