[152139] fix for resource synch out of workspace
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
index 14e1cbc..f8fc30f 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
@@ -232,14 +232,36 @@
* @post Return true if a <code>Resource</code> was queued up to be reloaded.
*/
protected boolean addedResource(IFile aFile) {
- //Process resource as a refresh.
- URI uri = URI.createPlatformResourceURI(aFile.getFullPath().toString());
- if ((autoloadResourcesURIs.contains(uri)) || (autoloadResourcesExts.contains(aFile.getFileExtension()))) {
- deferredLoadResources.add(uri);
- return true;
- }
- return false;
- }
+ boolean didProcess = false;
+ Resource resource = getResource(aFile);
+ if ((resource != null) || (recentlySavedFiles.contains(resource))){
+ /*
+ * The IFile was just added to the workspace but we have a resource
+ * in memory. Need to decide if it should be unloaded.
+ */
+ if (resource.isModified()) {
+ if (WorkbenchResourceHelper.isReferencedResource(resource)) {
+ ReferencedResource refRes = (ReferencedResource) resource;
+ if (refRes.shouldForceRefresh()) {
+ deferredUnloadResources.add(resource);
+ didProcess = true;
+ }
+ }
+ } else {
+ /*Unload if found and is not modified.*/
+ deferredUnloadResources.add(resource);
+ didProcess = true;
+ }
+ } else {
+ //Process resource as a refresh.
+ URI uri = URI.createPlatformResourceURI(aFile.getFullPath().toString());
+ if ((autoloadResourcesURIs.contains(uri)) || (autoloadResourcesExts.contains(aFile.getFileExtension()))) {
+ deferredLoadResources.add(uri);
+ didProcess = true;
+ }
+ }
+ return didProcess;
+}
protected boolean processResource(IFile aFile, boolean isRemove) {
Resource resource = getResource(aFile);