private COWProcessorState InspectNotification(COWTriggerAction operation, StoreSession session, CoreItem item, bool onBeforeNotification, bool onDumpster) { if (onDumpster) { return(COWProcessorState.DoNotProcess); } if (operation != COWTriggerAction.Create) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: not an Create operation."); return(COWProcessorState.DoNotProcess); } if (!onBeforeNotification) { return(COWProcessorState.DoNotProcess); } if (item == null) { return(COWProcessorState.Unknown); } if (item.Id != null) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: ItemId is non-null, so this is not a new item. Do not process."); return(COWProcessorState.DoNotProcess); } MailboxSession mailboxSession = session as MailboxSession; if (mailboxSession == null) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: not a mailbox session. Do not process."); return(COWProcessorState.DoNotProcess); } int?num = mailboxSession.Mailbox.TryGetProperty(MailboxSchema.MailboxTypeDetail) as int?; if (num == null) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: mailbox type not found. Try to inspect later."); return(COWProcessorState.Unknown); } if (!StoreSession.IsGroupMailbox(num.Value)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: Mailbox isn't a GroupMailbox. Do not process."); return(COWProcessorState.DoNotProcess); } string valueOrDefault = item.PropertyBag.GetValueOrDefault <string>(StoreObjectSchema.ItemClass, string.Empty); if (string.IsNullOrEmpty(valueOrDefault)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: item class not found. Try to inspect later."); return(COWProcessorState.Unknown); } if (!ObjectClass.IsMessage(valueOrDefault, false)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: item class is not a message. Do not process."); return(COWProcessorState.DoNotProcess); } if (ObjectClass.IsMeetingForwardNotification(valueOrDefault)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: item class is meeting forward notification. Do not process."); return(COWProcessorState.DoNotProcess); } if (ObjectClass.IsMeetingResponse(valueOrDefault)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: item class is meeting response. Do not process."); return(COWProcessorState.DoNotProcess); } bool flag = ClientInfo.OWA.IsMatch(mailboxSession.ClientInfoString); bool flag2 = ClientInfo.HubTransport.IsMatch(mailboxSession.ClientInfoString); if (!flag && !flag2) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: This isn't either a post or a delivery. Do not process."); return(COWProcessorState.DoNotProcess); } StoreObjectId storeObjectId = item.PropertyBag.TryGetProperty(StoreObjectSchema.ParentItemId) as StoreObjectId; if (storeObjectId == null) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: parent folder id not found. Try to inspect later."); return(COWProcessorState.Unknown); } StoreObjectId defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox); if (defaultFolderId == null) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: inbox folder id not found. Try to inspect later."); return(COWProcessorState.Unknown); } if (!storeObjectId.Equals(defaultFolderId)) { COWGroupMessageWSPublishing.Tracer.TraceDebug((long)this.GetHashCode(), "COWGroupMessageWSPublishing.InspectNotification: This message isn't located on the inbox folder. Do not process."); return(COWProcessorState.DoNotProcess); } return(COWProcessorState.ProcessAfterSave); }