ArangoDB: Пользовательская серлизация вложенных объектов - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь изменить устаревшее монолитное приложение, которое использует сериализацию Java в качестве механизма сохранения для использования ArangoDB.

Я столкнулся с проблемой при сохранении объектов, содержащих другие объекты, поскольку это приводит к следующему исключению:

VPackValueTypeException: ожидаемый тип OBJECT`

Я использую Java-драйвер Arango, а не весенние данные Arango.

Я пытался использовать сериализацию Arango по умолчанию, а также писать свой собственный сериализатор, наряду с этим я также пытался использовать Джексона в качестве сериализатора.

Ниже приведен пример одного из моих сериализаторов.

public class ArangoDbChunkSerializer extends ArangoDbSerializerDeserializer implements VPackSerializer<Chunk>
{
  protected static final String CHUNK_NAME = "chunk";
  protected static final String CHUNK_SIZE = "chunkSize";
  protected static final String ITEMS = "items";

  @Override
  public void serialize(VPackBuilder builder, String attribute, Chunk value, VPackSerializationContext context)
      throws VPackException
  {
    builder.add(attribute, ValueType.OBJECT, false);

    builder.add(SERIALIZABLE_CLASS_NAME, value.getSerializableClassName());
    builder.add(CHUNK_SIZE, value.getChunkSize());

    VPack vPack = new VPack.Builder()
        .registerSerializer(Row.class, new ArangoDbRowSerializer())
        .build();
    VPackSlice vPackSlice = vPack.serialize(value.getItems());

    builder.add(vPackSlice);

    builder.close();
  }
}

Исключение происходит внутри

builder.close ();

Любая помощь будет отличной - спасибо за чтение этого:)

...