Java对象差异和修补

时间:2020-06-26 12:48:30

标签: java diff

我正在尝试找到一种用Java版本化复杂数据对象的方法。为此,我打算将初始文档和diff都存储在数据库中(以及用于快速访问的当前对象),然后能够通过将diff作为补丁应用到原始文档中来还原任何版本。

到目前为止,为此,我遇到了Javers和java-object-diff ...

  • Javers无法修补
  • 在java-object-diff文档中,似乎您既需要初始版本也需要目标版本来应用diff,这似乎毫无意义,因为我想获取目标版本< / li>

这似乎是某人早已实施的东西。但是,到目前为止,我还没有找到一个可行的解决方案。

有人可以帮我吗?

作为参考,我目前正在尝试使其工作如下:

    @Test
    void applyDiffDeltaShouldCorrectlyApplyDeltaToCity() {
        GameCharacter sylvia = GameCharacters.sylvia();
        GameCharacter sylviaEdited = GameCharacters.sylviaEdited();
        
        DiffNode characterDelta
            = objectDiffer.compare(sylvia, sylviaEdited);
        GameCharacter sylviaWithAppliedDelta
            = applyDelta(sylvia, characterDelta);
        
        assertEquals(sylviaEdited.getName(), sylviaWithAppliedDelta.getName());
    }

    public static <T> T applyDelta(T baseObject, DiffNode diff) {
        //This won't work, but it would be cool if it did:
        T updatedObject = baseObject + diff;
        return updatedObject ;
    }

0 个答案:

没有答案