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 888d750..b8a3887 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -792,6 +792,134 @@ public static partial class JsApiErrors return Clone(MirrorOverlappingSubjectFilters); } + public static JsApiError NewJSMirrorWithAtomicPublishError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithAtomicPublish); + } + + public static JsApiError NewJSMirrorWithCountersError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithCounters); + } + + public static JsApiError NewJSMirrorWithFirstSeqError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithFirstSeq); + } + + public static JsApiError NewJSMirrorWithMsgSchedulesError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithMsgSchedules); + } + + public static JsApiError NewJSMirrorWithSourcesError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithSources); + } + + public static JsApiError NewJSMirrorWithStartSeqAndTimeError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithStartSeqAndTime); + } + + public static JsApiError NewJSMirrorWithSubjectFiltersError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithSubjectFilters); + } + + public static JsApiError NewJSMirrorWithSubjectsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(MirrorWithSubjects); + } + + public static JsApiError NewJSNoAccountError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NoAccount); + } + + public static JsApiError NewJSNoLimitsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NoLimits); + } + + public static JsApiError NewJSNoMessageFoundError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NoMessageFound); + } + + public static JsApiError NewJSNotEmptyRequestError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NotEmptyRequest); + } + + public static JsApiError NewJSNotEnabledError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NotEnabled); + } + + public static JsApiError NewJSNotEnabledForAccountError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(NotEnabledForAccount); + } + + public static JsApiError NewJSReplicasCountCannotBeNegativeError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(ReplicasCountCannotBeNegative); + } + + public static JsApiError NewJSRequiredApiLevelError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(RequiredApiLevel); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -944,4 +1072,20 @@ public static partial class JsApiErrors return NewWithTags(MirrorInvalidTransformDestination, "{err}", err); } + public static JsApiError NewJSPedanticError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(Pedantic, "{err}", err); + } + + public static JsApiError NewJSRaftGeneralError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(RaftGeneralErr, "{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 221311e..22b61ea 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -201,4 +201,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group07() + { + JsApiErrors.NewJSMirrorWithAtomicPublishError().ErrCode.ShouldBe(JsApiErrors.MirrorWithAtomicPublish.ErrCode); + JsApiErrors.NewJSMirrorWithCountersError().ErrCode.ShouldBe(JsApiErrors.MirrorWithCounters.ErrCode); + JsApiErrors.NewJSMirrorWithFirstSeqError().ErrCode.ShouldBe(JsApiErrors.MirrorWithFirstSeq.ErrCode); + JsApiErrors.NewJSMirrorWithMsgSchedulesError().ErrCode.ShouldBe(JsApiErrors.MirrorWithMsgSchedules.ErrCode); + JsApiErrors.NewJSMirrorWithSourcesError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSources.ErrCode); + JsApiErrors.NewJSMirrorWithStartSeqAndTimeError().ErrCode.ShouldBe(JsApiErrors.MirrorWithStartSeqAndTime.ErrCode); + JsApiErrors.NewJSMirrorWithSubjectFiltersError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSubjectFilters.ErrCode); + JsApiErrors.NewJSMirrorWithSubjectsError().ErrCode.ShouldBe(JsApiErrors.MirrorWithSubjects.ErrCode); + JsApiErrors.NewJSNoAccountError().ErrCode.ShouldBe(JsApiErrors.NoAccount.ErrCode); + JsApiErrors.NewJSNoLimitsError().ErrCode.ShouldBe(JsApiErrors.NoLimits.ErrCode); + JsApiErrors.NewJSNoMessageFoundError().ErrCode.ShouldBe(JsApiErrors.NoMessageFound.ErrCode); + JsApiErrors.NewJSNotEmptyRequestError().ErrCode.ShouldBe(JsApiErrors.NotEmptyRequest.ErrCode); + JsApiErrors.NewJSNotEnabledError().ErrCode.ShouldBe(JsApiErrors.NotEnabled.ErrCode); + JsApiErrors.NewJSNotEnabledForAccountError().ErrCode.ShouldBe(JsApiErrors.NotEnabledForAccount.ErrCode); + JsApiErrors.NewJSPeerRemapError().ErrCode.ShouldBe(JsApiErrors.PeerRemap.ErrCode); + JsApiErrors.NewJSReplicasCountCannotBeNegativeError().ErrCode.ShouldBe(JsApiErrors.ReplicasCountCannotBeNegative.ErrCode); + JsApiErrors.NewJSRequiredApiLevelError().ErrCode.ShouldBe(JsApiErrors.RequiredApiLevel.ErrCode); + + JsApiErrors.NewJSPedanticError(new InvalidOperationException("strict")).Description.ShouldBe("pedantic mode: strict"); + JsApiErrors.NewJSRaftGeneralError(new InvalidOperationException("raft failure")).Description.ShouldBe("raft failure"); + JsApiErrors.NewJSRestoreSubscribeFailedError(new InvalidOperationException("subscribe failed"), "$JS.API.CONSUMER").Description.ShouldBe("JetStream unable to subscribe to restore snapshot $JS.API.CONSUMER: subscribe failed"); + + var expected = new JsApiError { Code = 493, ErrCode = 9096, Description = "override-7" }; + var fromOverride = JsApiErrors.NewJSNoAccountError(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 86b1fe5..938caf0 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 62c9480..0d63964 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -103,6 +103,22 @@ simple_methods=( "NewJSMirrorMaxMessageSizeTooBigError|MirrorMaxMessageSizeTooBig" "NewJSMirrorMultipleFiltersNotAllowedError|MirrorMultipleFiltersNotAllowed" "NewJSMirrorOverlappingSubjectFiltersError|MirrorOverlappingSubjectFilters" + "NewJSMirrorWithAtomicPublishError|MirrorWithAtomicPublish" + "NewJSMirrorWithCountersError|MirrorWithCounters" + "NewJSMirrorWithFirstSeqError|MirrorWithFirstSeq" + "NewJSMirrorWithMsgSchedulesError|MirrorWithMsgSchedules" + "NewJSMirrorWithSourcesError|MirrorWithSources" + "NewJSMirrorWithStartSeqAndTimeError|MirrorWithStartSeqAndTime" + "NewJSMirrorWithSubjectFiltersError|MirrorWithSubjectFilters" + "NewJSMirrorWithSubjectsError|MirrorWithSubjects" + "NewJSNoAccountError|NoAccount" + "NewJSNoLimitsError|NoLimits" + "NewJSNoMessageFoundError|NoMessageFound" + "NewJSNotEmptyRequestError|NotEmptyRequest" + "NewJSNotEnabledError|NotEnabled" + "NewJSNotEnabledForAccountError|NotEnabledForAccount" + "NewJSReplicasCountCannotBeNegativeError|ReplicasCountCannotBeNegative" + "NewJSRequiredApiLevelError|RequiredApiLevel" ) templated_methods=( @@ -125,6 +141,8 @@ templated_methods=( "NewJSMirrorConsumerSetupFailedError|Exception|err|MirrorConsumerSetupFailed|{err}" "NewJSMirrorInvalidSubjectFilterError|Exception|err|MirrorInvalidSubjectFilter|{err}" "NewJSMirrorInvalidTransformDestinationError|Exception|err|MirrorInvalidTransformDestination|{err}" + "NewJSPedanticError|Exception|err|Pedantic|{err}" + "NewJSRaftGeneralError|Exception|err|RaftGeneralErr|{err}" ) {