Windows compatibility for SuperDevMode
java.util.File normalizes separators for the platform, so comparisons
with paths with forward-slashes will fail on Windows.
Splitting the filename and directory path is now done using string
manipulation rather than through File.
Bug: issue 8618
Change-Id: Ib10d352dac04ce2b359e98ffa7481b4b6608aab3
(cherry picked from commit 19c8cdb8e0e46dd8c959f16be5f2493a0a2f9130)
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
index 3c13186..b44dc98 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
@@ -81,7 +81,8 @@
Set<String> directories = new HashSet<String>();
for (int i = 0; i < sources.getLength(); i++) {
String filename = sources.get(i).asString().getString();
- directories.add(new File(filename).getParent());
+ int lastSlashPos = filename.lastIndexOf('/');
+ directories.add(lastSlashPos < 0 ? "" : filename.substring(0, lastSlashPos));
}
List<String> result = new ArrayList<String>();
@@ -102,9 +103,13 @@
List<String> result = new ArrayList<String>();
for (int i = 0; i < sources.getLength(); i++) {
- File candidate = new File(sources.get(i).asString().getString());
- if (parent.equals(candidate.getParent() + "/")) {
- result.add(candidate.getName());
+ String candidate = sources.get(i).asString().getString();
+ if (!candidate.startsWith(parent)) {
+ continue;
+ }
+ int nameStart = candidate.lastIndexOf('/') + 1;
+ if (nameStart == parent.length()) {
+ result.add(candidate.substring(nameStart));
}
}