/// <summary>
 /// WriteToXml
 /// </summary>
 /// <param name="writer"></param>
 void WriteToXml(EwsServiceXmlWriter writer)
 {
     writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ManagementRole);
     WriteRolesToXml(writer, this.userRoles, XmlElementNames.UserRoles);
     WriteRolesToXml(writer, this.applicationRoles, XmlElementNames.ApplicationRoles);
     writer.WriteEndElement();
 }
 /// <summary>
 /// Writes to XML.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="xmlElementName">Name of the XML element.</param>
 internal override void WriteToXml(EwsServiceXmlWriter writer, string xmlElementName)
 {
     writer.WriteStartElement(XmlNamespace.Types, xmlElementName);
     writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.GroupIdentityType, this.IdentityType.ToString());
     writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.GroupIdentityValue, this.Value);
     writer.WriteEndElement();
 }
 /// <summary>
 /// Writes to XML.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="xmlElementName">Name of the XML element.</param>
 internal override void WriteToXml(EwsServiceXmlWriter writer, string xmlElementName)
 {
     writer.WriteStartElement(XmlNamespace.Types, xmlElementName);
     writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.GroupIdentityType, this.IdentityType.ToString());
     writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.GroupIdentityValue, this.Value);
     writer.WriteEndElement();
 }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.ActionType, this.ActionType.ToString());
        writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.HoldId, this.HoldId);
        writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.Query, this.Query ?? "");
        if (this.Mailboxes != null && this.Mailboxes.Length > 0)
        {
            writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.Mailboxes);
            for (String mailbox in this.Mailboxes)
            {
                writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.String, mailbox);
            }

            writer.WriteEndElement();       // Mailboxes
        }

        // Language
        if (!StringUtils.IsNullOrEmpty(this.Language))
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.Language, this.Language);
        }

        if (!StringUtils.IsNullOrEmpty(this.InPlaceHoldIdentity))
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.InPlaceHoldIdentity, this.InPlaceHoldIdentity);
        }

        if (!StringUtils.IsNullOrEmpty(this.ItemHoldPeriod))
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.ItemHoldPeriod, this.ItemHoldPeriod);
        }
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        this.ItemProperties.WriteToXml(writer, ServiceObjectType.Item);

        this.FoldersToIgnore.WriteToXml(writer, XmlNamespace.Messages, XmlElementNames.FoldersToIgnore);

        if (this.MaxItemsToReturn.HasValue)
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.MaxItemsToReturn, this.MaxItemsToReturn.Value);
        }

        if (this.SortOrder.HasValue)
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.SortOrder, this.SortOrder.Value);
        }

        if (this.MailboxScope.HasValue)
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.MailboxScope, this.MailboxScope.Value);
        }

        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.Conversations);
        this.Conversations.ForEach((conversation) => conversation.WriteToXml(writer, XmlElementNames.Conversation));
        writer.WriteEndElement();
    }
Exemple #6
0
    /// <summary>
    /// Writes a dictionary object (key or value) to Xml.
    /// </summary>
    /// <param name="writer">The writer.</param>
    /// <param name="xmlElementName">The Xml element name.</param>
    /// <param name="dictionaryObject">The object to write.</param>
    /* private */ void WriteObjectToXml(
        EwsServiceXmlWriter writer,
        String xmlElementName,
        object dictionaryObject)
    {
        EwsUtilities.Assert(
            writer != null,
            "UserConfigurationDictionary.WriteObjectToXml",
            "writer is null");
        EwsUtilities.Assert(
            xmlElementName != null,
            "UserConfigurationDictionary.WriteObjectToXml",
            "xmlElementName is null");

        writer.WriteStartElement(XmlNamespace.Types, xmlElementName);

        if (dictionaryObject == null)
        {
            EwsUtilities.Assert(
                xmlElementName != XmlElementNames.DictionaryKey,
                "UserConfigurationDictionary.WriteObjectToXml",
                "Key is null");

            writer.WriteAttributeValue(
                EwsUtilities.EwsXmlSchemaInstanceNamespacePrefix,
                XmlAttributeNames.Nil,
                EwsUtilities.XSTrue);
        }
        else
        {
            this.WriteObjectValueToXml(writer, dictionaryObject);
        }

        writer.WriteEndElement();
    }
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal void WriteToXml(EwsServiceXmlWriter writer)
        {
            writer.WriteStartElement(XmlNamespace.Types, this.GetXmlElementName());

            this.WriteAttributesToXml(writer);

            writer.WriteEndElement(); // this.GetXmlElementName()
        }
