Index: compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java |
diff --git a/compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java b/compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java |
index a2fd2c447f8d47acb46b9b5857c1d61a6fe1f4d0..e31466f5ff96269d10f5217b6d38041cdcd36536 100644 |
--- a/compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java |
+++ b/compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java |
@@ -22,17 +22,20 @@ import java.util.Map; |
public class MemoryLibrarySource implements LibrarySource { |
public static final String IO_EXCEPTION_CONTENT = "simulate-IOException"; |
private final String libName; |
+ private final Map<String, DartSource> sourceMap; |
private final Map<String, String> sourceContentMap; |
private final Map<String, Long> sourceLastModifiedMap; |
public MemoryLibrarySource(String libName) { |
this.libName = libName; |
+ sourceMap = Maps.newHashMap(); |
sourceContentMap = Maps.newHashMap(); |
sourceLastModifiedMap = Maps.newHashMap(); |
} |
private MemoryLibrarySource(String libName, MemoryLibrarySource parent) { |
this.libName = libName; |
+ sourceMap = parent.sourceMap; |
sourceContentMap = parent.sourceContentMap; |
sourceLastModifiedMap = parent.sourceLastModifiedMap; |
} |
@@ -75,17 +78,33 @@ public class MemoryLibrarySource implements LibrarySource { |
} |
@Override |
- public LibrarySource getImportFor(final String relPath) throws IOException { |
+ public LibrarySource getImportFor(String relPath) throws IOException { |
+ if (!sourceContentMap.containsKey(relPath)) { |
+ return null; |
+ } |
return new MemoryLibrarySource(relPath, this); |
} |
@Override |
public DartSource getSourceFor(final String relPath) { |
+ DartSource result; |
+ // check cache |
+ { |
+ result = sourceMap.get(relPath); |
+ if (result != null) { |
+ return result; |
+ } |
+ } |
+ // prepare content |
final String content = sourceContentMap.get(relPath); |
final Long sourceLastModified = sourceLastModifiedMap.get(relPath); |
+ // may be does not exist |
+ if (content == null) { |
+ return null; |
+ } |
// Return fake UrlDateSource with in-memory content. |
final URI uri = URI.create(relPath); |
- return new UrlDartSource(uri, relPath, this) { |
+ result = new UrlDartSource(uri, relPath, this) { |
@Override |
public String getName() { |
return relPath; |
@@ -111,12 +130,15 @@ public class MemoryLibrarySource implements LibrarySource { |
return new StringReader(content); |
} |
}; |
+ sourceMap.put(relPath, result); |
+ return result; |
} |
/** |
* Sets the given content for the source. |
*/ |
public void setContent(String relPath, String content) { |
+ sourceMap.remove(relPath); |
sourceContentMap.put(relPath, content); |
sourceLastModifiedMap.put(relPath, System.currentTimeMillis()); |
} |