2017-04-24 5 views
0

2つのオブジェクトを簡単に比較したいとき、Javersというライブラリが見つかりました。これは、オブジェクトの値の変化を比較するなど、ほとんどの場合、非常にうまく機能しますが、リストでもうまく機能します。しかし、マップを含む2つのオブジェクトを持つ場合、どのように変更をキャプチャしますか?Javersを使用してマップを含むオブジェクトを比較

Test test1 = new Test(); 
Map<String,Object> map1 = new HashMap(); 
map1.put("one",1); 
map1.put("two",2); 
test1.setMap(map1); 
Test test2 = new Test(); 
Map<String,Object> map2 = new HashMap(); 
map2.put("one",2); 
map2.put("two",1); 
test2.setMap(map2); 
Javers javers = JaversBuilder.javers().build(); 
javers.compare(test1,test2);//? 

これは私のマップで行われた変更を与えるものではありません:私は、以下の値を持つこののオブジェクトを持っている場合たとえば、私は、今すぐマップで次のクラス、

public class Test { 
    private Map<String,Object> map = new HashMap(); 
    //some others fields 
    //getters and setters 
} 

を持っています。どのように私はそれをキャプチャするのですか?

答えて

1

変更をキャプチャするには、compareメソッドによって返されたdiffオブジェクトを処理する必要があります。たとえば、変更だけを印刷します http://javers.org/documentation/diff-examples/

とJavadocに:

Diff diff = javers.compare(test1,test2); 
     diff.getChanges().forEach(change -> System.out.println(change.toString())); 

詳細情報はjaversのマニュアルに記載されています http://javers.org/javadoc_3.x/org/javers/core/diff/Diff.html

+0

ありがとうございました。私はMapChangeを探していた。 :) –