私のプログラムでは、常に最新の内容のファイルが必要です。 私はEMFリソースセットを作成しました。ファイルの変更時にEMF ResourceSetを自動的に更新する方法はありますか?
resourceSet.getResource(resourceURI, true)
は、静的フィールドにリソースセットを格納するために多くの時間がかかるため、ファイルをキャッシュすることができます。
I.e.一部のURIに対してresourceSet.getResource(resourceURI, true)
が呼び出されると、ファイルはresourceSet
にキャッシュされます。
問題はresourceSet
は、それが自動的にキャッシュだ更新されないということです。
すなわち:
resourceSet.getResource(resourceURI, true);
// delete resourceURI from file system
// Here I expect null, but old version of the file is returned
resourceSet.getResource(resourceURI, true);
必要に応じてキャッシュを更新するresourceSet
を強制的にどのように?
私はorg.eclipse.emf.ecore.resource.impl.ResourceSetImpl
を使用していますが、おそらく変更スタンプを考慮した別のバージョンのResourceSet
が必要ですか?
ので、これは私がのResourceSetの私自身の「スマート」の実装を記述する必要があることを意味:)ファイルが – javapowered
Eclipseワークスペースは、あなたのための作業を行います日食「タイムスタンプ」を使用して変更された場合には、チェックすることが可能だと実際の変更があったときにリスナーに通知してください。この変更は、エディタが保存されたときや、ファイルシステムに関してワークスペースが更新されたときなどに発生する可能性があります。 –
これを試してみると、私のモデルオブジェクトは、 'unload'を呼び出すとプロキシになるように設定されています。これは正常であり、ドキュメンテーションで説明されています。しかし、私が 'load'を呼び出すと、モデルオブジェクトはプロキシとして維持され、ファイルからの新しい情報で更新されません。なぜこれが事実であり、私がそれについて何ができるのかについて、あなたは何か考えがありますか? – Lii