[255108] Regression in EMF processing of new IFile
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 8621a4b..3718afe 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
@@ -320,22 +320,26 @@ * @post Return true if a <code>Resource</code> was queued up to be reloaded. */ protected boolean addedResource(IFile aFile) { - boolean didProcess = false; - List resources = getResources(aFile); - for (Iterator iterator = resources.iterator(); iterator.hasNext();) { + boolean didProcess = false; + List resources = getResources(aFile); + for (Iterator iterator = resources.iterator(); iterator.hasNext();) { Resource resource = (Resource) iterator.next(); - if ((resource != null) && (recentlySavedFilesContains(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; + if (resource != null) { + if (recentlySavedFilesContains(resource)) { + + /* + * The IFile was just added to the workspace but we have a + * changed 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 { @@ -350,19 +354,19 @@ deferredUnloadResources.add(resource); didProcess = true; } + } else { + /* Process autoload resources on added file */ + URI uri = URI.createPlatformResourceURI(aFile.getFullPath().toString()); + if ((autoloadResourcesURIs.contains(uri)) || (autoloadResourcesExts.contains(aFile.getFileExtension()))) { + deferredLoadResources.add(uri); + 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; -} + return didProcess; + } private synchronized boolean recentlySavedFilesContains(Resource resource) { for (Iterator iterator = recentlySavedFiles.iterator(); iterator.hasNext();) {