我需要在程序中始終保持某些文件的最新內容。 我創建了一個EMF資源集。文件更改時如何自動更新EMF ResourceSet?
因爲resourceSet.getResource(resourceURI, true)
需要很多時間才能完成我將資源集存儲在一個靜態字段中,因此文件可以被緩存。
I.e.一旦resourceSet.getResource(resourceURI, true)
被調用某個URI,該文件被緩存在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工作區將做的工作,爲您和在發生實際變化時通知您的聽衆。當編輯器保存時或者例如工作區被刷新到文件系統時,這種改變可能會發生。 –
當我嘗試這個時,我所有的模型對象被設置爲代理時,我叫'卸載'。這是正常的,並由文檔描述。但是,當我調用'load'時,模型對象始終是代理,並且它們不會使用文件中的新信息進行更新。你知道爲什麼會出現這種情況,我能做些什麼嗎? – Lii