Fixes a bug in ResourceOracleImpl that caused rerooted resources to always appear stale whenever any resource was stale.

Review by: bruce (TBR)


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2760 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
index 0d429ff..026b248 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
@@ -326,6 +326,16 @@
           assert (path.startsWith(pathPrefix.getPrefix()));
           if (pathPrefix.shouldReroot()) {
             path = pathPrefix.getRerootedPath(path);
+            // Try to reuse the same wrapper.
+            Resource exposed = exposedResourceMap.get(path);
+            if (exposed instanceof ResourceWrapper) {
+              ResourceWrapper exposedWrapper = (ResourceWrapper) exposed;
+              if (exposedWrapper.resource == resource) {
+                externalMap.put(path, exposedWrapper);
+                break;
+              }
+            }
+            // Just create a new wrapper.
             AbstractResource wrapper = new ResourceWrapper(path, resource);
             externalMap.put(path, wrapper);
           } else {