412092 : cache rootFolders for 2 secs
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualArchiveComponent.java b/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualArchiveComponent.java
index 8c3467e..e812530 100644
--- a/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualArchiveComponent.java
+++ b/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualArchiveComponent.java
@@ -42,6 +42,12 @@
private Set<String> inclusions;
private Set<String> exclusions;
+
+ private ResourceListVirtualFolder cachedRoot;
+
+ private long lastCacheUpdate;
+
+ private static int MAX_CACHE = 2000;
public OverlayVirtualArchiveComponent(IProject aComponentProject,
String archiveLocation, IPath unpackDirPath, IPath aRuntimePath) {
@@ -72,9 +78,17 @@
}
root = new ResourceListVirtualFolder(getProject(), getRuntimePath(), new IContainer[] {});
} else {
+
+ if (cachedRoot != null && (System.currentTimeMillis() - lastCacheUpdate) < MAX_CACHE){
+ return cachedRoot;
+ }
+
IContainer[] containers = new IContainer[] {unpackedFolder};
root = new ResourceListVirtualFolder(getProject(), getRuntimePath(), containers);
root.setFilter(new FileSystemResourceFilter(inclusions, exclusions, unpackedFolder.getLocation()));
+
+ lastCacheUpdate = System.currentTimeMillis();
+ cachedRoot = root;
}
}
return root;
diff --git a/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualComponent.java b/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualComponent.java
index 106560d..897af22 100644
--- a/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualComponent.java
+++ b/org.eclipse.m2e.wtp.overlay/src/org/eclipse/m2e/wtp/overlay/internal/modulecore/OverlayVirtualComponent.java
@@ -56,7 +56,7 @@
private long lastCacheUpdate;
- private static int MAX_CACHE = 1000;
+ private static int MAX_CACHE = 2000;
public OverlayVirtualComponent(IProject project) {
super(project, ROOT);