Search in sources :

Example 1 with NonEmptyArrayOfPropertyValuesType

use of com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfPropertyValuesType in project zm-mailbox by Zimbra.

the class ExchangeEWSFreeBusyProvider method handleMailboxChange.

@Override
public boolean handleMailboxChange(String accountId) {
    ZimbraLog.fb.debug("Entering handleMailboxChange() for account : " + accountId);
    String email = getEmailAddress(accountId);
    ServerInfo serverInfo = getServerInfo(email);
    if (email == null || !serverInfo.enabled) {
        ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
        // no retry
        return true;
    }
    FreeBusy fb;
    try {
        fb = getFreeBusy(accountId, FreeBusyQuery.CALENDAR_FOLDER_ALL);
    } catch (ServiceException se) {
        ZimbraLog.fb.warn("can't get freebusy for account " + accountId, se);
        ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
        // retry the request if it's receivers fault.
        return !se.isReceiversFault();
    }
    if (email == null || fb == null) {
        ZimbraLog.fb.warn("account not found / incorrect / wrong host: " + accountId);
        ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
        // no retry
        return true;
    }
    if (serverInfo == null || serverInfo.org == null || serverInfo.cn == null) {
        ZimbraLog.fb.warn("no exchange server info for user " + email);
        ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
        // no retry
        return true;
    }
    if (null == service) {
        try {
            if (!initService(serverInfo)) {
                ZimbraLog.fb.error("failed to initialize exchange service object " + serverInfo.url);
                ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
                return true;
            }
        } catch (MalformedURLException e) {
            ZimbraLog.fb.error("exception while trying to initialize exchange service object " + serverInfo.url);
            ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
            return true;
        }
    }
    ExchangeEWSMessage msg = new ExchangeEWSMessage(serverInfo.org, serverInfo.cn, email);
    try {
        FolderType publicFolderRoot = (FolderType) bindFolder(DistinguishedFolderIdNameType.PUBLICFOLDERSROOT, DefaultShapeNamesType.ALL_PROPERTIES);
        if (publicFolderRoot == null) {
            ZimbraLog.fb.error("Could not find the public root folder on exchange");
            return true;
        }
        List<BaseFolderType> resultsNonIpm = findFolderByProp(publicFolderRoot.getParentFolderId(), UnindexedFieldURIType.FOLDER_DISPLAY_NAME, "NON_IPM_SUBTREE");
        if (resultsNonIpm != null && resultsNonIpm.size() > 0) {
            FolderType folderNonIPM = (FolderType) resultsNonIpm.get(0);
            List<BaseFolderType> resultSchedulePlus = findFolderByProp(folderNonIPM.getFolderId(), UnindexedFieldURIType.FOLDER_DISPLAY_NAME, "SCHEDULE+ FREE BUSY");
            if (resultSchedulePlus != null && resultSchedulePlus.size() > 0) {
                FolderType folderSchedulePlus = (FolderType) resultSchedulePlus.get(0);
                List<BaseFolderType> resultFBFolder = findFolderByPartialProp(folderSchedulePlus.getFolderId(), UnindexedFieldURIType.FOLDER_DISPLAY_NAME, // TODO: check here for partial name
                serverInfo.org);
                // search
                if (resultFBFolder != null && resultFBFolder.size() > 0) {
                    FolderType folderFB = (FolderType) resultFBFolder.get(0);
                    List<ItemType> resultMessage = findItemByProp(folderFB.getFolderId(), UnindexedFieldURIType.ITEM_SUBJECT, "USER-/CN=RECIPIENTS/CN=" + getForeignPrincipal(accountId), DefaultShapeNamesType.ALL_PROPERTIES);
                    if (resultMessage != null && resultMessage.size() > 0) {
                        // edit message
                        ItemType itemMessage = resultMessage.get(0);
                        Map<PathToExtendedFieldType, NonEmptyArrayOfPropertyValuesType> props = msg.GetFreeBusyProperties(fb);
                        final NonEmptyArrayOfItemChangeDescriptionsType cdExPropArr = new NonEmptyArrayOfItemChangeDescriptionsType();
                        for (PathToExtendedFieldType pathExProp : props.keySet()) {
                            ItemType itemEmptyMessage = new ItemType();
                            SetItemFieldType sifItem = new SetItemFieldType();
                            sifItem.setPath(new JAXBElement<PathToExtendedFieldType>(new QName("http://schemas.microsoft.com/exchange/services/2006/types", "Path"), PathToExtendedFieldType.class, pathExProp));
                            ExtendedPropertyType exProp = new ExtendedPropertyType();
                            exProp.setExtendedFieldURI(pathExProp);
                            if (pathExProp.getPropertyType() == MapiPropertyTypeType.APPLICATION_TIME_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.BINARY_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.CLSID_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.CURRENCY_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.DOUBLE_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.FLOAT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.INTEGER_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.LONG_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.OBJECT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.SHORT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.STRING_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.SYSTEM_TIME_ARRAY) {
                                exProp.setValues(props.get(pathExProp));
                            } else {
                                if (props.get(pathExProp).getValue().size() > 0) {
                                    exProp.setValue(props.get(pathExProp).getValue().get(0));
                                }
                            }
                            itemEmptyMessage.getExtendedProperty().add(exProp);
                            sifItem.setItem(itemEmptyMessage);
                            cdExPropArr.getAppendToItemFieldOrSetItemFieldOrDeleteItemField().add(sifItem);
                        }
                        UpdateItemType updateItemRequest = new UpdateItemType();
                        updateItemRequest.setMessageDisposition(MessageDispositionType.SAVE_ONLY);
                        updateItemRequest.setConflictResolution(ConflictResolutionType.ALWAYS_OVERWRITE);
                        RequestServerVersion serverVersion = new RequestServerVersion();
                        serverVersion.setVersion(ExchangeVersionType.EXCHANGE_2010_SP_1);
                        ItemChangeType itemExpropChange = new ItemChangeType();
                        itemExpropChange.setItemId(itemMessage.getItemId());
                        itemExpropChange.setUpdates(cdExPropArr);
                        final NonEmptyArrayOfItemChangesType ctExPropArr = new NonEmptyArrayOfItemChangesType();
                        ctExPropArr.getItemChange().add(itemExpropChange);
                        updateItemRequest.setItemChanges(ctExPropArr);
                        Holder<UpdateItemResponseType> updateItemResponse = new Holder<UpdateItemResponseType>();
                        Holder<ServerVersionInfo> gfversionInfo = new Holder<ServerVersionInfo>();
                        MailboxCultureType mct = new MailboxCultureType();
                        mct.setValue("EN");
                        TimeZoneDefinitionType tzdt = new TimeZoneDefinitionType();
                        tzdt.setId("Greenwich Standard Time");
                        TimeZoneContextType tzct = new TimeZoneContextType();
                        tzct.setTimeZoneDefinition(tzdt);
                        service.updateItem(updateItemRequest, mct, serverVersion, tzct, updateItemResponse, gfversionInfo);
                        ResponseMessageType updateItemResponseMessage = updateItemResponse.value.getResponseMessages().getCreateItemResponseMessageOrDeleteItemResponseMessageOrGetItemResponseMessage().get(0).getValue();
                    } else {
                        // create message
                        PostItemType itemMessage = new PostItemType();
                        itemMessage.setSubject("USER-/CN=RECIPIENTS/CN=" + getForeignPrincipal(accountId));
                        itemMessage.setItemClass("IPM.Post");
                        Map<PathToExtendedFieldType, NonEmptyArrayOfPropertyValuesType> props = msg.GetFreeBusyProperties(fb);
                        for (PathToExtendedFieldType pathExProp : props.keySet()) {
                            ExtendedPropertyType exProp = new ExtendedPropertyType();
                            exProp.setExtendedFieldURI(pathExProp);
                            if (pathExProp.getPropertyType() == MapiPropertyTypeType.APPLICATION_TIME_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.BINARY_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.CLSID_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.CURRENCY_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.DOUBLE_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.FLOAT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.INTEGER_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.LONG_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.OBJECT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.SHORT_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.STRING_ARRAY || pathExProp.getPropertyType() == MapiPropertyTypeType.SYSTEM_TIME_ARRAY) {
                                exProp.setValues(props.get(pathExProp));
                            } else {
                                if (props.get(pathExProp).getValue().size() > 0) {
                                    exProp.setValue(props.get(pathExProp).getValue().get(0));
                                }
                            }
                            itemMessage.getExtendedProperty().add(exProp);
                        }
                        CreateItemType createItemRequest = new CreateItemType();
                        RequestServerVersion serverVersion = new RequestServerVersion();
                        serverVersion.setVersion(ExchangeVersionType.EXCHANGE_2010_SP_1);
                        createItemRequest.setMessageDisposition(MessageDispositionType.SAVE_ONLY);
                        TargetFolderIdType idTargetFolder = new TargetFolderIdType();
                        idTargetFolder.setFolderId(folderFB.getFolderId());
                        createItemRequest.setSavedItemFolderId(idTargetFolder);
                        NonEmptyArrayOfAllItemsType createItems = new NonEmptyArrayOfAllItemsType();
                        createItems.getItemOrMessageOrCalendarItem().add(itemMessage);
                        createItemRequest.setItems(createItems);
                        Holder<CreateItemResponseType> createItemResponse = new Holder<CreateItemResponseType>();
                        Holder<ServerVersionInfo> gfversionInfo = new Holder<ServerVersionInfo>();
                        MailboxCultureType mct = new MailboxCultureType();
                        mct.setValue("EN");
                        TimeZoneDefinitionType tzdt = new TimeZoneDefinitionType();
                        tzdt.setId("Greenwich Standard Time");
                        TimeZoneContextType tzct = new TimeZoneContextType();
                        tzct.setTimeZoneDefinition(tzdt);
                        service.createItem(createItemRequest, mct, serverVersion, tzct, createItemResponse, gfversionInfo);
                        ResponseMessageType createItemResponseMessage = createItemResponse.value.getResponseMessages().getCreateItemResponseMessageOrDeleteItemResponseMessageOrGetItemResponseMessage().get(0).getValue();
                    }
                } else {
                    ZimbraLog.fb.error("Could not find the Exchange folder containing '" + serverInfo.org + "'. Make sure zimbraFreebusyExchangeUserOrg is configured correctly and it exists on Exchange");
                }
            } else {
                ZimbraLog.fb.error("Could not find the Exchange folder 'SCHEDULE+ FREE BUSY'");
            }
        } else {
            ZimbraLog.fb.error("Could not find the Exchange folder 'NON_IPM_SUBTREE'");
        }
        return true;
    } catch (Exception e) {
        ZimbraLog.fb.error("error communicating with " + serverInfo.url, e);
    } finally {
        ZimbraLog.fb.debug("Exiting handleMailboxChange() for account : " + accountId);
    }
    // retry
    return false;
}
Also used : MalformedURLException(java.net.MalformedURLException) FolderInfoResponseMessageType(com.microsoft.schemas.exchange.services._2006.messages.FolderInfoResponseMessageType) ResponseMessageType(com.microsoft.schemas.exchange.services._2006.messages.ResponseMessageType) FindFolderResponseMessageType(com.microsoft.schemas.exchange.services._2006.messages.FindFolderResponseMessageType) FindItemResponseMessageType(com.microsoft.schemas.exchange.services._2006.messages.FindItemResponseMessageType) ServerInfo(com.zimbra.cs.fb.ExchangeFreeBusyProvider.ServerInfo) FindItemType(com.microsoft.schemas.exchange.services._2006.messages.FindItemType) UpdateItemType(com.microsoft.schemas.exchange.services._2006.messages.UpdateItemType) CreateItemType(com.microsoft.schemas.exchange.services._2006.messages.CreateItemType) ItemType(com.microsoft.schemas.exchange.services._2006.types.ItemType) PostItemType(com.microsoft.schemas.exchange.services._2006.types.PostItemType) TimeZoneContextType(com.microsoft.schemas.exchange.services._2006.types.TimeZoneContextType) BaseFolderType(com.microsoft.schemas.exchange.services._2006.types.BaseFolderType) UpdateItemResponseType(com.microsoft.schemas.exchange.services._2006.messages.UpdateItemResponseType) SetItemFieldType(com.microsoft.schemas.exchange.services._2006.types.SetItemFieldType) CreateItemResponseType(com.microsoft.schemas.exchange.services._2006.messages.CreateItemResponseType) ItemChangeType(com.microsoft.schemas.exchange.services._2006.types.ItemChangeType) RequestServerVersion(com.microsoft.schemas.exchange.services._2006.types.RequestServerVersion) TimeZoneDefinitionType(com.microsoft.schemas.exchange.services._2006.types.TimeZoneDefinitionType) ServerVersionInfo(com.microsoft.schemas.exchange.services._2006.types.ServerVersionInfo) ExtendedPropertyType(com.microsoft.schemas.exchange.services._2006.types.ExtendedPropertyType) CreateItemType(com.microsoft.schemas.exchange.services._2006.messages.CreateItemType) GetFolderType(com.microsoft.schemas.exchange.services._2006.messages.GetFolderType) FindFolderType(com.microsoft.schemas.exchange.services._2006.messages.FindFolderType) FolderType(com.microsoft.schemas.exchange.services._2006.types.FolderType) BaseFolderType(com.microsoft.schemas.exchange.services._2006.types.BaseFolderType) NonEmptyArrayOfAllItemsType(com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfAllItemsType) UpdateItemType(com.microsoft.schemas.exchange.services._2006.messages.UpdateItemType) QName(javax.xml.namespace.QName) Holder(javax.xml.ws.Holder) PathToExtendedFieldType(com.microsoft.schemas.exchange.services._2006.types.PathToExtendedFieldType) NonEmptyArrayOfPropertyValuesType(com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfPropertyValuesType) DatatypeConfigurationException(javax.xml.datatype.DatatypeConfigurationException) ServiceException(com.zimbra.common.service.ServiceException) IOException(java.io.IOException) MalformedURLException(java.net.MalformedURLException) CertificateException(java.security.cert.CertificateException) NonEmptyArrayOfItemChangesType(com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfItemChangesType) ServiceException(com.zimbra.common.service.ServiceException) TargetFolderIdType(com.microsoft.schemas.exchange.services._2006.types.TargetFolderIdType) NonEmptyArrayOfItemChangeDescriptionsType(com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfItemChangeDescriptionsType) PostItemType(com.microsoft.schemas.exchange.services._2006.types.PostItemType) MailboxCultureType(com.microsoft.schemas.exchange.services._2006.types.MailboxCultureType)

