我正在尝试找到一种用Java版本化复杂数据对象的方法。为此,我打算将初始文档和diff都存储在数据库中(以及用于快速访问的当前对象),然后能够通过将diff作为补丁应用到原始文档中来还原任何版本。
到目前为止,为此,我遇到了Javers和java-object-diff ...
这似乎是某人早已实施的东西。但是,到目前为止,我还没有找到一个可行的解决方案。
有人可以帮我吗?
作为参考,我目前正在尝试使其工作如下:
@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 ;
}