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 b58c881..3398083 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -120,6 +120,150 @@ public static partial class JsApiErrors return Clone(ClusterPeerNotMember); } + public static JsApiError NewJSClusterRequiredError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ClusterRequired); + } + + public static JsApiError NewJSClusterServerMemberChangeInflightError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ClusterServerMemberChangeInflight); + } + + public static JsApiError NewJSClusterServerNotMemberError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ClusterServerNotMember); + } + + public static JsApiError NewJSClusterTagsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ClusterTags); + } + + public static JsApiError NewJSClusterUnSupportFeatureError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ClusterUnSupportFeature); + } + + public static JsApiError NewJSConsumerAckPolicyInvalidError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerAckPolicyInvalid); + } + + public static JsApiError NewJSConsumerAckWaitNegativeError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerAckWaitNegative); + } + + public static JsApiError NewJSConsumerAlreadyExistsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerAlreadyExists); + } + + public static JsApiError NewJSConsumerBackOffNegativeError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerBackOffNegative); + } + + public static JsApiError NewJSConsumerBadDurableNameError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerBadDurableName); + } + + public static JsApiError NewJSConsumerConfigRequiredError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerConfigRequired); + } + + public static JsApiError NewJSConsumerCreateDurableAndNameMismatchError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerCreateDurableAndNameMismatch); + } + + public static JsApiError NewJSConsumerCreateFilterSubjectMismatchError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerCreateFilterSubjectMismatch); + } + + public static JsApiError NewJSConsumerDeliverCycleError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDeliverCycle); + } + + public static JsApiError NewJSConsumerDeliverToWildcardsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDeliverToWildcards); + } + + public static JsApiError NewJSConsumerDirectRequiresEphemeralError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDirectRequiresEphemeral); + } + + public static JsApiError NewJSConsumerDirectRequiresPushError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDirectRequiresPush); + } + + public static JsApiError NewJSConsumerDoesNotExistError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ConsumerDoesNotExist); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -144,4 +288,20 @@ public static partial class JsApiErrors return NewWithTags(ClusterNoPeers, "{err}", err); } + public static JsApiError NewJSConsumerCreateError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerCreateErr, "{err}", err); + } + + public static JsApiError NewJSConsumerDescriptionTooLongError(object? max, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(ConsumerDescriptionTooLong, "{max}", max); + } + } 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 a0603a0..f310f23 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -36,4 +36,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group02() + { + JsApiErrors.NewJSClusterRequiredError().ErrCode.ShouldBe(JsApiErrors.ClusterRequired.ErrCode); + JsApiErrors.NewJSClusterServerMemberChangeInflightError().ErrCode.ShouldBe(JsApiErrors.ClusterServerMemberChangeInflight.ErrCode); + JsApiErrors.NewJSClusterServerNotMemberError().ErrCode.ShouldBe(JsApiErrors.ClusterServerNotMember.ErrCode); + JsApiErrors.NewJSClusterTagsError().ErrCode.ShouldBe(JsApiErrors.ClusterTags.ErrCode); + JsApiErrors.NewJSClusterUnSupportFeatureError().ErrCode.ShouldBe(JsApiErrors.ClusterUnSupportFeature.ErrCode); + JsApiErrors.NewJSConsumerAckPolicyInvalidError().ErrCode.ShouldBe(JsApiErrors.ConsumerAckPolicyInvalid.ErrCode); + JsApiErrors.NewJSConsumerAckWaitNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerAckWaitNegative.ErrCode); + JsApiErrors.NewJSConsumerAlreadyExistsError().ErrCode.ShouldBe(JsApiErrors.ConsumerAlreadyExists.ErrCode); + JsApiErrors.NewJSConsumerBackOffNegativeError().ErrCode.ShouldBe(JsApiErrors.ConsumerBackOffNegative.ErrCode); + JsApiErrors.NewJSConsumerBadDurableNameError().ErrCode.ShouldBe(JsApiErrors.ConsumerBadDurableName.ErrCode); + JsApiErrors.NewJSConsumerConfigRequiredError().ErrCode.ShouldBe(JsApiErrors.ConsumerConfigRequired.ErrCode); + JsApiErrors.NewJSConsumerCreateDurableAndNameMismatchError().ErrCode.ShouldBe(JsApiErrors.ConsumerCreateDurableAndNameMismatch.ErrCode); + JsApiErrors.NewJSConsumerCreateFilterSubjectMismatchError().ErrCode.ShouldBe(JsApiErrors.ConsumerCreateFilterSubjectMismatch.ErrCode); + JsApiErrors.NewJSConsumerDeliverCycleError().ErrCode.ShouldBe(JsApiErrors.ConsumerDeliverCycle.ErrCode); + JsApiErrors.NewJSConsumerDeliverToWildcardsError().ErrCode.ShouldBe(JsApiErrors.ConsumerDeliverToWildcards.ErrCode); + JsApiErrors.NewJSConsumerDirectRequiresEphemeralError().ErrCode.ShouldBe(JsApiErrors.ConsumerDirectRequiresEphemeral.ErrCode); + JsApiErrors.NewJSConsumerDirectRequiresPushError().ErrCode.ShouldBe(JsApiErrors.ConsumerDirectRequiresPush.ErrCode); + JsApiErrors.NewJSConsumerDoesNotExistError().ErrCode.ShouldBe(JsApiErrors.ConsumerDoesNotExist.ErrCode); + + JsApiErrors.NewJSConsumerCreateError(new InvalidOperationException("create failed")).Description.ShouldBe("create failed"); + JsApiErrors.NewJSConsumerDescriptionTooLongError(1024).Description.ShouldBe("consumer description is too long, maximum allowed is 1024"); + + var expected = new JsApiError { Code = 498, ErrCode = 9091, Description = "override-2" }; + var fromOverride = JsApiErrors.NewJSClusterRequiredError(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 81e4bc6..dd9b83d 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 9e76d78..a1d34b4 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -19,12 +19,32 @@ simple_methods=( "NewJSClusterNotAvailError|ClusterNotAvail" "NewJSClusterNotLeaderError|ClusterNotLeader" "NewJSClusterPeerNotMemberError|ClusterPeerNotMember" + "NewJSClusterRequiredError|ClusterRequired" + "NewJSClusterServerMemberChangeInflightError|ClusterServerMemberChangeInflight" + "NewJSClusterServerNotMemberError|ClusterServerNotMember" + "NewJSClusterTagsError|ClusterTags" + "NewJSClusterUnSupportFeatureError|ClusterUnSupportFeature" + "NewJSConsumerAckPolicyInvalidError|ConsumerAckPolicyInvalid" + "NewJSConsumerAckWaitNegativeError|ConsumerAckWaitNegative" + "NewJSConsumerAlreadyExistsError|ConsumerAlreadyExists" + "NewJSConsumerBackOffNegativeError|ConsumerBackOffNegative" + "NewJSConsumerBadDurableNameError|ConsumerBadDurableName" + "NewJSConsumerConfigRequiredError|ConsumerConfigRequired" + "NewJSConsumerCreateDurableAndNameMismatchError|ConsumerCreateDurableAndNameMismatch" + "NewJSConsumerCreateFilterSubjectMismatchError|ConsumerCreateFilterSubjectMismatch" + "NewJSConsumerDeliverCycleError|ConsumerDeliverCycle" + "NewJSConsumerDeliverToWildcardsError|ConsumerDeliverToWildcards" + "NewJSConsumerDirectRequiresEphemeralError|ConsumerDirectRequiresEphemeral" + "NewJSConsumerDirectRequiresPushError|ConsumerDirectRequiresPush" + "NewJSConsumerDoesNotExistError|ConsumerDoesNotExist" ) templated_methods=( "NewJSAtomicPublishTooLargeBatchError|object?|size|AtomicPublishTooLargeBatch|{size}" "NewJSAtomicPublishUnsupportedHeaderBatchError|object?|header|AtomicPublishUnsupportedHeaderBatch|{header}" "NewJSClusterNoPeersError|Exception|err|ClusterNoPeers|{err}" + "NewJSConsumerCreateError|Exception|err|ConsumerCreateErr|{err}" + "NewJSConsumerDescriptionTooLongError|object?|max|ConsumerDescriptionTooLong|{max}" ) {