/// <summary> /// Generates either the default stream link or a named stream link based on whether the given stream name is null /// </summary> /// <param name="generator">The generator to extend</param> /// <param name="instance">The entity instance</param> /// <param name="streamName">The stream's name or null to indicate the default stream</param> /// <returns>The convention-based stream edit link</returns> public static string GenerateStreamEditLink(this IODataConventionBasedLinkGenerator generator, QueryStructuralValue instance, string streamName) { if (streamName == null) { return(generator.GenerateDefaultStreamEditLink(instance)); } else { return(generator.GenerateNamedStreamEditLink(instance, streamName)); } }
private static string EnsureIsEntityAndCall(this IODataConventionBasedLinkGenerator generator, QueryStructuralValue instance, Func <EntitySet, EntityType, IEnumerable <NamedValue>, string> callback) { ExceptionUtilities.CheckArgumentNotNull(generator, "generator"); ExceptionUtilities.CheckArgumentNotNull(instance, "instance"); ExceptionUtilities.CheckArgumentNotNull(callback, "callback"); var queryEntityType = instance.Type as QueryEntityType; ExceptionUtilities.CheckObjectNotNull(queryEntityType, "Entity's type was not a query entity type. Type was: {0}", instance.Type); return(callback(queryEntityType.EntitySet, queryEntityType.EntityType, instance.GetKeyPropertyValues())); }
/// <summary> /// Generates the conventional edit link for the given named stream: http://serviceRoot/SetName(keyValues)/StreamName /// </summary> /// <param name="generator">The generator to extend</param> /// <param name="instance">The entity instance</param> /// <param name="streamName">The stream's name</param> /// <returns>The convention-based stream edit link</returns> public static string GenerateNamedStreamEditLink(this IODataConventionBasedLinkGenerator generator, QueryStructuralValue instance, string streamName) { return(generator.EnsureIsEntityAndCall(instance, (entitySet, entityType, keys) => generator.GenerateNamedStreamEditLink(entitySet, entityType, keys, streamName))); }
/// <summary> /// Generates the conventional stream edit link for the given entity: http://serviceRoot/SetName(keyValues)/$value /// </summary> /// <param name="generator">The generator to extend</param> /// <param name="instance">The entity instance</param> /// <returns>The convention-based stream edit link</returns> public static string GenerateDefaultStreamEditLink(this IODataConventionBasedLinkGenerator generator, QueryStructuralValue instance) { return(generator.EnsureIsEntityAndCall(instance, generator.GenerateDefaultStreamEditLink)); }