Example 2 with NonEmptyArrayOfPropertyValuesType

use of com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfPropertyValuesType in project zm-mailbox by Zimbra.

the class ExchangeEWSMessage method GetFreeBusyProperties.

Map<PathToExtendedFieldType, NonEmptyArrayOfPropertyValuesType> GetFreeBusyProperties(FreeBusy fb) {
    Map<PathToExtendedFieldType, NonEmptyArrayOfPropertyValuesType> ret = new HashMap<PathToExtendedFieldType, NonEmptyArrayOfPropertyValuesType>();
    long startMonth, endMonth;
    startMonth = millisToMonths(fb.getStartTime());
    endMonth = millisToMonths(fb.getEndTime());
    IntervalList consolidated = // TEMP
    new IntervalList(fb.getStartTime(), fb.getEndTime());
    ArrayList<String> busyMonths = new ArrayList<String>();
    ArrayList<byte[]> busyEvents = new ArrayList<byte[]>();
    ArrayList<String> tentativeMonths = new ArrayList<String>();
    ArrayList<byte[]> tentativeEvents = new ArrayList<byte[]>();
    ArrayList<String> oofMonths = new ArrayList<String>();
    ArrayList<byte[]> oofEvents = new ArrayList<byte[]>();
    ArrayList<String> allMonths = new ArrayList<String>();
    ArrayList<byte[]> allEvents = new ArrayList<byte[]>();
    encodeIntervals(fb, startMonth, endMonth, IcalXmlStrMap.FBTYPE_BUSY, busyMonths, busyEvents, consolidated);
    encodeIntervals(fb, startMonth, endMonth, IcalXmlStrMap.FBTYPE_BUSY_TENTATIVE, tentativeMonths, tentativeEvents, consolidated);
    encodeIntervals(fb, startMonth, endMonth, IcalXmlStrMap.FBTYPE_BUSY_UNAVAILABLE, oofMonths, oofEvents, consolidated);
    encodeIntervals(consolidated, startMonth, endMonth, IcalXmlStrMap.FBTYPE_BUSY, allMonths, allEvents, null);
    if (tentativeMonths.size() > 0 && tentativeEvents.size() > 0) {
        NonEmptyArrayOfPropertyValuesType nonEmptyTentativeMonths = new NonEmptyArrayOfPropertyValuesType();
        nonEmptyTentativeMonths.getValue().addAll(tentativeMonths);
        ret.put(PidTagScheduleInfoMonthsTentative, nonEmptyTentativeMonths);
        NonEmptyArrayOfPropertyValuesType nonEmptyTentativeEvents = new NonEmptyArrayOfPropertyValuesType();
        for (byte[] buf : tentativeEvents) {
            nonEmptyTentativeEvents.getValue().add(encodeBase64LittleEndian(buf));
        }
        ret.put(PidTagScheduleInfoFreeBusyTentative, nonEmptyTentativeEvents);
    }
    if (busyMonths.size() > 0 && busyEvents.size() > 0) {
        NonEmptyArrayOfPropertyValuesType nonEmptyBusyMonths = new NonEmptyArrayOfPropertyValuesType();
        nonEmptyBusyMonths.getValue().addAll(busyMonths);
        ret.put(PidTagScheduleInfoMonthsBusy, nonEmptyBusyMonths);
        NonEmptyArrayOfPropertyValuesType nonEmptyBusyEvents = new NonEmptyArrayOfPropertyValuesType();
        for (byte[] buf : busyEvents) {
            nonEmptyBusyEvents.getValue().add(encodeBase64LittleEndian(buf));
        }
        ret.put(PidTagScheduleInfoFreeBusyBusy, nonEmptyBusyEvents);
    }
    if (oofMonths.size() > 0 && oofEvents.size() > 0) {
        NonEmptyArrayOfPropertyValuesType nonEmptyOofMonths = new NonEmptyArrayOfPropertyValuesType();
        nonEmptyOofMonths.getValue().addAll(oofMonths);
        ret.put(PidTagScheduleInfoMonthsAway, nonEmptyOofMonths);
        NonEmptyArrayOfPropertyValuesType nonEmptyOofEvents = new NonEmptyArrayOfPropertyValuesType();
        for (byte[] buf : oofEvents) {
            nonEmptyOofEvents.getValue().add(encodeBase64LittleEndian(buf));
        }
        ret.put(PidTagScheduleInfoFreeBusyAway, nonEmptyOofEvents);
    }
    if (allMonths.size() > 0 && allEvents.size() > 0) {
        NonEmptyArrayOfPropertyValuesType nonEmptyAllMonths = new NonEmptyArrayOfPropertyValuesType();
        nonEmptyAllMonths.getValue().addAll(allMonths);
        ret.put(PidTagScheduleInfoMonthsMerged, nonEmptyAllMonths);
        NonEmptyArrayOfPropertyValuesType nonEmptyAllEvents = new NonEmptyArrayOfPropertyValuesType();
        for (byte[] buf : allEvents) {
            nonEmptyAllEvents.getValue().add(encodeBase64LittleEndian(buf));
        }
        ret.put(PidTagScheduleInfoFreeBusyMerged, nonEmptyAllEvents);
    }
    NonEmptyArrayOfPropertyValuesType fbStartTime = new NonEmptyArrayOfPropertyValuesType();
    fbStartTime.getValue().add(String.valueOf(lMinutesSinceMsEpoch(fb.getStartTime())));
    ret.put(PidTagFreeBusyPublishStart, fbStartTime);
    NonEmptyArrayOfPropertyValuesType fbEndTime = new NonEmptyArrayOfPropertyValuesType();
    fbEndTime.getValue().add(String.valueOf(lMinutesSinceMsEpoch(fb.getEndTime())));
    ret.put(PidTagFreeBusyPublishEnd, fbEndTime);
    NonEmptyArrayOfPropertyValuesType nonEmptyEmailAddress = new NonEmptyArrayOfPropertyValuesType();
    nonEmptyEmailAddress.getValue().add(mOu + getRcpt(LC.freebusy_exchange_cn3) + mCn);
    ret.put(PidTagFreeBusyMessageEmailAddress, nonEmptyEmailAddress);
    return ret;
}
Also used : HashMap(java.util.HashMap) IntervalList(com.zimbra.cs.fb.FreeBusy.IntervalList) ArrayList(java.util.ArrayList) PathToExtendedFieldType(com.microsoft.schemas.exchange.services._2006.types.PathToExtendedFieldType) NonEmptyArrayOfPropertyValuesType(com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfPropertyValuesType)

