[
https://issues.apache.org/jira/browse/TINKERPOP-3237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18068135#comment-18068135
]
ASF GitHub Bot commented on TINKERPOP-3237:
-------------------------------------------
Cole-Greer commented on code in PR #3335:
URL: https://github.com/apache/tinkerpop/pull/3335#discussion_r2984852775
##########
gremlin-go/driver/serializer.go:
##########
@@ -46,6 +46,15 @@ type GraphBinarySerializer struct {
// CustomTypeReader user provided function to deserialize custom types
type CustomTypeReader func(data *[]byte, i *int) (interface{}, error)
+// CustomTypeWriter user provided function to serialize custom types
+type CustomTypeWriter func(value interface{}, buffer *bytes.Buffer) error
Review Comment:
Nit: It might be nice to also pass in the full graphBinary serializer to
this function. It isn't strictly necessary but could prove useful for custom
serializer authors to take advantage of some of our existing type serializers.
One example of this is how our [SamplePersonSerializer test implementation in
Java utilizes the existing type serializers for String and
Date](https://github.com/apache/tinkerpop/blob/a112cae9f576332ca3ad3d4a519482a5adad8e2a/gremlin-util/src/test/java/org/apache/tinkerpop/gremlin/util/ser/binary/types/sample/SamplePersonSerializer.java#L114-L115).
```suggestion
type CustomTypeWriter func(value interface{}, buffer *bytes.Buffer,
serializer *graphBinaryTypeSerializer) error
```
> Add Custom Type Writer/Serializer API for gremlin-go
> ----------------------------------------------------
>
> Key: TINKERPOP-3237
> URL: https://issues.apache.org/jira/browse/TINKERPOP-3237
> Project: TinkerPop
> Issue Type: Improvement
> Components: go
> Affects Versions: 3.8.0
> Reporter: Haiyu Wang
> Priority: Major
> Fix For: 3.8.1
>
>
> ## Problem
>
> Currently, gremlin-go supports deserializing custom types via
> `RegisterCustomTypeReader()`, but lacks the corresponding functionality to
> serialize custom types when sending requests to the server. This creates an
> asymmetry where users can read custom types from server responses but cannot
> write them in requests.
> **The Java driver already has complete custom type support** through
> `CustomTypeSerializer` in `GraphBinaryWriter.java` and
> `GraphBinaryReader.java`. This gap prevents gremlin-go users from working
> with custom types in graph databases like JanusGraph, which use custom types
> such as `RelationIdentifier`, `Geoshape`, etc.
> ## Current State
> - **Java driver**: ✅ Custom Type Reader + ✅ Custom Type Writer
> - **gremlin-go**: ✅ Custom Type Reader + ❌ Custom Type Writer (incomplete)
> ## Proposed Solution
> Add a `RegisterCustomTypeWriter()` API that mirrors the existing
> `CustomTypeReader` pattern and implements the same GraphBinary custom type
> format used by the Java driver.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)