private static ICrmSubscriptionMessage Create(string messageBody, BrokeredMessage message) { Dictionary <string, string> jsonDictionary = JsonConvert.DeserializeObject <Dictionary <string, string> >(messageBody); if (!jsonDictionary.ContainsKey("MessageName")) { ADXTrace.Instance.TraceWarning(TraceCategory.Application, string.Format("Unexpected message format. MessageId: {0} ", message.MessageId)); return(null); } switch (jsonDictionary["MessageName"]) { case "MetadataChange": NotificationUpdateManager.Instance.MetadataDirty = true; return(MetadataMessage.DeserializeMessage(messageBody, message)); case "Create": case "Update": case "Delete": return(EntityRecordMessage.DeserializeMessage(messageBody, message)); case "AssociateEntities": case "DisassociateEntities": return(AssociateDisassociateMessage.DeserializeMessage(messageBody, message)); default: ADXTrace.Instance.TraceWarning(TraceCategory.Application, string.Format("Unexpected message type: {0} ", jsonDictionary["MessageName"])); return(null); } }
/// <summary> /// Deserialize the BrokeredMessage message body into a MetadataMessage /// </summary> /// <param name="message">BrokeredMessage message body</param> /// <param name="brokeredMessage">BrokeredMessage message</param> /// <returns>ICrmSubscriptionMessage</returns> internal static ICrmSubscriptionMessage DeserializeMessage(string message, BrokeredMessage brokeredMessage) { MetadataMessage metadataMessage = (MetadataMessage)CrmSubscriptionMessage.DeserializeMessage(message, typeof(MetadataMessage)); if (metadataMessage != null && metadataMessage.ValidMessage) { metadataMessage.AppendProperties(brokeredMessage); return(metadataMessage); } return(null); }