Tinkerpop регистрация пользовательского класса крио - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь добавить класс java.util.GregorianCalendar к сериализатору крио на Apache tinkerpop 3.3.3.Чтобы исключить следующее исключение

Exception in thread "main" java.lang.IllegalArgumentException: Class is not registered: java.util.GregorianCalendar
Note: To register this class use: kryo.register(java.util.GregorianCalendar.class);
    at org.apache.tinkerpop.shaded.kryo.Kryo.getRegistration(Kryo.java:484)
    at org.apache.tinkerpop.gremlin.structure.io.gryo.AbstractGryoClassResolver.writeClass(AbstractGryoClassResolver.java:110)
    at org.apache.tinkerpop.shaded.kryo.Kryo.writeClass(Kryo.java:514)
    at org.apache.tinkerpop.shaded.kryo.Kryo.writeClassAndObject(Kryo.java:619)
    at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedKryoAdapter.writeClassAndObject(ShadedKryoAdapter.java:49)
    at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedKryoAdapter.writeClassAndObject(ShadedKryoAdapter.java:24)

Так как tinkerpop использует какую-то "затененную" версию крио, я просто не могу назвать kryo.register().До сих пор я пробовал

GryoMapper mapper =
GryoMapper.build().addCustom(java.util.GregorianCalendar.class).create();
List l = mapper.getRegisteredClasses();

И смог наблюдать, что java.util.GregorianCalendar зарегистрировано.Но я не знаю, что мне делать дальше, чтобы использовать этот пользовательский маппер. Я проверил javadocs и запутался. Я также использую приведенный ниже код для записи TinkerGraph экземпляра в файл.Любая помощь будет оценена.

this.graph.io(IoCore.gryo()).writeGraph(filePath);

1 Ответ

0 голосов
/ 29 мая 2018

Я думаю, что если у вас есть экземпляр GryoMapper, я бы просто создал экземпляр GryoWriter, например, так:

File file = new File("C:/myfile.txt");
OutputStream fos = new FileOutputStream(file);
GryoMapper mapper = GryoMapper.build().addCustom(java.util.GregorianCalendar.class).create()
GryoWriter writer = GryoWriter.build().mapper(mapper).create()
writer.writeGraph(fos, graph)
...