Exemple #8
0
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="groupBy">The group by clause.</param>
        internal override void WriteToXml(EwsServiceXmlWriter writer, Grouping groupBy)
        {
            writer.WriteStartElement(XmlNamespace.Messages, this.GetViewXmlElementName());

            this.InternalWriteViewToXml(writer);

            writer.WriteEndElement();
        }
        /// <summary>
        /// Writes XML body.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal void WriteBodyToXml(EwsServiceXmlWriter writer)
        {
            writer.WriteStartElement(XmlNamespace.Autodiscover, this.GetRequestXmlElementName());
            this.WriteAttributesToXml(writer);
            this.WriteElementsToXml(writer);

            writer.WriteEndElement(); // m:this.GetXmlElementName()
        }
Exemple #10
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Mailbox);
        writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.Address, this.SmtpAddress);
        writer.WriteEndElement();     // Mailbox

        this.OofSettings.WriteToXml(writer, XmlElementNames.UserOofSettings);
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        // Emit the view element
        //
        this.View.WriteToXml(writer, null);

        // Emit the Sort Order
        //
        this.View.WriteOrderByToXml(writer);

        // Emit the Parent Folder Id
        //
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ParentFolderId);
        this.FolderId.WriteToXml(writer);
        writer.WriteEndElement();

        // Emit the MailboxScope flag
        //
        if (this.MailboxScope.HasValue)
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.MailboxScope, this.MailboxScope.Value);
        }

        if (!StringUtils.IsNullOrEmpty(this.queryString))
        {
            // Emit the QueryString
            //
            writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.QueryString);

            if (this.ReturnHighlightTerms)
            {
                writer.WriteAttributeString(XmlAttributeNames.ReturnHighlightTerms, this.ReturnHighlightTerms.ToString().ToLowerInvariant());
            }

            writer.WriteValue(this.queryString, XmlElementNames.QueryString);
            writer.WriteEndElement();
        }

        if (this.Service.RequestedServerVersion >= ExchangeVersion.Exchange2013)
        {
            if (this.View.PropertySet != null)
            {
                this.View.PropertySet.WriteToXml(writer, ServiceObjectType.Conversation);
            }
        }
    }
Exemple #12
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ArchiveSourceFolderId);
        this.SourceFolderId.WriteToXml(writer);
        writer.WriteEndElement();

        this.WriteIdsToXml(writer);
    }
Exemple #13
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ToFolderId);
        this.DestinationFolderId.WriteToXml(writer);
        writer.WriteEndElement();

        this.WriteIdsToXml(writer);
    }
Exemple #14
0
 void WriteElementsToXml(EwsServiceXmlWriter writer)
 {
     for (Uint8List item in this.content)
     {
         writer.WriteStartElement(XmlNamespace.Types, ByteArrayArray.ItemXmlElementName);
         writer.WriteBase64ElementValue(item);
         writer.WriteEndElement();
     }
 }
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="xmlElementName">Name of the XML element.</param>
        internal override void WriteToXml(EwsServiceXmlWriter writer, string xmlElementName)
        {
            writer.WriteStartElement(XmlNamespace.Types, xmlElementName);
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SortType, this.SortType.ToString());
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.FilterType, this.FilterType.ToString());
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SortDirection, this.SortDirection.ToString());

            writer.WriteEndElement();
        }
Exemple #16
0
    void WriteToXml(EwsServiceXmlWriter writer, String xmlElementName)
    {
        writer.WriteStartElement(XmlNamespace.Types, xmlElementName);
        writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SortType, this.SortType.ToString());
        writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.FilterType, this.FilterType.ToString());
        writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SortDirection, this.SortDirection.ToString());

        writer.WriteEndElement();
    }
