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 >>>>> >>>>> >>>>> >