static CorrelationQuery CreateDefaultCorrelationQuery(CorrelationQuery query, string action, CorrelationDataDescription data, ref bool shouldPreserveMessage) { MessageQuery messageQuery = new XPathMessageQuery { Expression = string.Format(CultureInfo.InvariantCulture, defaultQueryFormat, data.Name), Namespaces = new XPathMessageContext() }; if (data.IsOptional) { messageQuery = new OptionalMessageQuery { Query = messageQuery }; } if (query == null) { MessageFilter filter; // verify if the data name is added by the context channel bool isContextQuery = (data.Name == contextCorrelationName); // if there is a query that is not a context query set it to true since we might read from // the message body if (!shouldPreserveMessage && !isContextQuery) { shouldPreserveMessage = true; } // this is a server side query, we use an action filter if (action == MessageHeaders.WildcardAction) { filter = new MatchAllMessageFilter(); } else { filter = new ActionMessageFilter(action); } return(new CorrelationQuery { Where = filter, IsDefaultContextQuery = isContextQuery, Select = new MessageQuerySet { { data.Name, messageQuery } } }); } else { query.Select[data.Name] = messageQuery; return(query); } }
private static CorrelationQuery CreateDefaultCorrelationQuery(CorrelationQuery query, string action, CorrelationDataDescription data, ref bool shouldPreserveMessage) { XPathMessageQuery query5 = new XPathMessageQuery { Expression = string.Format(CultureInfo.InvariantCulture, "sm:correlation-data('{0}')", new object[] { data.Name }), Namespaces = new XPathMessageContext() }; MessageQuery query2 = query5; if (data.IsOptional) { OptionalMessageQuery query3 = new OptionalMessageQuery { Query = query2 }; query2 = query3; } if (query == null) { MessageFilter filter; bool flag = data.Name == "wsc-instanceId"; if (!shouldPreserveMessage && !flag) { shouldPreserveMessage = true; } if (action == "*") { filter = new MatchAllMessageFilter(); } else { filter = new ActionMessageFilter(new string[] { action }); } CorrelationQuery query4 = new CorrelationQuery { Where = filter, IsDefaultContextQuery = flag }; MessageQuerySet set = new MessageQuerySet(); set.Add(data.Name, query2); query4.Select = set; return(query4); } query.Select[data.Name] = query2; return(query); }