Exemple #17
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.TokenRequests);

        for (ClientAccessTokenRequest tokenRequestInfo in this.TokenRequests)
        {
            writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.TokenRequest);
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.Id, tokenRequestInfo.Id);
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.TokenType, tokenRequestInfo.TokenType);
            if (!StringUtils.IsNullOrEmpty(tokenRequestInfo.Scope))
            {
                writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.HighlightTermScope, tokenRequestInfo.Scope);
            }

            writer.WriteEndElement();
        }

        writer.WriteEndElement();
    }
    /// <summary>
    /// Writes to XML.
    /// </summary>
    /// <param name="writer">The writer.</param>
    /// <param name="requestedServerVersion">The requested server version.</param>
    void WriteToXml(EwsServiceXmlWriter writer, ExchangeVersion requestedServerVersion)
    {
        if (StringUtils.IsNullOrEmpty(this.id))
        {
            throw new ArgumentError(Strings.IdPropertyMustBeSet);
        }

        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.OpenAsAdminOrSystemService);
        writer.WriteAttributeString(XmlElementNames.LogonType, this.logonType.ToString());
        if (requestedServerVersion >= ExchangeVersion.Exchange2013 && this.budgetType.HasValue)
        {
            writer.WriteAttributeString(XmlElementNames.BudgetType, ((int)this.budgetType.Value).ToString());
        }

        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ConnectingSID);
        writer.WriteElementValue(XmlNamespace.Types, this.idType.ToString(), this.id);
        writer.WriteEndElement();     // ConnectingSID
        writer.WriteEndElement();     // OpenAsAdminOrSystemService
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        if (null != this.requestedExtensionIds && this.requestedExtensionIds.Count > 0)
        {
            writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ClientExtensionRequestedIds);
            requestedExtensionIds.WriteElementsToXml(writer);
            writer.WriteEndElement();
        }

        if (this.isUserScope)
        {
            writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ClientExtensionUserRequest);

            writer.WriteAttributeValue(XmlAttributeNames.ClientExtensionUserIdentity, this.userId);

            if (shouldReturnEnabledOnly)
            {
                writer.WriteAttributeValue(XmlAttributeNames.ClientExtensionEnabledOnly, this.shouldReturnEnabledOnly);
            }

            if (null != this.userEnabledExtensionIds && this.userEnabledExtensionIds.Count > 0)
            {
                writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ClientExtensionUserEnabled);
                userEnabledExtensionIds.WriteElementsToXml(writer);
                writer.WriteEndElement();
            }

            if (null != this.userDisabledExtensionIds && this.userDisabledExtensionIds.Count > 0)
            {
                writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ClientExtensionUserDisabled);
                userDisabledExtensionIds.WriteElementsToXml(writer);
                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }

        if (isDebug)
        {
            writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.ClientExtensionIsDebug, isDebug);
        }
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.EmailAddresses);

        for (String emailAddress in this.Emailaddresses)
        {
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.String, emailAddress);
        }

        writer.WriteEndElement();
    }
Exemple #21
0
        /// <summary>
        /// Writes elements to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            if (this.SearchFilter != null)
            {
                writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Restriction);
                this.SearchFilter.WriteToXml(writer);
                writer.WriteEndElement(); // Restriction
            }

            this.RootFolderIds.WriteToXml(writer, XmlElementNames.BaseFolderIds);
        }
 void WriteElementsToXml(EwsServiceXmlWriter writer)
 {
     writer.WriteStartElement(
         XmlNamespace.Messages,
         XmlElementNames.ConversationActions);
     for (int iAction = 0; iAction < this.ConversationActions.Count; iAction++)
     {
         this.ConversationActions[iAction].WriteElementsToXml(writer);
     }
     writer.WriteEndElement();
 }
Exemple #23
0
    /// <summary>
    /// Writes a dictionary entry value to Xml.
    /// </summary>
    /// <param name="writer">The writer.</param>
    /// <param name="value">Value to write.</param>
    /* private */ void WriteEntryValueToXml(EwsServiceXmlWriter writer, String value)
    {
        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Value);

        // While an entry value can't be null, if the entry is an array, an element of the array can be null.
        if (value != null)
        {
            writer.WriteValue(value, XmlElementNames.Value);
        }

        writer.WriteEndElement();
    }
