From 70c9a690d9224e6142bf2b4c06e50c5a48247954 Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Thu, 19 Jan 2012 18:09:25 +0000 Subject: [PATCH] implemented recursive search for models refs 438 --- .../EclipseResourceStorageProvider.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/storage/eclipse/EclipseResourceStorageProvider.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/storage/eclipse/EclipseResourceStorageProvider.java index 70d3dcfbe..1ee3e5938 100644 --- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/storage/eclipse/EclipseResourceStorageProvider.java +++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/storage/eclipse/EclipseResourceStorageProvider.java @@ -32,7 +32,9 @@ import java.util.IdentityHashMap; import java.util.List; import java.util.Map; +import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; @@ -62,7 +64,7 @@ import org.osgi.framework.Bundle; * @author hoelzlf * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 97A421BF172008E2FC3E5255ED918D14 + * @ConQAT.Rating YELLOW Hash: AA6D000D4AB166B6B2703F2B2E9EE23F */ public class EclipseResourceStorageProvider implements IEclipseResourceStorageService, IResourceChangeListener, @@ -100,19 +102,26 @@ public class EclipseResourceStorageProvider implements if (!project.isOpen()) { continue; } - try { - for (IResource res : project.members()) { - if (res instanceof IFile) { - IFile file = (IFile) res; - if (checkLocationProvider(file)) { - loadContext(file); - } + searchResourceForModels(project); + } + } + + /** Searches the given container for models. */ + private void searchResourceForModels(IContainer container) { + try { + for (IResource res : container.members()) { + if (res instanceof IFile) { + IFile file = (IFile) res; + if (checkLocationProvider(file)) { + loadContext(file); } + } else if (res instanceof IFolder) { + searchResourceForModels((IFolder) res); } - } catch (CoreException e) { - error(ToolingKernelActivator.getDefault(), - "Core Exception while scanning Eclipse workspace", e); } + } catch (CoreException e) { + error(ToolingKernelActivator.getDefault(), + "Core Exception while scanning Eclipse workspace", e); } } @@ -151,7 +160,6 @@ public class EclipseResourceStorageProvider implements @Override public boolean visit(IResourceDelta delta) { if (delta.getResource() instanceof IFile - && delta.getResource().getParent() instanceof IProject && checkLocationProvider((IFile) delta.getResource())) { runWorkspaceChangeJob((IFile) delta.getResource(), delta.getKind()); } -- GitLab