Skip to content

Commit ac560bb

Browse files
fix(encoding): generate transitive MarshalJSON for wrapper messages with int64_encoding=NUMBER nested fields (#125)
* test(httpgen,clientgen): add golden test cases for int64 nested encoding in wrapper responses Add SensorReading (inner, direct NUMBER fields) and GetSensorReadingResponse/GetMultiSensorResponse (wrapper messages) test proto. Golden files for both httpgen and clientgen cover the new cases. Test cases added to both golden_test.go files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(httpgen): generate transitive MarshalJSON for wrapper messages with nested NUMBER fields When a wrapper/response message contains a field whose type has int64_encoding=NUMBER fields, protojson.Marshal bypasses the inner message's MarshalJSON — producing strings instead of numbers. Fix adds a two-phase collection in generateInt64EncodingFile: - Phase 1 (existing): collect messages with direct NUMBER fields - Phase 2 (new): collect wrapper messages whose fields reference phase-1 types Wrapper messages get generated MarshalJSON/UnmarshalJSON that use protojson for base serialization, then re-marshal each nested NUMBER field via json.Marshal to trigger the inner message's custom MarshalJSON. Closes #124 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(clientgen): generate transitive MarshalJSON for wrapper messages with nested NUMBER fields Identical fix to httpgen: two-phase collection detects wrapper messages containing fields whose type has int64_encoding=NUMBER, generating MarshalJSON/UnmarshalJSON that re-marshal those nested fields via json.Marshal to trigger the inner message's custom marshaling. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(examples): update protovalidate dependency to latest version Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(lint): apply golines formatting to long function signatures in encoding.go golangci-lint (golines) flagged collectWrapperMessages and two gf.P() calls in generateWrapperMarshalJSON/UnmarshalJSON for exceeding the line length limit. Auto-fixed with golangci-lint --fix; golden files regenerated to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 917521f commit ac560bb

File tree

23 files changed

+2126
-15
lines changed

23 files changed

+2126
-15
lines changed

examples/error-handler/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/error-handler
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-20250818125809-ff61bcf670dd
99
github.com/google/uuid v1.6.0

examples/error-handler/go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1 h1:j9yeqTWEFrtimt8Nng2MIeRrpoCvQzM9/g25XTvqUGg=
22
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
3+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
34
buf.build/go/protovalidate v0.14.0 h1:kr/rC/no+DtRyYX+8KXLDxNnI1rINz0imk5K44ZpZ3A=
45
buf.build/go/protovalidate v0.14.0/go.mod h1:+F/oISho9MO7gJQNYC2VWLzcO1fTPmaTA08SDYJZncA=
56
cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg=

examples/market-data-unwrap/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/market-data-unwrap
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v1.1.0
88
github.com/SebastienMelki/sebuf v0.0.0
99
google.golang.org/protobuf v1.36.11

examples/market-data-unwrap/go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1 h1:j9yeqTWEFrtimt8Nng2MIeRrpoCvQzM9/g25XTvqUGg=
22
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
3+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
34
buf.build/go/protovalidate v1.1.0 h1:pQqEQRpOo4SqS60qkvmhLTTQU9JwzEvdyiqAtXa5SeY=
45
buf.build/go/protovalidate v1.1.0/go.mod h1:bGZcPiAQDC3ErCHK3t74jSoJDFOs2JH3d7LWuTEIdss=
56
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=

examples/multi-service-api/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/multi-service-api
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-20250818125809-ff61bcf670dd
99
google.golang.org/protobuf v1.36.11

examples/nested-resources/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/nested-resources
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-20250818125809-ff61bcf670dd
99
google.golang.org/protobuf v1.36.11

examples/restful-crud/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/restful-crud
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-20250818125809-ff61bcf670dd
99
google.golang.org/protobuf v1.36.11

examples/rn-client-demo/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/rn-client-demo
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-00010101000000-000000000000
99
google.golang.org/protobuf v1.36.11

examples/simple-api/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/simple-api
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-20250818125809-ff61bcf670dd
99
google.golang.org/protobuf v1.36.11

examples/ts-client-demo/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/SebastienMelki/sebuf/examples/ts-client-demo
33
go 1.24.7
44

55
require (
6-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1
6+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260209202127-80ab13bee0bf.1
77
buf.build/go/protovalidate v0.14.0
88
github.com/SebastienMelki/sebuf v0.0.0-00010101000000-000000000000
99
google.golang.org/protobuf v1.36.11

0 commit comments

Comments
 (0)