Cole-Greer opened a new pull request, #3433:
URL: https://github.com/apache/tinkerpop/pull/3433

   Add CompositePDT (0xF0) support enabling graph providers to define custom 
types that serialize/deserialize seamlessly across all GLVs without driver-side 
configuration. Replaces the TP3 CustomTypeSerializer mechanism.
   
   Core (gremlin-core):
   - Add @ProviderDefined annotation and immutable ProviderDefinedType POJO
   - Add ProviderDefinedTypeSerializer for GraphBinary with wire format: 
fully-qualified type string + fully-qualified fields map
   - Add PdtGraphSONSerializersV4 with g:CompositePdt type tag
   - Add ProviderDefinedTypeAdapter<T> and ProviderDefinedTypeRegistry with 
ServiceLoader discovery, recursive hydration, and graceful degradation on 
adapter failure
   - Integrate auto-hydration into GraphBinaryReader and GraphSONMapper
   - Add GraphBinaryWriter auto-conversion for @ProviderDefined objects
   - Cache reflection metadata per class for performance
   - Support inherited fields via superclass walking
   - Remove legacy CUSTOM(0x00) type mechanism entirely
   
   Gremlin-lang:
   - Add PDT("name", ["key":value]) literal to ANTLR grammar
   - Server-side parser constructs ProviderDefinedType from PDT literals
   - All GLV translators emit PDT literal syntax
   - Registry-based and annotation-based auto-dehydration in translators
   - All TranslateVisitors handle PDT for cross-language translation
   
   GLV support (all languages):
   - Python: ProviderDefinedType, serializer, registry with @provider_defined 
decorator, entry_points auto-discovery, registry wired through 
Client/DriverRemoteConnection
   - JavaScript: ProviderDefinedType, CompositePDTSerializer, registry with 
explicit function pair registration, client options wiring
   - Go: ProviderDefinedType struct, serializer/deserializer, PDTRegistry with 
struct tags, RegisterFuncs, PDTProvider interface, client wiring
   - .NET: ProviderDefinedType, CompositePDTSerializer, registry with 
IProviderDefinedTypeAdapter<T>, [ProviderDefined] attribute with 
IncludedFields/ExcludedFields, assembly scanning, IMessageSerializer 
.SetPdtRegistry() interface method, client/connection wiring
   
   Server and testing:
   - PDT flows end-to-end through gremlin-server with TinkerGraph storing 
original objects and conversion at serialization boundary
   - Test-jar with Point, Address, Person test types for Docker server
   - Integration tests in all GLVs using gremlin-lang PDT literals
   - Traversal API tests covering raw PDT, registry hydration, and 
annotation-based auto-dehydration round-trips


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to