From eee3a431ddbe146de16fe6adf92d891bdd7c320e Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 08:55:28 -0500 Subject: [PATCH] feat(batch5): implement jetstream error constructors group09 --- .../JetStreamErrors.GeneratedConstructors.cs | 160 ++++++++++++++++++ ...tStreamErrorsGeneratedConstructorsTests.cs | 33 ++++ porting.db | Bin 6443008 -> 6447104 bytes tools/generate-jetstream-errors.sh | 20 +++ 4 files changed, 213 insertions(+) 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 1284c34..53f8ea2 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -1008,6 +1008,118 @@ public static partial class JsApiErrors return Clone(StreamExpectedLastSeqPerSubjectNotReady); } + public static JsApiError NewJSStreamHeaderExceedsMaximumError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamHeaderExceedsMaximum); + } + + public static JsApiError NewJSStreamInfoMaxSubjectsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamInfoMaxSubjects); + } + + public static JsApiError NewJSStreamInvalidError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamInvalid); + } + + public static JsApiError NewJSStreamMaxBytesRequiredError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMaxBytesRequired); + } + + public static JsApiError NewJSStreamMaxStreamBytesExceededError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMaxStreamBytesExceeded); + } + + public static JsApiError NewJSStreamMessageExceedsMaximumError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMessageExceedsMaximum); + } + + public static JsApiError NewJSStreamMinLastSeqError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMinLastSeq); + } + + public static JsApiError NewJSStreamMirrorNotUpdatableError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMirrorNotUpdatable); + } + + public static JsApiError NewJSStreamMismatchError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMismatch); + } + + public static JsApiError NewJSStreamMoveAndScaleError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMoveAndScale); + } + + public static JsApiError NewJSStreamMoveNotInProgressError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamMoveNotInProgress); + } + + public static JsApiError NewJSStreamNameContainsPathSeparatorsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamNameContainsPathSeparators); + } + + public static JsApiError NewJSStreamNameExistError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamNameExist); + } + + public static JsApiError NewJSStreamNameExistRestoreFailedError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamNameExistRestoreFailed); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -1232,6 +1344,54 @@ public static partial class JsApiErrors return NewWithTags(StreamDelete, "{err}", err); } + public static JsApiError NewJSStreamGeneralError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamGeneralError, "{err}", err); + } + + public static JsApiError NewJSStreamInvalidConfigError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamInvalidConfig, "{err}", err); + } + + public static JsApiError NewJSStreamInvalidExternalDeliverySubjError(object? prefix, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamInvalidExternalDeliverySubj, "{prefix}", prefix); + } + + public static JsApiError NewJSStreamLimitsError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamLimits, "{err}", err); + } + + public static JsApiError NewJSStreamMoveInProgressError(object? msg, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamMoveInProgress, "{msg}", msg); + } + + public static JsApiError NewJSStreamMsgDeleteFailedError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamMsgDeleteFailed, "{err}", err); + } + public static JsApiError NewJSStreamExternalApiOverlapError(object? prefix, object? subject, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) 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 b375b62..7c7ed63 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -267,4 +267,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group09() + { + JsApiErrors.NewJSStreamHeaderExceedsMaximumError().ErrCode.ShouldBe(JsApiErrors.StreamHeaderExceedsMaximum.ErrCode); + JsApiErrors.NewJSStreamInfoMaxSubjectsError().ErrCode.ShouldBe(JsApiErrors.StreamInfoMaxSubjects.ErrCode); + JsApiErrors.NewJSStreamInvalidError().ErrCode.ShouldBe(JsApiErrors.StreamInvalid.ErrCode); + JsApiErrors.NewJSStreamMaxBytesRequiredError().ErrCode.ShouldBe(JsApiErrors.StreamMaxBytesRequired.ErrCode); + JsApiErrors.NewJSStreamMaxStreamBytesExceededError().ErrCode.ShouldBe(JsApiErrors.StreamMaxStreamBytesExceeded.ErrCode); + JsApiErrors.NewJSStreamMessageExceedsMaximumError().ErrCode.ShouldBe(JsApiErrors.StreamMessageExceedsMaximum.ErrCode); + JsApiErrors.NewJSStreamMinLastSeqError().ErrCode.ShouldBe(JsApiErrors.StreamMinLastSeq.ErrCode); + JsApiErrors.NewJSStreamMirrorNotUpdatableError().ErrCode.ShouldBe(JsApiErrors.StreamMirrorNotUpdatable.ErrCode); + JsApiErrors.NewJSStreamMismatchError().ErrCode.ShouldBe(JsApiErrors.StreamMismatch.ErrCode); + JsApiErrors.NewJSStreamMoveAndScaleError().ErrCode.ShouldBe(JsApiErrors.StreamMoveAndScale.ErrCode); + JsApiErrors.NewJSStreamMoveNotInProgressError().ErrCode.ShouldBe(JsApiErrors.StreamMoveNotInProgress.ErrCode); + JsApiErrors.NewJSStreamNameContainsPathSeparatorsError().ErrCode.ShouldBe(JsApiErrors.StreamNameContainsPathSeparators.ErrCode); + JsApiErrors.NewJSStreamNameExistError().ErrCode.ShouldBe(JsApiErrors.StreamNameExist.ErrCode); + JsApiErrors.NewJSStreamNameExistRestoreFailedError().ErrCode.ShouldBe(JsApiErrors.StreamNameExistRestoreFailed.ErrCode); + + JsApiErrors.NewJSStreamGeneralError(new InvalidOperationException("stream failed")).Description.ShouldBe("stream failed"); + JsApiErrors.NewJSStreamInvalidConfigError(new InvalidOperationException("invalid config")).Description.ShouldBe("invalid config"); + JsApiErrors.NewJSStreamInvalidExternalDeliverySubjError("api.*").Description.ShouldBe("stream external delivery prefix api.* must not contain wildcards"); + JsApiErrors.NewJSStreamLimitsError(new InvalidOperationException("limit error")).Description.ShouldBe("limit error"); + JsApiErrors.NewJSStreamMoveInProgressError("move-1").Description.ShouldBe("stream move already in progress: move-1"); + JsApiErrors.NewJSStreamMsgDeleteFailedError(new InvalidOperationException("delete failed")).Description.ShouldBe("delete failed"); + + var expected = new JsApiError { Code = 491, ErrCode = 9098, Description = "override-9" }; + var fromOverride = JsApiErrors.NewJSStreamHeaderExceedsMaximumError(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 a0dd2101ed506c23436d5514eed781ce0c2f6ab4..497fd3ea9899c2d4f32fa122477307b43df66c70 100644 GIT binary patch delta 4148 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 Z-=5pO1`pxVK(UT$TI>b