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);