From 35488a2b685f05c080116e5fcf2ded191ce4d065 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 08:29:20 -0500 Subject: [PATCH] feat(batch5): implement jetstream error constructors group02 --- .../JetStreamErrors.GeneratedConstructors.cs | 160 ++++++++++++++++++ ...tStreamErrorsGeneratedConstructorsTests.cs | 33 ++++ porting.db | Bin 6381568 -> 6389760 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 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 81e4bc69692833f2d6ff4885c8405a2ce13694ca..dd9b83d0fad08a7e05c891c11026f4d3713dcf90 100644 GIT binary patch delta 4348 zcmaKuYfuzd7RUSc%=GjOGu_Pq142&+Ur_;h3=hF48U+P~kw6p&B143YwOK>(QMIX* zN@A{wi);L#ch}VJV)8*hY`N-I(H3P~leKDV{e;=PDrVh?B(fUd${Ts@ow?A{leK!P z&eZ+i^E+qGy?svC9KHFj>F7~t`XI?t#4udK>Ev~w=t^B-2H5+~`3&`Z26(s4EG#^@va(ZtNnu$NnPwG=)^rBNPuygJnW%{=Dm%38}{%?=;A$aRASQfyX-nO|3AQG zQLK#lIwQaG`mdT^YdFxr%@8GMY8t)T4FaH7z1ASz!|Pl!s<6ecQMTE9SKxVAp^<|7afz&QHmG1!zk6%jcZ5jhbN z_*C8e6Sy7&+Rs?nlSpWh($Dm;_t9Sfn;85O)PDl@5DSi~g=V%8NLDx4u&1H1p}DzX z57*0gs2^BZ2+Vv3BdCd1whbJKI>t=S5mtt%{5i$V5S5~-X`*CJO%Ww%YBKnAG&Mnd z7d7>isB@YcC#qFbV^K$rF^4rdN}Nra8X>A)Q^Q16YHEn6B25hv6)t;#sBqa&hzggD zi3*q9?=-2`Y%G5+d&1etc=sPTSkFBrtEHjUI9Vy7)fidDhE}6wWe=@J)WMJ0A8l*; zgqqo%UYjY74f?DM*`qmT$cpBeCM%j_N{g68?n`Xdnqa@J4kZot8Z9H(XEa5y$7qUR zf6)}d-lApnqthL1nL2Wb6#(d0EtlE90wmn8lTlj}>q0lLvYD#;D%-@f%vb2W4)$|& zVnj?r^G3valr%1Wm>e-zF%ilYR7jc<-Ri~bY)uTm(-|z4OF)iJ_RnVLgmV~unv;;F z_I9$o(?LA(t+nLa-CBGc++&HEh?$95h;b^oXSLS5g$vGlM}qy1?UZ$hJ7uXc^|9{* zVe1--3c<8f1pB?(5pw9t)PUsWbeInb&3CuX_VAVV<9s)~k?T#+T7tTbd zLv)E|u8vFO9NY=+E!#!gIa{mku&v2fZ>zKwo#|xV=(8tcUMyF^ZRGN}rTT}cas#5v zj5a4k3oJK`GGnC_l(yLKK#j2y*%?CnM#Myk8`H;dqw4QQ#6zrE>}K+jYg{Zu8{E+{ z`ZmR1ERIKzz3Q!TG1?Td*N;+``4iFPq$mjyjweVa4mD>=>;!UzXD~typyV0xmYKAg ztoF=^vSj{_6&O{Lq?@F-UD8^Wb4jHDEI<`8Qm5G_fU9V1kw547u2_j!G%**k7-F%+ z;)uD4#S=>)Hjh{$u_Sd@tb8dd#_o8LOgeP~AW>zo_V?^ES_^l5&- zL{30AQe_E!k|xu36GJWe_TiI9Tnwmsdp=S=^CY4h8M1)Rrt)sODp)Re=ra5*Lw2IP zba}D9DH_t{MYBB>`WXW0J65etmRCo?Oc`c++A|e!Ifb2J>`W>nTmfg8RA+S*vj3XD zWUa7#W8OlpO#eYkdlmgW34KZodaX~1I6>pdgX9F|Z=28`ZG0m7x=)EkxBHa8YkeF~ z_olDS4q9C3D>Ez z6c@VPGke$c1qQJK@pBL-Lp&ei1rRTUcoD>lA$}g>B@i!#cp1bg5T`<%2Jv!;(;?1) zI1}P5h`kVJL!1L~F2s2duYfoo;sS_QLc9v%)ex_NcrC>1ATES>J;WOzegWc*5O0FG z2;yRhH$%Jy;u45UA>In{Hi*k0E{E6$@pgzSAbt_zN{FiQ4N>&$hgSmrpg`T`z@>9%Ph`xf{Tq?4WPiC~AhWnpVE`gCg`2Hp9ZO+lAS z12(%ixw!fDgH6eqUKG78P%h`K%+4iTk)83dp7OYs)a=HFz=4C!4g0MO0-FNfpGWYs z5t~Ap!HglakwVjk&z*ZI%`G2+~3B^!2Vw*lRK&oZ0GY=db3DC z4GkEK2*@%B@Y8?+eL!BeLBOt106P6qP10;Zxw!^-HO0HWte(SjRv6$rX*vDja?Vx< zBoKMX9Te&dL+DNa|4}bds#iyq)%=WF*jh!O*~BxS*<2r0Qs}86^dg1E4WSAOjTu7Q zDKu&b`6x7E2$fT4*bpkC(2yatjY5Nl&{hf!7(%5KdSVEbPzW1BTPW0T2yLcN-!q{_ z!J!OJql1$eF-_R%Jm$C@^<5Ni&#~3+M8=Mo4*JJpy<21W@pEnV>FqK6u)vuE2qGyoCb=2-s7Lk zo^3S9dua6&`s%$#qx=fZpZ$eaPL@$Q^)&yuK7WDH?F4ARm_8uOD4>o8jOqh2jV^RI eJ;6JV=WZyg!03ivrum0;`Lpt$bwlRh%ldy~)3E{o delta 2046 zcmY+Ed2AF_9LMLqot>FIIx{`o)-pR%C`&1YRYF$DwvO_bDT)@^HhLy2+h04Yn9Y86cd^)A%r@-`nmeqRRb%yAN5sl~E2>T0 z(#}jmG=&k88b> z%oO$D{atJ&`$c@y#n$+r=~5Ks#Z>V(Nl&NfxTLxibxK;5q7F&RQglpGd5YR4O-s?Q zk_uCFRMO?G9Wf()CE^Cf#Z2vXZV_x?s|s5`VtKPX=ZjGi#LT$&q&H zyo_I^^D>S~=Vcs`&dX?(&dc}(BMp4{jFa-hy@(Uic@c@`@gfq9<3%Kz#*0Waj2F>? z+Ya$XVz7amjI|2?KK?1g54e7}hE~ixVS6NwUn^`-T@=2*ueko0`c3oc;Q3re<^Eh+O!)aqfhl4K!qWVE? z;d|^jXX5)xqu7t`Y~vhG(Tq}DJjW=(+BQ9eTjm%8-q=TTj4N=#aXp4-ZZ<9^#wO!K ziwq5aDwBomaYhVl<{B--3bp0NI4@;uxiL7baA=;4-};mq6a({&F>F|+vckA=Xi0_9 zHmtC-(wLB3vZGd2H>*{KR6r^y6_N@|rAe7Wt+Fn>9Xz1?&BNUK!|F;jd`^Z|t1Z>a zw5eKwmaB!eE!va9AZr6d+GR(u>33_YslToR|CjgicHY9j6xttFhKlPO`MvnWpq0k? zOssC?qr|&|)*6mEx#?m2xsku6hJRE{Y-r*U(ejVw_oamu=hEMi-iHlYb}pVfXW5RW zUM}$TL`Pqm#!XRh-a5)u`J@ike8Kav=%RJd`|P?eT8b(SraE|npbDU~I4g;Yc;TPjEDN~v6_QKCA_X$WPR z@$he++mQ$rloP^BgPrcBMEu z-!bugo)bVZ!5A+J$2wy#R~+1#?>NcFgAxZyq6bP`wr^D8BVcP)eYg2)T0y8KXd2}I zS$*86u(d)q<#Hw}y4)zkb)V^zuqt2}_+Xctjcr#MG0}R$H7@-?x2xl~CtVwhPPtBU zXMsCjdLlz%6&oMJ=I^4pIJw(R$IYkQM(+eke7;*wPPSk}w_7!ob>y@=I&p#+?my!m z_hvtR*3H1SvqRDNc#kW*E!CZI1Guxt4PxurXiQ+QTRs%i*z4wbF?aU6JzmUH{ca}y z_jNRe6Fc0YudJriE%usyN2mKQzIOJ~LEAdrEWB_~k0m-n0dj$^0vZjJ2Q&s~EKoks zIG`BNc%TBH2|$HF6M>3=CIL+bDh4V6x*BK-&^18U0+j+y1-cGs8qoDXHvruTG#zLL z&`m%yfo1{C2ATtOGf)}OT%dBGc|h}lDu611ZUI^Vv=C?!&|;t}pd~;{fo=s_2DBXL wHlW*q?f|+Is2b=lpc