public BuildTagsOp <TEvent> DeepCloneWithEvent(TEvent @event) { var result = new BuildTagsOp <TEvent>( this.TrackingCodeId.DeepClone(), @event, this.InheritableTags?.DeepClone()); return(result); }
/// <inheritdoc /> public override IReadOnlyCollection <NamedValue <string> > Execute( BuildTagsOp <TEvent> operation) { new { operation }.AsArg().Must().NotBeNull(); var result = operation.InheritableTags; return(result); }
/// <inheritdoc /> public override IReadOnlyCollection <NamedValue <string> > Execute( BuildTagsOp <TEvent> operation) { new { operation }.AsArg().Must().NotBeNull(); var result = (operation.InheritableTags?.DeepClone() ?? new List <NamedValue <string> >()).ToList(); var tagsToAdd = this.getTagsToAdd(operation.Event); foreach (var tagToAdd in tagsToAdd) { result.Add(new NamedValue <string>(tagToAdd.Name, tagToAdd.Value)); } return(result); }
/// <inheritdoc /> public bool Equals(BuildTagsOp <TEvent> other) { if (ReferenceEquals(this, other)) { return(true); } if (ReferenceEquals(other, null)) { return(false); } var result = this.TrackingCodeId.IsEqualTo(other.TrackingCodeId) && this.Event.IsEqualTo(other.Event) && this.InheritableTags.IsEqualTo(other.InheritableTags); return(result); }
/// <summary> /// Executes an <see cref="IBuildTagsProtocol{TEvent}"/> protocol. /// </summary> /// <remarks> /// This is a convenience method to build a <see cref="BuildTagsOp{TEvent}"/> /// and execute it against the specified protocol. /// </remarks> /// <typeparam name="TEvent">The type of event to build the tags for.</typeparam> /// <param name="protocol">The protocol to execute.</param> /// <param name="trackingCodeId">The tracking code identifier (in-context of the protocol putting the event).</param> /// <param name="event">The event that will be put.</param> /// <param name="inheritableTags">OPTIONAL tags that can be inherited from a prior step in the workflow. DEFAULT is null, indicating that there was no prior step or that no tags have been established in the workflow.</param> /// <returns> /// The tags to use when putting the specified event into a stream. /// </returns> public static IReadOnlyCollection <NamedValue <string> > ExecuteBuildTags <TEvent>( this ISyncReturningProtocol <BuildTagsOp <TEvent>, IReadOnlyCollection <NamedValue <string> > > protocol, long trackingCodeId, TEvent @event, IReadOnlyCollection <NamedValue <string> > inheritableTags = null) where TEvent : IEvent { IReadOnlyCollection <NamedValue <string> > result = null; if (protocol != null) { var buildTagsOperation = new BuildTagsOp <TEvent>(trackingCodeId, @event, inheritableTags); result = protocol.Execute(buildTagsOperation); } return(result); }