Chromium Code Reviews| Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/EditorLibraryManager.java |
| diff --git a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/EditorLibraryManager.java b/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/EditorLibraryManager.java |
| index 4543922bb70f5bcc76a82c07acfaf7b0dba15724..15d006d3b78c07b0da555204214400385a3bfcba 100644 |
| --- a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/EditorLibraryManager.java |
| +++ b/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/EditorLibraryManager.java |
| @@ -13,228 +13,22 @@ |
| */ |
| package com.google.dart.tools.core.internal.model; |
| -import com.google.dart.compiler.SystemLibrary; |
| import com.google.dart.compiler.SystemLibraryManager; |
| -import com.google.dart.tools.core.DartCore; |
| -import com.google.dart.tools.core.DartCoreDebug; |
| import java.io.File; |
| -import java.io.IOException; |
| -import java.io.InputStream; |
| -import java.net.URI; |
| -import java.net.URISyntaxException; |
| -import java.util.ArrayList; |
| -import java.util.Collection; |
| -import java.util.HashMap; |
| -import java.util.HashSet; |
| -import java.util.List; |
| -import java.util.Map; |
| -import java.util.Map.Entry; |
| -import java.util.Properties; |
| /** |
| * Specialized {@link SystemLibraryManager} for accessing libraries bundled with the editor. |
| * |
| * @see SystemLibraryManagerProvider#getSystemLibraryManager() |
| * @see SystemLibraryManagerProvider#getDartCLibraryManager() |
| - * @see SystemLibraryManagerProvider#getVmLibraryManager() |
| + * @see SystemLibraryManagerProvider#getAnyLibraryManager() |
| */ |
| -public abstract class EditorLibraryManager extends SystemLibraryManager { |
| - private List<SystemLibrary> libraries; |
| - private Map<URI, URI> longToShortUriMap; |
| - |
| - /** |
| - * Answer a collection of all bundled library URL specs (e.g. "dart:dom"). |
| - * |
| - * @return a collection of specs (not <code>null</code>, contains no <code>null</code>s) |
| - */ |
| - public Collection<String> getAllLibrarySpecs() { |
| - Collection<String> result = new ArrayList<String>(libraries.size()); |
| - for (SystemLibrary lib : libraries) { |
| - result.add("dart:" + lib.getShortName()); |
| - } |
| - return result; |
| +public class EditorLibraryManager extends SystemLibraryManager { |
|
Brian Wilkerson
2012/03/27 14:10:30
Is there a reason for keeping this class, or will
|
| + |
| + public EditorLibraryManager(File sdkPath, String platformName) { |
| + super(sdkPath, platformName); |
| } |
| - /** |
| - * Answer the directory containing the library folders. Typically this would be the "dart-sdk/lib" |
| - * directory. |
| - * |
| - * <pre> |
| - * install-directory/ |
| - * dart-sdk/ |
| - * lib/ |
| - * core/ |
| - * core_runtime.dart |
| - * core_frog.dart |
| - * ... other core files ... |
| - * coreimpl/ |
| - * coreimpl_runtime.dart |
| - * ... other coreimpl files ... |
| - * dom/ |
| - * dom.dart |
| - * ... other dom files ... |
| - * ... other library directories ... |
| - * </pre> |
| - */ |
| - public abstract File getLibrariesDir(); |
| - |
| - /** |
| - * Answer the original "dart:<libname>" URI for the specified resolved URI or <code>null</code> if |
| - * it does not map to a short URI. |
| - */ |
| - public URI getShortUri(URI uri) { |
| - return longToShortUriMap.get(uri); |
| - } |
| - |
| - /** |
| - * Answer the URI against which {@link #getDefaultLibraries()} resolves relative paths |
| - * |
| - * @return the URI (not <code>null</code>) |
| - */ |
| - protected abstract URI getBaseUri(); |
| - |
| - /** |
| - * Scan the directory returned by {@link #getLibrariesDir()} looking for libraries of the form |
| - * libraries/<name>/<name>_<platform>.dart and libraries/<name>/<name>.dart where <platform> is |
| - * the value returned by {@link #getPlatformName()}. This is called by the superclass constructor, |
| - * thus ensuring that the {@link #libraries} field is always initialized. |
| - */ |
| - @Override |
| - protected SystemLibrary[] getDefaultLibraries() { |
| - libraries = new ArrayList<SystemLibrary>(); |
| - longToShortUriMap = new HashMap<URI, URI>(); |
| - |
| - // Cycle through the import.config, extracting explicit mappings and searching directories |
| - |
| - URI base = getBaseUri(); |
| - Properties importConfig = getImportConfig(); |
| - HashSet<String> explicitShortNames = new HashSet<String>(); |
| - for (Entry<Object, Object> entry : importConfig.entrySet()) { |
| - String shortName = ((String) entry.getKey()).trim(); |
| - String path = ((String) entry.getValue()).trim(); |
| - |
| - File file; |
| - try { |
| - file = new File(base.resolve(new URI(null, null, path, null)).normalize()); |
| - } catch (URISyntaxException e) { |
| - DartCore.logError("Failed to resolve " + path + " against " + base); |
| - continue; |
| - } |
| - if (!file.exists()) { |
| - DartCore.logError("File for " + shortName + " does not exist - " + file); |
| - continue; |
| - } |
| - |
| - // If the shortName ends with ":" then search the associated directory for libraries |
| - |
| - if (shortName.endsWith(":")) { |
| - if (!file.isDirectory()) { |
| - DartCore.logError("Expected directory for " + shortName + " - " + file); |
| - continue; |
| - } |
| - if (DartCoreDebug.DARTLIB) { |
| - DartCore.logInformation("Scanning " + file); |
| - } |
| - for (File child : file.listFiles()) { |
| - String host = child.getName(); |
| - // Do not overwrite explicit shortName to dart file mappings |
| - if (explicitShortNames.contains(shortName + host)) { |
| - if (DartCoreDebug.DARTLIB) { |
| - DartCore.logInformation("Skipping " + shortName + host |
| - + " as it is explicitly defined"); |
| - } |
| - continue; |
| - } |
| - if (!child.isDirectory()) { |
| - if (DartCoreDebug.DARTLIB) { |
| - DartCore.logInformation("Skipping " + child); |
| - } |
| - continue; |
| - } |
| - File dartFile = new File(child, child.getName() + ".dart"); |
| - if (!dartFile.isFile()) { |
| - if (DartCoreDebug.DARTLIB) { |
| - DartCore.logInformation("Skipping " + child + " because no " + dartFile.getName()); |
| - } |
| - continue; |
| - } |
| - //longToShortUriMap.put(shortUri, dartFile.toURI()); |
| - addLib(shortName, host, host, child, dartFile.getName()); |
| - } |
| - } else { |
| - |
| - // Otherwise treat the entry as an explicit shortName to dart file mapping |
| - |
| - int index = shortName.indexOf(':'); |
| - if (index == -1) { |
| - DartCore.logError("Expected ':' in " + shortName); |
| - continue; |
| - } |
| - explicitShortNames.add(shortName); |
| - String scheme = shortName.substring(0, index + 1); |
| - String host = shortName.substring(index + 1); |
| - addLib(scheme, host, host, file.getParentFile(), file.getName()); |
| - } |
| - } |
| - return libraries.toArray(new SystemLibrary[libraries.size()]); |
| - } |
| - |
| - /** |
| - * Read the import.config content and return it as a collection of key/value pairs |
| - */ |
| - protected Properties getImportConfig() { |
| - Properties importConfig = new Properties(); |
| - InputStream stream = getImportConfigStream(); |
| - try { |
| - importConfig.load(stream); |
| - } catch (IOException e) { |
| - DartCore.logError("Failed to load import.config", e); |
| - } finally { |
| - try { |
| - stream.close(); |
| - } catch (IOException e) { |
| - DartCore.logError("Failed to close import.config reader", e); |
| - } |
| - } |
| - return importConfig; |
| - } |
| - |
| - /** |
| - * Answer a reader on the "import.config" file, typically residing in the editor installation |
| - * directory. It is the responsibility of the caller to close the reader when finished. |
| - */ |
| - protected abstract InputStream getImportConfigStream(); |
| - |
| - /** |
| - * Answer the platform name (DartC = "compiler", VM = "runtime") used when locating platform |
| - * specific library files (e.g. "core_runtime.dart" vs "core.dart"). |
| - */ |
| - abstract String getPlatformName(); |
| - |
| - private boolean addLib(String scheme, String host, String name, File dir, String libFileName) |
| - throws AssertionError { |
| - File libFile = new File(dir, libFileName); |
| - if (!libFile.isFile()) { |
| - return false; |
| - } |
| - if (DartCoreDebug.DARTLIB) { |
| - DartCore.logInformation("Found " + scheme + name + " in " + libFile); |
| - } |
| - SystemLibrary lib = new SystemLibrary(name, host, libFileName, dir); |
| - libraries.add(lib); |
| - String libSpec = scheme + name; |
| - URI libUri; |
| - URI expandedUri; |
| - try { |
| - libUri = new URI(libSpec); |
| - expandedUri = new URI("dart:" + "//" + host + "/" + libFileName); |
| - } catch (URISyntaxException e) { |
| - throw new AssertionError(e); |
| - } |
| - URI resolvedUri = lib.translateUri(expandedUri); |
| - longToShortUriMap.put(resolvedUri, libUri); |
| - longToShortUriMap.put(expandedUri, libUri); |
| - return true; |
| - } |
| + |
| } |