The same resource can actually be mapped into the logical space more than once if it appears on multiple super paths.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2898 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 70bef30..191f0f7 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
@@ -325,30 +325,32 @@
// A rerooted resource blocks any other resource at this path.
continue;
}
+ int hitCount = 0;
for (PathPrefix pathPrefix : pathPrefixSet.values()) {
if (pathPrefix.allows(path)) {
assert (path.startsWith(pathPrefix.getPrefix()));
if (pathPrefix.shouldReroot()) {
- path = pathPrefix.getRerootedPath(path);
+ String rerootedPath = pathPrefix.getRerootedPath(path);
// Try to reuse the same wrapper.
- Resource exposed = exposedResourceMap.get(path);
+ Resource exposed = exposedResourceMap.get(rerootedPath);
if (exposed instanceof ResourceWrapper) {
ResourceWrapper exposedWrapper = (ResourceWrapper) exposed;
if (exposedWrapper.resource == resource) {
- externalMap.put(path, exposedWrapper);
+ externalMap.put(rerootedPath, exposedWrapper);
break;
}
}
// Just create a new wrapper.
- AbstractResource wrapper = new ResourceWrapper(path, resource);
- externalMap.put(path, wrapper);
+ AbstractResource wrapper = new ResourceWrapper(rerootedPath,
+ resource);
+ externalMap.put(rerootedPath, wrapper);
} else {
externalMap.put(path, resource);
}
- break;
+ ++hitCount;
}
}
- assert (externalMap.containsKey(path));
+ assert (hitCount > 0);
}
return externalMap;
}