I guess I'm trying to understand why it matters for purpose of the test. If
you mix/match versions I can't think of why the test would care one way or
the other. does sqlg serialize its id to a JSON Map?

On Tue, Sep 5, 2017 at 11:19 AM, pieter gmail <pieter.mar...@gmail.com>
wrote:

> I looked at TinkerGraph's implementation. In fact I copied it. TinkerGraph
> does not have any special id serialization. In fact both its
> TinkerIoRegistryV3d0 andTinkerIoRegistryV2d0 registry uses TinkerModuleV2d0.
>
>
> In IoCustomTest tests you call g.io(GraphSONIo.build(GraphSON
> Version.V2_0)).mapper().addCustomModule(moduleV2d0).
> I.e. the test manually registers the appropriate SimpleModule for each
> version.
>
> For IoEdgeTest the same needs to happen somehow. Currently I have only one
> default V3 SimpleModule same as TinkerGraph. I have written a V2
> SimpleModule but how in IoEdgeTest will the correct IoRegistry or
> SimpleModule be selected? The test itself does not call addCustomModule()
> and between the builders, mappers, registries and modules I don't see how
> to add it.
>
> Thanks,
> Pieter
>
> On 05/09/2017 16:30, Stephen Mallette wrote:
>
>> You have registries for each version as well and default to v3. Please see
>> TinkerGraph:
>>
>> https://github.com/apache/tinkerpop/blob/master/tinkergraph-
>> gremlin/src/main/java/org/apache/tinkerpop/gremlin/
>> tinkergraph/structure/TinkerGraph.java#L198
>>
>> If the user wants to override that then that's their choice, but they have
>> to rig it all up. We probably need a better system than this. IO is way
>> too
>> complicated and confusing.
>>
>> On Tue, Sep 5, 2017 at 9:52 AM, pieter gmail <pieter.mar...@gmail.com>
>> wrote:
>>
>> Afraid I still don't quite get it. How do I register the different
>>> SimpleModules depending on the version.
>>>
>>> Currently it starts in SqlgGraph,
>>>
>>> @Override
>>> public <I extends Io> I io(final Io.Builder<I> builder) {
>>>      return (I) builder.graph(this).onMapper(mapper ->
>>> mapper.addRegistry(SqlgIoRegistry.getInstance())).create();
>>> }
>>>
>>> and the SqlgIoRegistry registers the SimpleModule
>>>
>>> private SqlgIoRegistry() {
>>>      final SqlgSimpleModule sqlgSimpleModule = new SqlgSimpleModule();
>>>      register(GraphSONIo.class, null, sqlgSimpleModule);
>>>      register(GryoIo.class, RecordId.class, null);
>>> }
>>>
>>>
>>> Is the SqlgGraph.io(...) method suppose to interrogate the builder to
>>> check the version and add a corresponding IoRegistry and SimpleModule?
>>>
>>> Thanks
>>> Pieter
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 05/09/2017 13:30, Stephen Mallette wrote:
>>>
>>> I think you should just create a new SimpleModule for each version -
>>>> don't
>>>> try to put them in the same SqlgSimpleModule. It's a naming convention
>>>> that
>>>> users will have to follow rather than something explicitly enforced
>>>> through
>>>> code.
>>>>
>>>> On Sun, Sep 3, 2017 at 3:20 PM, pieter gmail <pieter.mar...@gmail.com>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>>> I am getting IO tests failures on 3.3.0.
>>>>>
>>>>> Sqlg has a SimpleModule which add serializers for its custom id.
>>>>>
>>>>>       SqlgSimpleModule() {
>>>>>           super("custom");
>>>>> //        addSerializer(RecordId.class, new
>>>>> RecordId.RecordIdJacksonSerial
>>>>> izerV2d0());
>>>>> //        addDeserializer(RecordId.class, new
>>>>> RecordId.RecordIdJacksonDeserializerV2d0());
>>>>> //        addSerializer(SchemaTable.class, new
>>>>> SchemaTable.SchemaTableIdJacksonSerializerV2d0());
>>>>> //        addDeserializer(SchemaTable.class, new
>>>>> SchemaTable.SchemaTableIdJacksonDeserializerV2d0());
>>>>>
>>>>>           addSerializer(RecordId.class, new
>>>>> RecordId.RecordIdJacksonSerial
>>>>> izerV3d0());
>>>>>           addDeserializer(RecordId.class, new
>>>>> RecordId.RecordIdJacksonDeseri
>>>>> alizerV3d0());
>>>>>           addSerializer(SchemaTable.class, new
>>>>> SchemaTable.SchemaTableJacksonSerializerV3d0());
>>>>>           addDeserializer(SchemaTable.class, new
>>>>> SchemaTable.SchemaTableJacksonDeserializerV3d0());
>>>>>       }
>>>>>
>>>>> How is it suppose to distinguish between v2 and v3?
>>>>>
>>>>> An example of a failure is 'IoEdgeTest.shouldReadWriteEdge'
>>>>>
>>>>> If ...V2d0.. is added to the serializers then 'graphson-v3' fails.
>>>>> If ...V3d0.. is added to the serializers then 'graphson-v2' fails.
>>>>>
>>>>> TinkerPop's own CustomId tests do not rely on default behavior and
>>>>> manually creates SimpleModules for each scenario.
>>>>>
>>>>> Are they both suppose to work somehow?
>>>>>
>>>>> Thanks
>>>>> Pieter
>>>>>
>>>>>
>>>>>
>

Reply via email to