@@ -12,31 +12,39 @@ internal static class QueueDescriptionExtensions
1212 {
1313 public static XDocument Serialize ( this QueueDescription description )
1414 {
15+ var queueDescriptionElements = new List < object > ( )
16+ {
17+ new XElement ( XName . Get ( "LockDuration" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . LockDuration ) ) ,
18+ new XElement ( XName . Get ( "MaxSizeInMegabytes" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . MaxSizeInMB ) ) ,
19+ new XElement ( XName . Get ( "RequiresDuplicateDetection" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . RequiresDuplicateDetection ) ) ,
20+ new XElement ( XName . Get ( "RequiresSession" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . RequiresSession ) ) ,
21+ description . DefaultMessageTimeToLive != TimeSpan . MaxValue ? new XElement ( XName . Get ( "DefaultMessageTimeToLive" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . DefaultMessageTimeToLive ) ) : null ,
22+ new XElement ( XName . Get ( "DeadLetteringOnMessageExpiration" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnableDeadLetteringOnMessageExpiration ) ) ,
23+ description . RequiresDuplicateDetection && description . DuplicateDetectionHistoryTimeWindow != default ?
24+ new XElement ( XName . Get ( "DuplicateDetectionHistoryTimeWindow" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . DuplicateDetectionHistoryTimeWindow ) )
25+ : null ,
26+ new XElement ( XName . Get ( "MaxDeliveryCount" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . MaxDeliveryCount ) ) ,
27+ new XElement ( XName . Get ( "EnableBatchedOperations" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnableBatchedOperations ) ) ,
28+ description . AuthorizationRules ? . Serialize ( ) ,
29+ new XElement ( XName . Get ( "Status" , ManagementClientConstants . SbNs ) , description . Status . ToString ( ) ) ,
30+ description . ForwardTo != null ? new XElement ( XName . Get ( "ForwardTo" , ManagementClientConstants . SbNs ) , description . ForwardTo ) : null ,
31+ description . UserMetadata != null ? new XElement ( XName . Get ( "UserMetadata" , ManagementClientConstants . SbNs ) , description . UserMetadata ) : null ,
32+ description . AutoDeleteOnIdle != TimeSpan . MaxValue ? new XElement ( XName . Get ( "AutoDeleteOnIdle" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . AutoDeleteOnIdle ) ) : null ,
33+ new XElement ( XName . Get ( "EnablePartitioning" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnablePartitioning ) ) ,
34+ description . ForwardDeadLetteredMessagesTo != null ? new XElement ( XName . Get ( "ForwardDeadLetteredMessagesTo" , ManagementClientConstants . SbNs ) , description . ForwardDeadLetteredMessagesTo ) : null
35+ } ;
36+
37+ if ( description . UnknownProperties != null )
38+ {
39+ queueDescriptionElements . AddRange ( description . UnknownProperties ) ;
40+ }
41+
1542 return new XDocument (
1643 new XElement ( XName . Get ( "entry" , ManagementClientConstants . AtomNs ) ,
1744 new XElement ( XName . Get ( "content" , ManagementClientConstants . AtomNs ) ,
1845 new XAttribute ( "type" , "application/xml" ) ,
1946 new XElement ( XName . Get ( "QueueDescription" , ManagementClientConstants . SbNs ) ,
20- new XElement ( XName . Get ( "LockDuration" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . LockDuration ) ) ,
21- new XElement ( XName . Get ( "MaxSizeInMegabytes" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . MaxSizeInMB ) ) ,
22- new XElement ( XName . Get ( "RequiresDuplicateDetection" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . RequiresDuplicateDetection ) ) ,
23- new XElement ( XName . Get ( "RequiresSession" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . RequiresSession ) ) ,
24- description . DefaultMessageTimeToLive != TimeSpan . MaxValue ? new XElement ( XName . Get ( "DefaultMessageTimeToLive" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . DefaultMessageTimeToLive ) ) : null ,
25- new XElement ( XName . Get ( "DeadLetteringOnMessageExpiration" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnableDeadLetteringOnMessageExpiration ) ) ,
26- description . RequiresDuplicateDetection && description . DuplicateDetectionHistoryTimeWindow != default ?
27- new XElement ( XName . Get ( "DuplicateDetectionHistoryTimeWindow" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . DuplicateDetectionHistoryTimeWindow ) )
28- : null ,
29- new XElement ( XName . Get ( "MaxDeliveryCount" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . MaxDeliveryCount ) ) ,
30- new XElement ( XName . Get ( "EnableBatchedOperations" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnableBatchedOperations ) ) ,
31- description . AuthorizationRules ? . Serialize ( ) ,
32- new XElement ( XName . Get ( "Status" , ManagementClientConstants . SbNs ) , description . Status . ToString ( ) ) ,
33- description . ForwardTo != null ? new XElement ( XName . Get ( "ForwardTo" , ManagementClientConstants . SbNs ) , description . ForwardTo ) : null ,
34- description . UserMetadata != null ? new XElement ( XName . Get ( "UserMetadata" , ManagementClientConstants . SbNs ) , description . UserMetadata ) : null ,
35- description . AutoDeleteOnIdle != TimeSpan . MaxValue ? new XElement ( XName . Get ( "AutoDeleteOnIdle" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . AutoDeleteOnIdle ) ) : null ,
36- new XElement ( XName . Get ( "EnablePartitioning" , ManagementClientConstants . SbNs ) , XmlConvert . ToString ( description . EnablePartitioning ) ) ,
37- description . ForwardDeadLetteredMessagesTo != null ? new XElement ( XName . Get ( "ForwardDeadLetteredMessagesTo" , ManagementClientConstants . SbNs ) , description . ForwardDeadLetteredMessagesTo ) : null
38- ) )
39- ) ) ;
47+ queueDescriptionElements . ToArray ( ) ) ) ) ) ;
4048 }
4149
4250 public static QueueDescription ParseFromContent ( string xml )
@@ -131,6 +139,24 @@ private static QueueDescription ParseFromEntryElement(XElement xEntry)
131139 case "AuthorizationRules" :
132140 qd . AuthorizationRules = AuthorizationRules . ParseFromXElement ( element ) ;
133141 break ;
142+ case "AccessedAt" :
143+ case "CreatedAt" :
144+ case "MessageCount" :
145+ case "SizeInBytes" :
146+ case "UpdatedAt" :
147+ case "CountDetails" :
148+ // Ignore known properties
149+ // Do nothing
150+ break ;
151+ default :
152+ // For unknown properties, keep them as-is for forward proof.
153+ if ( qd . UnknownProperties == null )
154+ {
155+ qd . UnknownProperties = new List < object > ( ) ;
156+ }
157+
158+ qd . UnknownProperties . Add ( element ) ;
159+ break ;
134160 }
135161 }
136162
0 commit comments