Exemple #24
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.Mailboxes);
        for (String mailbox in this.Mailboxes)
        {
            writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.LegacyDN, mailbox);
        }

        writer.WriteEndElement();

        writer.WriteElementValue(XmlNamespace.Messages, XmlElementNames.SearchArchiveOnly, this.SearchArchiveOnly);
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        if (null != this.SpecificUsers)
        {
            writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ClientExtensionSpecificUsers);
            this.SpecificUsers.WriteElementsToXml(writer);
            writer.WriteEndElement();
        }

        if (null != this.ManifestStream)
        {
            if (this.ManifestStream.CanSeek)
            {
                this.ManifestStream.Position = 0;
            }

            writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Manifest);
            writer.WriteBase64ElementValue(this.ManifestStream);
            writer.WriteEndElement();
        }
    }
        /// <summary>
        /// Writes XML elements.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            if (this.SearchFilter != null)
            {
                // Emit the Restriction element
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.Restriction);
                this.SearchFilter.WriteToXml(writer);
                writer.WriteEndElement();
            }

            // Emit the View element
            this.View.WriteToXml(writer, null);

            // Emit the SortOrder
            this.View.WriteOrderByToXml(writer);

            // Emit the ParentFolderId element
            if (this.FolderId != null)
            {
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ParentFolderId);
                this.FolderId.WriteToXml(writer);
                writer.WriteEndElement();
            }

            if (!string.IsNullOrEmpty(this.QueryString))
            {
                // Emit the QueryString element
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.QueryString);
                writer.WriteValue(this.QueryString, XmlElementNames.QueryString);
                writer.WriteEndElement();
            }

            if (this.Service.RequestedServerVersion >= this.GetMinimumRequiredServerVersion())
            {
                if (this.View.PropertySet != null)
                {
                    this.View.PropertySet.WriteToXml(writer, ServiceObjectType.Persona);
                }
            }
        }
Exemple #27
0
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        base.WriteElementsToXml(writer);

        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.UserIds);

        for (UserId userId in this.UserIds)
        {
            userId.WriteToXml(writer, XmlElementNames.UserId);
        }

        writer.WriteEndElement();     // UserIds
    }
    void WriteElementsToXml(EwsServiceXmlWriter writer)
    {
        writer.WriteAttributeValue(XmlAttributeNames.DestinationFormat, this.DestinationFormat);

        writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.SourceIds);

        for (AlternateIdBase alternateId in this.Ids)
        {
            alternateId.WriteToXml(writer);
        }

        writer.WriteEndElement();     // SourceIds
    }
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="xmlElementName">Name of the XML element.</param>
        internal override void WriteToXml(EwsServiceXmlWriter writer, string xmlElementName)
        {
            writer.WriteStartElement(XmlNamespace.Types, xmlElementName);

            this.ConversationId.WriteToXml(writer);

            if (this.SyncState != null)
            {
                writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SyncState, this.SyncState);
            }

            writer.WriteEndElement();
        }
