Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(316)

Side by Side Diff: dart/compiler/javatests/com/google/dart/compiler/end2end/inc/MemoryLibrarySource.java

Issue 11233061: Revert "Parts must start with 'part of'" and "Attempt to fix VM build" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 package com.google.dart.compiler.end2end.inc; 4 package com.google.dart.compiler.end2end.inc;
5 5
6 import com.google.common.collect.Maps; 6 import com.google.common.collect.Maps;
7 import com.google.dart.compiler.DartSource; 7 import com.google.dart.compiler.DartSource;
8 import com.google.dart.compiler.LibrarySource; 8 import com.google.dart.compiler.LibrarySource;
9 import com.google.dart.compiler.Source; 9 import com.google.dart.compiler.Source;
10 import com.google.dart.compiler.UrlDartSource; 10 import com.google.dart.compiler.UrlDartSource;
11 11
12 import java.io.FileNotFoundException; 12 import java.io.FileNotFoundException;
13 import java.io.IOException; 13 import java.io.IOException;
14 import java.io.Reader; 14 import java.io.Reader;
15 import java.io.StringReader; 15 import java.io.StringReader;
16 import java.net.URI; 16 import java.net.URI;
17 import java.util.Map; 17 import java.util.Map;
18 18
19 /** 19 /**
20 * {@link LibrarySource} which provides content for all {@link Source}s from mem ory. 20 * {@link LibrarySource} which provides content for all {@link Source}s from mem ory.
21 */ 21 */
22 public class MemoryLibrarySource implements LibrarySource { 22 public class MemoryLibrarySource implements LibrarySource {
23 public static final String IO_EXCEPTION_CONTENT = "simulate-IOException"; 23 public static final String IO_EXCEPTION_CONTENT = "simulate-IOException";
24 private final String libName; 24 private final String libName;
25 private final Map<String, DartSource> sourceMap;
26 private final Map<String, String> sourceContentMap; 25 private final Map<String, String> sourceContentMap;
27 private final Map<String, Long> sourceLastModifiedMap; 26 private final Map<String, Long> sourceLastModifiedMap;
28 27
29 public MemoryLibrarySource(String libName) { 28 public MemoryLibrarySource(String libName) {
30 this.libName = libName; 29 this.libName = libName;
31 sourceMap = Maps.newHashMap();
32 sourceContentMap = Maps.newHashMap(); 30 sourceContentMap = Maps.newHashMap();
33 sourceLastModifiedMap = Maps.newHashMap(); 31 sourceLastModifiedMap = Maps.newHashMap();
34 } 32 }
35 33
36 private MemoryLibrarySource(String libName, MemoryLibrarySource parent) { 34 private MemoryLibrarySource(String libName, MemoryLibrarySource parent) {
37 this.libName = libName; 35 this.libName = libName;
38 sourceMap = parent.sourceMap;
39 sourceContentMap = parent.sourceContentMap; 36 sourceContentMap = parent.sourceContentMap;
40 sourceLastModifiedMap = parent.sourceLastModifiedMap; 37 sourceLastModifiedMap = parent.sourceLastModifiedMap;
41 } 38 }
42 39
43 @Override 40 @Override
44 public boolean exists() { 41 public boolean exists() {
45 return true; 42 return true;
46 } 43 }
47 44
48 @Override 45 @Override
(...skipping 22 matching lines...) Expand all
71 if (IO_EXCEPTION_CONTENT.equals(content)) { 68 if (IO_EXCEPTION_CONTENT.equals(content)) {
72 throw new IOException("simulated"); 69 throw new IOException("simulated");
73 } 70 }
74 if (content == null) { 71 if (content == null) {
75 throw new FileNotFoundException(libName); 72 throw new FileNotFoundException(libName);
76 } 73 }
77 return new StringReader(content); 74 return new StringReader(content);
78 } 75 }
79 76
80 @Override 77 @Override
81 public LibrarySource getImportFor(String relPath) throws IOException { 78 public LibrarySource getImportFor(final String relPath) throws IOException {
82 if (!sourceContentMap.containsKey(relPath)) {
83 return null;
84 }
85 return new MemoryLibrarySource(relPath, this); 79 return new MemoryLibrarySource(relPath, this);
86 } 80 }
87 81
88 @Override 82 @Override
89 public DartSource getSourceFor(final String relPath) { 83 public DartSource getSourceFor(final String relPath) {
90 DartSource result;
91 // check cache
92 {
93 result = sourceMap.get(relPath);
94 if (result != null) {
95 return result;
96 }
97 }
98 // prepare content
99 final String content = sourceContentMap.get(relPath); 84 final String content = sourceContentMap.get(relPath);
100 final Long sourceLastModified = sourceLastModifiedMap.get(relPath); 85 final Long sourceLastModified = sourceLastModifiedMap.get(relPath);
101 // may be does not exist
102 if (content == null) {
103 return null;
104 }
105 // Return fake UrlDateSource with in-memory content. 86 // Return fake UrlDateSource with in-memory content.
106 final URI uri = URI.create(relPath); 87 final URI uri = URI.create(relPath);
107 result = new UrlDartSource(uri, relPath, this) { 88 return new UrlDartSource(uri, relPath, this) {
108 @Override 89 @Override
109 public String getName() { 90 public String getName() {
110 return relPath; 91 return relPath;
111 } 92 }
112 93
113 @Override 94 @Override
114 public URI getUri() { 95 public URI getUri() {
115 return uri; 96 return uri;
116 } 97 }
117 98
118 @Override 99 @Override
119 public boolean exists() { 100 public boolean exists() {
120 return content != null; 101 return content != null;
121 } 102 }
122 103
123 @Override 104 @Override
124 public long getLastModified() { 105 public long getLastModified() {
125 return sourceLastModified.longValue(); 106 return sourceLastModified.longValue();
126 } 107 }
127 108
128 @Override 109 @Override
129 public Reader getSourceReader() throws IOException { 110 public Reader getSourceReader() throws IOException {
130 return new StringReader(content); 111 return new StringReader(content);
131 } 112 }
132 }; 113 };
133 sourceMap.put(relPath, result);
134 return result;
135 } 114 }
136 115
137 /** 116 /**
138 * Sets the given content for the source. 117 * Sets the given content for the source.
139 */ 118 */
140 public void setContent(String relPath, String content) { 119 public void setContent(String relPath, String content) {
141 sourceMap.remove(relPath);
142 sourceContentMap.put(relPath, content); 120 sourceContentMap.put(relPath, content);
143 sourceLastModifiedMap.put(relPath, System.currentTimeMillis()); 121 sourceLastModifiedMap.put(relPath, System.currentTimeMillis());
144 } 122 }
145 } 123 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698