| Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/analysis/Library.java
|
| ===================================================================
|
| --- editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/analysis/Library.java (revision 8521)
|
| +++ editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/analysis/Library.java (working copy)
|
| @@ -26,8 +26,6 @@
|
|
|
| import java.io.File;
|
| import java.io.IOException;
|
| -import java.io.LineNumberReader;
|
| -import java.io.PrintWriter;
|
| import java.net.URI;
|
| import java.util.Collection;
|
| import java.util.HashMap;
|
| @@ -40,9 +38,7 @@
|
| */
|
| class Library {
|
|
|
| - private static final String PREFIXES_TAG = "prefixes: ";
|
| - private static final String DIRECTIVES_TAG = "directives: ";
|
| - private static final int DIRECTIVES_LEN = DIRECTIVES_TAG.length();
|
| + private static final String END_PREFIXES_TAG = "</end-prefixes>";
|
| private static final String END_IMPORTS_TAG = "</end-imports>";
|
| private static final String END_SOURCES_TAG = "</end-sources>";
|
|
|
| @@ -104,61 +100,13 @@
|
| * when the ASTs are re-parsed and re-resolved because they were already notified the first time
|
| * it was parsed and resolved.
|
| */
|
| - static Library readCache(AnalysisServer server, File libFile, LineNumberReader reader)
|
| + static Library readCache(AnalysisServer server, File libFile, CacheReader reader)
|
| throws IOException {
|
| LibrarySource libSource = toLibrarySource(server, libFile);
|
| -
|
| - HashSet<String> prefixes = new HashSet<String>();
|
| - String line = reader.readLine();
|
| - if (line == null || !line.startsWith(PREFIXES_TAG)) {
|
| - throw new IOException("Expected " + PREFIXES_TAG + " but found " + line);
|
| - }
|
| - int start = PREFIXES_TAG.length();
|
| - int last = line.length() - 1;
|
| - while (start < last) {
|
| - int end = line.indexOf(',', start);
|
| - prefixes.add(line.substring(start, end));
|
| - start = end + 1;
|
| - }
|
| -
|
| - line = reader.readLine();
|
| - if (line == null || !line.startsWith(DIRECTIVES_TAG)) {
|
| - throw new IOException("Expected " + DIRECTIVES_TAG + " but found " + line);
|
| - }
|
| - boolean hasDirectives = line.length() > DIRECTIVES_LEN && line.charAt(DIRECTIVES_LEN) == 't';
|
| -
|
| - HashMap<String, File> imports = new HashMap<String, File>();
|
| - while (true) {
|
| - line = reader.readLine();
|
| - if (line == null) {
|
| - throw new IOException("Expected " + END_IMPORTS_TAG + " but found EOF");
|
| - }
|
| - if (line.equals(END_IMPORTS_TAG)) {
|
| - break;
|
| - }
|
| - String path = reader.readLine();
|
| - if (path == null) {
|
| - throw new IOException("Expected import path but found EOF");
|
| - }
|
| - imports.put(line, new File(path));
|
| - }
|
| -
|
| - HashMap<String, File> sources = new HashMap<String, File>();
|
| - while (true) {
|
| - line = reader.readLine();
|
| - if (line == null) {
|
| - throw new IOException("Expected " + END_SOURCES_TAG + " but found EOF");
|
| - }
|
| - if (line.equals(END_SOURCES_TAG)) {
|
| - break;
|
| - }
|
| - String path = reader.readLine();
|
| - if (path == null) {
|
| - throw new IOException("Expected source path but found EOF");
|
| - }
|
| - sources.put(line, new File(path));
|
| - }
|
| -
|
| + boolean hasDirectives = reader.readBoolean();
|
| + HashSet<String> prefixes = reader.readStringSet(END_PREFIXES_TAG);
|
| + HashMap<String, File> imports = reader.readStringFileMap(END_IMPORTS_TAG);
|
| + HashMap<String, File> sources = reader.readStringFileMap(END_SOURCES_TAG);
|
| return new Library(libFile, libSource, prefixes, hasDirectives, imports, sources, false);
|
| }
|
|
|
| @@ -168,6 +116,7 @@
|
| private final boolean hasDirectives;
|
| private final HashMap<String, File> imports;
|
| private final HashMap<String, File> sources;
|
| +
|
| private final HashMap<File, DartUnit> resolvedUnits;
|
|
|
| /**
|
| @@ -249,24 +198,10 @@
|
| /**
|
| * Write information about the cached library, but do not write the AST structures themselves.
|
| */
|
| - void writeCache(PrintWriter writer) {
|
| - writer.print(PREFIXES_TAG);
|
| - for (String eachPrefix : prefixes) {
|
| - writer.print(eachPrefix);
|
| - writer.print(',');
|
| - }
|
| - writer.println();
|
| - writer.print(DIRECTIVES_TAG);
|
| - writer.println(hasDirectives);
|
| - for (Entry<String, File> entry : imports.entrySet()) {
|
| - writer.println(entry.getKey());
|
| - writer.println(entry.getValue().getPath());
|
| - }
|
| - writer.println(END_IMPORTS_TAG);
|
| - for (Entry<String, File> entry : sources.entrySet()) {
|
| - writer.println(entry.getKey());
|
| - writer.println(entry.getValue().getPath());
|
| - }
|
| - writer.println(END_SOURCES_TAG);
|
| + void writeCache(CacheWriter writer) {
|
| + writer.writeBoolean(hasDirectives);
|
| + writer.writeStringSet(prefixes, END_PREFIXES_TAG);
|
| + writer.writeStringFileMap(imports, END_IMPORTS_TAG);
|
| + writer.writeStringFileMap(sources, END_SOURCES_TAG);
|
| }
|
| }
|
|
|