diff --git a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs index 3398083..d3c827d 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -264,6 +264,134 @@ public static partial class JsApiErrors return Clone(ConsumerDoesNotExist); } + public static JsApiError NewJSConsumerDuplicateFilterSubjectsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDuplicateFilterSubjects); + } + + public static JsApiError NewJSConsumerDurableNameNotInSubjectError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDurableNameNotInSubject); + } + + public static JsApiError NewJSConsumerDurableNameNotMatchSubjectError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDurableNameNotMatchSubject); + } + + public static JsApiError NewJSConsumerDurableNameNotSetError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDurableNameNotSet); + } + + public static JsApiError NewJSConsumerEmptyFilterError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerEmptyFilter); + } + + public static JsApiError NewJSConsumerEmptyGroupNameError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerEmptyGroupName); + } + + public static JsApiError NewJSConsumerEphemeralWithDurableInSubjectError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerEphemeralWithDurableInSubject); + } + + public static JsApiError NewJSConsumerEphemeralWithDurableNameError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerEphemeralWithDurableName); + } + + public static JsApiError NewJSConsumerExistingActiveError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerExistingActive); + } + + public static JsApiError NewJSConsumerFCRequiresPushError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerFCRequiresPush); + } + + public static JsApiError NewJSConsumerFilterNotSubsetError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerFilterNotSubset); + } + + public static JsApiError NewJSConsumerHBRequiresPushError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerHBRequiresPush); + } + + public static JsApiError NewJSConsumerInvalidDeliverSubjectError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerInvalidDeliverSubject); + } + + public static JsApiError NewJSConsumerInvalidGroupNameError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerInvalidGroupName); + } + + public static JsApiError NewJSConsumerInvalidPriorityGroupError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerInvalidPriorityGroup); + } + + public static JsApiError NewJSConsumerMaxDeliverBackoffError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerMaxDeliverBackoff); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -304,4 +432,36 @@ public static partial class JsApiErrors return NewWithTags(ConsumerDescriptionTooLong, "{max}", max); } + public static JsApiError NewJSConsumerInactiveThresholdExcessError(object? limit, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerInactiveThresholdExcess, "{limit}", limit); + } + + public static JsApiError NewJSConsumerInvalidPolicyError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerInvalidPolicy, "{err}", err); + } + + public static JsApiError NewJSConsumerInvalidResetError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerInvalidReset, "{err}", err); + } + + public static JsApiError NewJSConsumerInvalidSamplingError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerInvalidSampling, "{err}", err); + } + } diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs index f310f23..6ad5c62 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -69,4 +69,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group03() + { + JsApiErrors.NewJSConsumerDuplicateFilterSubjectsError().ErrCode.ShouldBe(JsApiErrors.ConsumerDuplicateFilterSubjects.ErrCode); + JsApiErrors.NewJSConsumerDurableNameNotInSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotInSubject.ErrCode); + JsApiErrors.NewJSConsumerDurableNameNotMatchSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotMatchSubject.ErrCode); + JsApiErrors.NewJSConsumerDurableNameNotSetError().ErrCode.ShouldBe(JsApiErrors.ConsumerDurableNameNotSet.ErrCode); + JsApiErrors.NewJSConsumerEmptyFilterError().ErrCode.ShouldBe(JsApiErrors.ConsumerEmptyFilter.ErrCode); + JsApiErrors.NewJSConsumerEmptyGroupNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerEmptyGroupName.ErrCode); + JsApiErrors.NewJSConsumerEphemeralWithDurableInSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerEphemeralWithDurableInSubject.ErrCode); + JsApiErrors.NewJSConsumerEphemeralWithDurableNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerEphemeralWithDurableName.ErrCode); + JsApiErrors.NewJSConsumerExistingActiveError().ErrCode.ShouldBe(JsApiErrors.ConsumerExistingActive.ErrCode); + JsApiErrors.NewJSConsumerFCRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerFCRequiresPush.ErrCode); + JsApiErrors.NewJSConsumerFilterNotSubsetError().ErrCode.ShouldBe(JsApiErrors.ConsumerFilterNotSubset.ErrCode); + JsApiErrors.NewJSConsumerHBRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerHBRequiresPush.ErrCode); + JsApiErrors.NewJSConsumerInvalidDeliverSubjectError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidDeliverSubject.ErrCode); + JsApiErrors.NewJSConsumerInvalidGroupNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidGroupName.ErrCode); + JsApiErrors.NewJSConsumerInvalidPriorityGroupError().ErrCode.ShouldBe(JsApiErrors.ConsumerInvalidPriorityGroup.ErrCode); + JsApiErrors.NewJSConsumerMaxDeliverBackoffError().ErrCode.ShouldBe(JsApiErrors.ConsumerMaxDeliverBackoff.ErrCode); + + JsApiErrors.NewJSConsumerInactiveThresholdExcessError(777).Description.ShouldBe("consumer inactive threshold exceeds system limit of 777"); + JsApiErrors.NewJSConsumerInvalidPolicyError(new InvalidOperationException("invalid policy")).Description.ShouldBe("invalid policy"); + JsApiErrors.NewJSConsumerInvalidResetError(new InvalidOperationException("bad reset")).Description.ShouldBe("invalid reset: bad reset"); + JsApiErrors.NewJSConsumerInvalidSamplingError(new InvalidOperationException("bad sampling")).Description.ShouldBe("failed to parse consumer sampling configuration: bad sampling"); + + var expected = new JsApiError { Code = 497, ErrCode = 9092, Description = "override-3" }; + var fromOverride = JsApiErrors.NewJSConsumerDuplicateFilterSubjectsError(JsApiErrors.Unless(expected)); + fromOverride.Code.ShouldBe(expected.Code); + fromOverride.ErrCode.ShouldBe(expected.ErrCode); + fromOverride.Description.ShouldBe(expected.Description); + ReferenceEquals(fromOverride, expected).ShouldBeFalse(); + } } diff --git a/porting.db b/porting.db index dd9b83d..47fcb44 100644 Binary files a/porting.db and b/porting.db differ diff --git a/tools/generate-jetstream-errors.sh b/tools/generate-jetstream-errors.sh index a1d34b4..73dcab3 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -37,6 +37,22 @@ simple_methods=( "NewJSConsumerDirectRequiresEphemeralError|ConsumerDirectRequiresEphemeral" "NewJSConsumerDirectRequiresPushError|ConsumerDirectRequiresPush" "NewJSConsumerDoesNotExistError|ConsumerDoesNotExist" + "NewJSConsumerDuplicateFilterSubjectsError|ConsumerDuplicateFilterSubjects" + "NewJSConsumerDurableNameNotInSubjectError|ConsumerDurableNameNotInSubject" + "NewJSConsumerDurableNameNotMatchSubjectError|ConsumerDurableNameNotMatchSubject" + "NewJSConsumerDurableNameNotSetError|ConsumerDurableNameNotSet" + "NewJSConsumerEmptyFilterError|ConsumerEmptyFilter" + "NewJSConsumerEmptyGroupNameError|ConsumerEmptyGroupName" + "NewJSConsumerEphemeralWithDurableInSubjectError|ConsumerEphemeralWithDurableInSubject" + "NewJSConsumerEphemeralWithDurableNameError|ConsumerEphemeralWithDurableName" + "NewJSConsumerExistingActiveError|ConsumerExistingActive" + "NewJSConsumerFCRequiresPushError|ConsumerFCRequiresPush" + "NewJSConsumerFilterNotSubsetError|ConsumerFilterNotSubset" + "NewJSConsumerHBRequiresPushError|ConsumerHBRequiresPush" + "NewJSConsumerInvalidDeliverSubjectError|ConsumerInvalidDeliverSubject" + "NewJSConsumerInvalidGroupNameError|ConsumerInvalidGroupName" + "NewJSConsumerInvalidPriorityGroupError|ConsumerInvalidPriorityGroup" + "NewJSConsumerMaxDeliverBackoffError|ConsumerMaxDeliverBackoff" ) templated_methods=( @@ -45,6 +61,10 @@ templated_methods=( "NewJSClusterNoPeersError|Exception|err|ClusterNoPeers|{err}" "NewJSConsumerCreateError|Exception|err|ConsumerCreateErr|{err}" "NewJSConsumerDescriptionTooLongError|object?|max|ConsumerDescriptionTooLong|{max}" + "NewJSConsumerInactiveThresholdExcessError|object?|limit|ConsumerInactiveThresholdExcess|{limit}" + "NewJSConsumerInvalidPolicyError|Exception|err|ConsumerInvalidPolicy|{err}" + "NewJSConsumerInvalidResetError|Exception|err|ConsumerInvalidReset|{err}" + "NewJSConsumerInvalidSamplingError|Exception|err|ConsumerInvalidSampling|{err}" ) {