in sdk/servicebus/Microsoft.Azure.ServiceBus/src/Management/QueueDescriptionExtensions.cs [76:179]
private static QueueDescription ParseFromEntryElement(XElement xEntry)
{
var name = xEntry.Element(XName.Get("title", ManagementClientConstants.AtomNamespace)).Value;
var qdXml = xEntry.Element(XName.Get("content", ManagementClientConstants.AtomNamespace))?
.Element(XName.Get("QueueDescription", ManagementClientConstants.ServiceBusNamespace));
if (qdXml == null)
{
throw new MessagingEntityNotFoundException("Queue was not found");
}
var qd = new QueueDescription(name);
foreach (var element in qdXml.Elements())
{
switch (element.Name.LocalName)
{
case "LockDuration":
qd.LockDuration = XmlConvert.ToTimeSpan(element.Value);
break;
case "MaxSizeInMegabytes":
qd.MaxSizeInMB = Int64.Parse(element.Value);
break;
case "RequiresDuplicateDetection":
qd.RequiresDuplicateDetection = Boolean.Parse(element.Value);
break;
case "RequiresSession":
qd.RequiresSession = Boolean.Parse(element.Value);
break;
case "DefaultMessageTimeToLive":
qd.DefaultMessageTimeToLive = XmlConvert.ToTimeSpan(element.Value);
break;
case "DeadLetteringOnMessageExpiration":
qd.EnableDeadLetteringOnMessageExpiration = Boolean.Parse(element.Value);
break;
case "DuplicateDetectionHistoryTimeWindow":
qd.duplicateDetectionHistoryTimeWindow = XmlConvert.ToTimeSpan(element.Value);
break;
case "MaxDeliveryCount":
qd.MaxDeliveryCount = Int32.Parse(element.Value);
break;
case "EnableBatchedOperations":
qd.EnableBatchedOperations = Boolean.Parse(element.Value);
break;
case "IsAnonymousAccessible":
qd.IsAnonymousAccessible = Boolean.Parse(element.Value);
break;
case "AuthorizationRules":
qd.AuthorizationRules = AuthorizationRules.ParseFromXElement(element);
break;
case "Status":
qd.Status = (EntityStatus)Enum.Parse(typeof(EntityStatus), element.Value);
break;
case "ForwardTo":
if (!string.IsNullOrWhiteSpace(element.Value))
{
qd.ForwardTo = element.Value;
}
break;
case "UserMetadata":
qd.UserMetadata = element.Value;
break;
case "SupportOrdering":
qd.SupportOrdering = Boolean.Parse(element.Value);
break;
case "AutoDeleteOnIdle":
qd.AutoDeleteOnIdle = XmlConvert.ToTimeSpan(element.Value);
break;
case "EnablePartitioning":
qd.EnablePartitioning = bool.Parse(element.Value);
break;
case "ForwardDeadLetteredMessagesTo":
if (!string.IsNullOrWhiteSpace(element.Value))
{
qd.ForwardDeadLetteredMessagesTo = element.Value;
}
break;
case "EnableExpress":
qd.EnableExpress = bool.Parse(element.Value);
break;
case "AccessedAt":
case "CreatedAt":
case "MessageCount":
case "SizeInBytes":
case "UpdatedAt":
case "CountDetails":
case "EntityAvailabilityStatus":
case "SkippedUpdate":
// Ignore known properties
// Do nothing
break;
default:
// For unknown properties, keep them as-is for forward proof.
if (qd.UnknownProperties == null)
{
qd.UnknownProperties = new List<XElement>();
}
qd.UnknownProperties.Add(element);
break;
}
}
return qd;
}