public static RuleFilter ParseFromXElement(XElement xElement) { var correlationRuleFilter = new CorrelationRuleFilter(); foreach (var element in xElement.Elements()) { switch (element.Name.LocalName) { case "CorrelationId": correlationRuleFilter.CorrelationId = element.Value; break; case "MessageId": correlationRuleFilter.MessageId = element.Value; break; case "To": correlationRuleFilter.To = element.Value; break; case "ReplyTo": correlationRuleFilter.ReplyTo = element.Value; break; case "Label": correlationRuleFilter.Label = element.Value; break; case "SessionId": correlationRuleFilter.SessionId = element.Value; break; case "ReplyToSessionId": correlationRuleFilter.ReplyToSessionId = element.Value; break; case "ContentType": correlationRuleFilter.ContentType = element.Value; break; case "Properties": foreach (var prop in element.Elements(XName.Get("KeyValueOfstringanyType", ManagementClientConstants.ServiceBusNamespace))) { var key = prop.Element(XName.Get("Key", ManagementClientConstants.ServiceBusNamespace))?.Value; var value = XmlObjectConvertor.ParseValueObject(prop.Element(XName.Get("Value", ManagementClientConstants.ServiceBusNamespace))); correlationRuleFilter.Properties.Add(key, value); } break; default: ServiceBusEventSource.Log.ManagementSerializationException( $"{nameof(CorrelationRuleFilterExtensions)}_{nameof(ParseFromXElement)}", element.ToString()); break; } } return(correlationRuleFilter); }
public static XElement Serialize(this CorrelationRuleFilter filter, string filterName) { XElement parameterElement = null; if (filter.properties != null) { parameterElement = new XElement(XName.Get("Properties", ManagementClientConstants.ServiceBusNamespace)); foreach (var param in filter.properties) { parameterElement.Add( new XElement(XName.Get("KeyValueOfstringanyType", ManagementClientConstants.ServiceBusNamespace), new XElement(XName.Get("Key", ManagementClientConstants.ServiceBusNamespace), param.Key), XmlObjectConvertor.SerializeObject(param.Value))); } } return(new XElement( XName.Get("Filter", ManagementClientConstants.ServiceBusNamespace), new XAttribute(XName.Get("type", ManagementClientConstants.XmlSchemaInstanceNamespace), filterName), string.IsNullOrWhiteSpace(filter.CorrelationId) ? null : new XElement(XName.Get("CorrelationId", ManagementClientConstants.ServiceBusNamespace), filter.CorrelationId), string.IsNullOrWhiteSpace(filter.MessageId) ? null : new XElement(XName.Get("MessageId", ManagementClientConstants.ServiceBusNamespace), filter.MessageId), string.IsNullOrWhiteSpace(filter.To) ? null : new XElement(XName.Get("To", ManagementClientConstants.ServiceBusNamespace), filter.To), string.IsNullOrWhiteSpace(filter.ReplyTo) ? null : new XElement(XName.Get("ReplyTo", ManagementClientConstants.ServiceBusNamespace), filter.ReplyTo), string.IsNullOrWhiteSpace(filter.Label) ? null : new XElement(XName.Get("Label", ManagementClientConstants.ServiceBusNamespace), filter.Label), string.IsNullOrWhiteSpace(filter.SessionId) ? null : new XElement(XName.Get("SessionId", ManagementClientConstants.ServiceBusNamespace), filter.SessionId), string.IsNullOrWhiteSpace(filter.ReplyToSessionId) ? null : new XElement(XName.Get("ReplyToSessionId", ManagementClientConstants.ServiceBusNamespace), filter.ReplyToSessionId), string.IsNullOrWhiteSpace(filter.ContentType) ? null : new XElement(XName.Get("ContentType", ManagementClientConstants.ServiceBusNamespace), filter.ContentType), parameterElement)); }