Exemple #30
0
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="xmlElementName">Name of the XML element.</param>
        internal override void WriteToXml(EwsServiceXmlWriter writer, string xmlElementName)
        {
            writer.WriteStartElement(XmlNamespace.Types, xmlElementName);

            this.ConversationId.WriteToXml(writer);

            if (this.SyncState != null)
            {
                writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.SyncState, this.SyncState);
            }

            writer.WriteEndElement();
        }
    /// <summary>
    /// WriteRolesToXml
    /// </summary>
    /// <param name="writer"></param>
    /// <param name="roles"></param>
    /// <param name="elementName"></param>
    /* private */ void WriteRolesToXml(EwsServiceXmlWriter writer, string[] roles, String elementName)
    {
        if (roles != null)
        {
            writer.WriteStartElement(XmlNamespace.Types, elementName);

            for (String role in roles)
            {
                writer.WriteElementValue(XmlNamespace.Types, XmlElementNames.Role, role);
            }

            writer.WriteEndElement();
        }
    }
        /// <summary>
        /// Writes request to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            writer.WriteStartElement(XmlNamespace.Autodiscover, XmlElementNames.Request);

            writer.WriteStartElement(XmlNamespace.Autodiscover, XmlElementNames.Domains);

            foreach (string domain in this.Domains)
            {
                if (!string.IsNullOrEmpty(domain))
                {
                    writer.WriteElementValue(
                        XmlNamespace.Autodiscover,
                        XmlElementNames.Domain,
                        domain);
                }
            }
            writer.WriteEndElement(); // Domains

            writer.WriteStartElement(XmlNamespace.Autodiscover, XmlElementNames.RequestedSettings);
            foreach (DomainSettingName setting in settings)
            {
                writer.WriteElementValue(
                    XmlNamespace.Autodiscover,
                    XmlElementNames.Setting,
                    setting);
            }

            writer.WriteEndElement(); // RequestedSettings

            if (this.requestedVersion.HasValue)
            {
                writer.WriteElementValue(XmlNamespace.Autodiscover, XmlElementNames.RequestedVersion, this.requestedVersion.Value);
            }

            writer.WriteEndElement(); // Request
        }
    /// <summary>
    /// Writes to XML.
    /// </summary>
    /// <param name="writer">The writer.</param>
    void WriteToXml(EwsServiceXmlWriter writer)
    {
        if (StringUtils.IsNullOrEmpty(this.id))
        {
            throw new ArgumentError(Strings.IdPropertyMustBeSet);
        }

        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ExchangeImpersonation);
        writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.ConnectingSID);

        // For 2007 SP1, use PrimarySmtpAddress for type SmtpAddress
        String connectingIdTypeLocalName =
            (this.idType == ConnectingIdType.SmtpAddress) && (writer.Service.RequestedServerVersion == ExchangeVersion.Exchange2007_SP1)
                    ? XmlElementNames.PrimarySmtpAddress
                    : this.IdType.ToString();

        writer.WriteElementValue(
            XmlNamespace.Types,
            connectingIdTypeLocalName,
            this.id);

        writer.WriteEndElement();     // ConnectingSID
        writer.WriteEndElement();     // ExchangeImpersonation
    }
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal void WriteToXml(EwsServiceXmlWriter writer)
        {
            writer.WriteStartElement(XmlNamespace.Types, this.GetXmlElementName());

            this.WriteAttributesToXml(writer);

            writer.WriteEndElement(); // this.GetXmlElementName()
        }
        /// <summary>
        /// Writes XML elements.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.RequestedGroupsSets);

            if (this.RequestedUnifiedGroupsSets != null)
            { 
                this.RequestedUnifiedGroupsSets.ForEach((unifiedGroupsSet) => unifiedGroupsSet.WriteToXml(writer, XmlElementNames.RequestedUnifiedGroupsSetItem));
            }

            writer.WriteEndElement();

            if (!string.IsNullOrEmpty(this.UserSmtpAddress))
            {
                writer.WriteElementValue(XmlNamespace.NotSpecified, XmlElementNames.UserSmtpAddress, this.UserSmtpAddress);
            }
        }
        /// <summary>
        /// Writes XML elements.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            if (this.SearchFilter != null)
            {
                // Emit the Restriction element
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.Restriction);
                this.SearchFilter.WriteToXml(writer);
                writer.WriteEndElement();
            }

            // Emit the View element
            this.View.WriteToXml(writer, null);

            // Emit the SortOrder
            this.View.WriteOrderByToXml(writer);

            // Emit the ParentFolderId element
            if (this.FolderId != null)
            {
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.ParentFolderId);
                this.FolderId.WriteToXml(writer);
                writer.WriteEndElement();
            }

            if (!string.IsNullOrEmpty(this.QueryString))
            {
                // Emit the QueryString element
                writer.WriteStartElement(XmlNamespace.Messages, XmlElementNames.QueryString);
                writer.WriteValue(this.QueryString, XmlElementNames.QueryString);
                writer.WriteEndElement();
            }

            if (this.Service.RequestedServerVersion >= this.GetMinimumRequiredServerVersion())
            {
                if (this.View.PropertySet != null)
                {
                    this.View.PropertySet.WriteToXml(writer, ServiceObjectType.Persona);
                }
            }
        }
        /// <summary>
        /// Writes elements to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        internal override void WriteElementsToXml(EwsServiceXmlWriter writer)
        {
            if (this.SearchFilter != null)
            {
                writer.WriteStartElement(XmlNamespace.Types, XmlElementNames.Restriction);
                this.SearchFilter.WriteToXml(writer);
                writer.WriteEndElement(); // Restriction
            }

            this.RootFolderIds.WriteToXml(writer, XmlElementNames.BaseFolderIds);
        }
        /// <summary>
        /// Writes to XML.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="groupBy">The group by clause.</param>
        internal override void WriteToXml(EwsServiceXmlWriter writer, Grouping groupBy)
        {
            writer.WriteStartElement(XmlNamespace.Messages, this.GetViewXmlElementName());

            this.InternalWriteViewToXml(writer);

            writer.WriteEndElement();
        }