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 a0dd210..497fd3e 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 61530dd..4965009 100755 --- a/tools/generate-jetstream-errors.sh +++ b/tools/generate-jetstream-errors.sh @@ -130,6 +130,20 @@ simple_methods=( "NewJSStreamDuplicateMessageConflictError|StreamDuplicateMessageConflict" "NewJSStreamExpectedLastSeqPerSubjectInvalidError|StreamExpectedLastSeqPerSubjectInvalid" "NewJSStreamExpectedLastSeqPerSubjectNotReadyError|StreamExpectedLastSeqPerSubjectNotReady" + "NewJSStreamHeaderExceedsMaximumError|StreamHeaderExceedsMaximum" + "NewJSStreamInfoMaxSubjectsError|StreamInfoMaxSubjects" + "NewJSStreamInvalidError|StreamInvalid" + "NewJSStreamMaxBytesRequiredError|StreamMaxBytesRequired" + "NewJSStreamMaxStreamBytesExceededError|StreamMaxStreamBytesExceeded" + "NewJSStreamMessageExceedsMaximumError|StreamMessageExceedsMaximum" + "NewJSStreamMinLastSeqError|StreamMinLastSeq" + "NewJSStreamMirrorNotUpdatableError|StreamMirrorNotUpdatable" + "NewJSStreamMismatchError|StreamMismatch" + "NewJSStreamMoveAndScaleError|StreamMoveAndScale" + "NewJSStreamMoveNotInProgressError|StreamMoveNotInProgress" + "NewJSStreamNameContainsPathSeparatorsError|StreamNameContainsPathSeparators" + "NewJSStreamNameExistError|StreamNameExist" + "NewJSStreamNameExistRestoreFailedError|StreamNameExistRestoreFailed" ) templated_methods=( @@ -161,6 +175,12 @@ templated_methods=( "NewJSStreamAssignmentError|Exception|err|StreamAssignment|{err}" "NewJSStreamCreateError|Exception|err|StreamCreate|{err}" "NewJSStreamDeleteError|Exception|err|StreamDelete|{err}" + "NewJSStreamGeneralError|Exception|err|StreamGeneralError|{err}" + "NewJSStreamInvalidConfigError|Exception|err|StreamInvalidConfig|{err}" + "NewJSStreamInvalidExternalDeliverySubjError|object?|prefix|StreamInvalidExternalDeliverySubj|{prefix}" + "NewJSStreamLimitsError|Exception|err|StreamLimits|{err}" + "NewJSStreamMoveInProgressError|object?|msg|StreamMoveInProgress|{msg}" + "NewJSStreamMsgDeleteFailedError|Exception|err|StreamMsgDeleteFailed|{err}" ) templated_methods_two_args=(