mirror of https://github.com/dapr/dotnet-sdk.git
Fix the problem of determining whether there is a MetadataSeparator error (#900)
* add original topic metadata support Signed-off-by: saberwang <saberwang@hotmail.com> * Add topicmetadata sample Signed-off-by: saberwang <saberwang@hotmail.com> * fix: v2 route metadata acquisition error Signed-off-by: saberwang <saberwang@hotmail.com> * feat: Support setting metadata separator Signed-off-by: saberwang <saberwang@hotmail.com> * chore: Note modification Signed-off-by: saberwang <saberwang@hotmail.com> * style: Signed-off-by: saberwang <saberwang@hotmail.com> * commit Signed-off-by: saberwang <saberwang@hotmail.com> * fix: Whether there is a problem of MetadataSeparator judgment error Signed-off-by: saberwang <saberwang@hotmail.com> * TopicAttribute.Metadataseparator default should be null Signed-off-by: saberwang <saberwang@hotmail.com> * formatting code Signed-off-by: saberwang <saberwang@hotmail.com> Co-authored-by: halspang <70976921+halspang@users.noreply.github.com>
This commit is contained in:
parent
d061164ec8
commit
e58b1de56a
|
@ -97,7 +97,7 @@ namespace Microsoft.AspNetCore.Builder
|
||||||
{
|
{
|
||||||
var first = e.First();
|
var first = e.First();
|
||||||
var rawPayload = e.Any(e => e.EnableRawPayload.GetValueOrDefault());
|
var rawPayload = e.Any(e => e.EnableRawPayload.GetValueOrDefault());
|
||||||
var metadataSeparator = e.FirstOrDefault(e => string.IsNullOrEmpty(e.MetadataSeparator)).MetadataSeparator ?? ",";
|
var metadataSeparator = e.FirstOrDefault(e => !string.IsNullOrEmpty(e.MetadataSeparator)).MetadataSeparator ?? ",";
|
||||||
var rules = e.Where(e => !string.IsNullOrEmpty(e.Match)).ToList();
|
var rules = e.Where(e => !string.IsNullOrEmpty(e.Match)).ToList();
|
||||||
var defaultRoutes = e.Where(e => string.IsNullOrEmpty(e.Match)).Select(e => RoutePatternToString(e.RoutePattern)).ToList();
|
var defaultRoutes = e.Where(e => string.IsNullOrEmpty(e.Match)).Select(e => RoutePatternToString(e.RoutePattern)).ToList();
|
||||||
var defaultRoute = defaultRoutes.FirstOrDefault();
|
var defaultRoute = defaultRoutes.FirstOrDefault();
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace Dapr
|
||||||
/// <param name="name">The topic name.</param>
|
/// <param name="name">The topic name.</param>
|
||||||
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
||||||
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
||||||
public TopicAttribute(string pubsubName, string name, string[] ownedMetadatas = null,string metadataSeparator = ",")
|
public TopicAttribute(string pubsubName, string name, string[] ownedMetadatas = null, string metadataSeparator = null)
|
||||||
{
|
{
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
||||||
|
@ -47,7 +47,7 @@ namespace Dapr
|
||||||
/// <param name="enableRawPayload">The enable/disable raw pay load flag.</param>
|
/// <param name="enableRawPayload">The enable/disable raw pay load flag.</param>
|
||||||
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
||||||
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
||||||
public TopicAttribute(string pubsubName, string name, bool enableRawPayload, string[] ownedMetadatas = null, string metadataSeparator = ",")
|
public TopicAttribute(string pubsubName, string name, bool enableRawPayload, string[] ownedMetadatas = null, string metadataSeparator = null)
|
||||||
{
|
{
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
||||||
|
@ -68,7 +68,7 @@ namespace Dapr
|
||||||
/// <param name="priority">The priority of the rule (low-to-high values).</param>
|
/// <param name="priority">The priority of the rule (low-to-high values).</param>
|
||||||
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
||||||
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
||||||
public TopicAttribute(string pubsubName, string name, string match, int priority, string[] ownedMetadatas = null, string metadataSeparator = ",")
|
public TopicAttribute(string pubsubName, string name, string match, int priority, string[] ownedMetadatas = null, string metadataSeparator = null)
|
||||||
{
|
{
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
||||||
|
@ -91,7 +91,7 @@ namespace Dapr
|
||||||
/// <param name="priority">The priority of the rule (low-to-high values).</param>
|
/// <param name="priority">The priority of the rule (low-to-high values).</param>
|
||||||
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
/// <param name="ownedMetadatas">The topic owned metadata ids.</param>
|
||||||
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
/// <param name="metadataSeparator">Separator to use for metadata.</param>
|
||||||
public TopicAttribute(string pubsubName, string name, bool enableRawPayload, string match, int priority, string[] ownedMetadatas = null, string metadataSeparator = ",")
|
public TopicAttribute(string pubsubName, string name, bool enableRawPayload, string match, int priority, string[] ownedMetadatas = null, string metadataSeparator = null)
|
||||||
{
|
{
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
ArgumentVerifier.ThrowIfNullOrEmpty(pubsubName, nameof(pubsubName));
|
||||||
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
ArgumentVerifier.ThrowIfNullOrEmpty(name, nameof(name));
|
||||||
|
|
|
@ -78,6 +78,14 @@ namespace Dapr.AspNetCore.IntegrationTest.App
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Topic("pubsub", "metadataseparator", metadataSeparator: "|")]
|
||||||
|
[HttpPost("/topicmetadataseparatorattr")]
|
||||||
|
[TopicMetadata("n1", "v1")]
|
||||||
|
[TopicMetadata("n1", "v2")]
|
||||||
|
public void TopicMetadataSeparator()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
[Topic("pubsub", "splitTopicAttr", true)]
|
[Topic("pubsub", "splitTopicAttr", true)]
|
||||||
[HttpPost("/splitTopics")]
|
[HttpPost("/splitTopics")]
|
||||||
public void SplitTopic()
|
public void SplitTopic()
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace Dapr.AspNetCore.IntegrationTest
|
||||||
var json = await JsonSerializer.DeserializeAsync<JsonElement>(stream);
|
var json = await JsonSerializer.DeserializeAsync<JsonElement>(stream);
|
||||||
|
|
||||||
json.ValueKind.Should().Be(JsonValueKind.Array);
|
json.ValueKind.Should().Be(JsonValueKind.Array);
|
||||||
json.GetArrayLength().Should().Be(15);
|
json.GetArrayLength().Should().Be(16);
|
||||||
var subscriptions = new List<(string PubsubName, string Topic, string Route, string rawPayload, string match, string metadata)>();
|
var subscriptions = new List<(string PubsubName, string Topic, string Route, string rawPayload, string match, string metadata)>();
|
||||||
foreach (var element in json.EnumerateArray())
|
foreach (var element in json.EnumerateArray())
|
||||||
{
|
{
|
||||||
|
@ -107,7 +107,7 @@ namespace Dapr.AspNetCore.IntegrationTest
|
||||||
subscriptions.Should().Contain(("pubsub", "metadata", "multiMetadataTopicAttr", string.Empty, string.Empty, "n1=v1;n2=v2,v3"));
|
subscriptions.Should().Contain(("pubsub", "metadata", "multiMetadataTopicAttr", string.Empty, string.Empty, "n1=v1;n2=v2,v3"));
|
||||||
subscriptions.Should().Contain(("pubsub", "metadata.1", "multiMetadataTopicAttr", "true", string.Empty, "n1=v1"));
|
subscriptions.Should().Contain(("pubsub", "metadata.1", "multiMetadataTopicAttr", "true", string.Empty, "n1=v1"));
|
||||||
subscriptions.Should().Contain(("pubsub", "splitMetadataTopicBuilder", "splitMetadataTopics", string.Empty, string.Empty, "n1=v1;n2=v1"));
|
subscriptions.Should().Contain(("pubsub", "splitMetadataTopicBuilder", "splitMetadataTopics", string.Empty, string.Empty, "n1=v1;n2=v1"));
|
||||||
|
subscriptions.Should().Contain(("pubsub", "metadataseparator", "topicmetadataseparatorattr", string.Empty, string.Empty, "n1=v1|v2"));
|
||||||
// Test priority route sorting
|
// Test priority route sorting
|
||||||
var eTopic = subscriptions.FindAll(e => e.Topic == "E");
|
var eTopic = subscriptions.FindAll(e => e.Topic == "E");
|
||||||
eTopic.Count.Should().Be(3);
|
eTopic.Count.Should().Be(3);
|
||||||
|
|
Loading…
Reference in New Issue