Aggregations

NonEmptyArrayOfPropertyValuesType (com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfPropertyValuesType)2 PathToExtendedFieldType (com.microsoft.schemas.exchange.services._2006.types.PathToExtendedFieldType)2 CreateItemResponseType (com.microsoft.schemas.exchange.services._2006.messages.CreateItemResponseType)1 CreateItemType (com.microsoft.schemas.exchange.services._2006.messages.CreateItemType)1 FindFolderResponseMessageType (com.microsoft.schemas.exchange.services._2006.messages.FindFolderResponseMessageType)1 FindFolderType (com.microsoft.schemas.exchange.services._2006.messages.FindFolderType)1 FindItemResponseMessageType (com.microsoft.schemas.exchange.services._2006.messages.FindItemResponseMessageType)1 FindItemType (com.microsoft.schemas.exchange.services._2006.messages.FindItemType)1 FolderInfoResponseMessageType (com.microsoft.schemas.exchange.services._2006.messages.FolderInfoResponseMessageType)1 GetFolderType (com.microsoft.schemas.exchange.services._2006.messages.GetFolderType)1 ResponseMessageType (com.microsoft.schemas.exchange.services._2006.messages.ResponseMessageType)1 UpdateItemResponseType (com.microsoft.schemas.exchange.services._2006.messages.UpdateItemResponseType)1 UpdateItemType (com.microsoft.schemas.exchange.services._2006.messages.UpdateItemType)1 BaseFolderType (com.microsoft.schemas.exchange.services._2006.types.BaseFolderType)1 ExtendedPropertyType (com.microsoft.schemas.exchange.services._2006.types.ExtendedPropertyType)1 FolderType (com.microsoft.schemas.exchange.services._2006.types.FolderType)1 ItemChangeType (com.microsoft.schemas.exchange.services._2006.types.ItemChangeType)1 ItemType (com.microsoft.schemas.exchange.services._2006.types.ItemType)1 MailboxCultureType (com.microsoft.schemas.exchange.services._2006.types.MailboxCultureType)1 NonEmptyArrayOfAllItemsType (com.microsoft.schemas.exchange.services._2006.types.NonEmptyArrayOfAllItemsType)1