| Index: dart/compiler/java/com/google/dart/compiler/SystemLibraryManager.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/SystemLibraryManager.java b/dart/compiler/java/com/google/dart/compiler/SystemLibraryManager.java
|
| deleted file mode 100644
|
| index a86558ef4660cde66090403652308023eee14adc..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/SystemLibraryManager.java
|
| +++ /dev/null
|
| @@ -1,241 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler;
|
| -
|
| -import com.google.dart.compiler.SystemLibrariesReader.DartLibrary;
|
| -
|
| -import java.io.File;
|
| -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;
|
| -
|
| -/**
|
| - * A Library manager that manages system libraries
|
| - */
|
| -public class SystemLibraryManager {
|
| -
|
| - private HashMap<String, String> expansionMap;
|
| - private Map<String, SystemLibrary> hostMap;
|
| - private final URI sdkLibPathUri;
|
| -
|
| - private Map<URI, URI> longToShortUriMap;
|
| -
|
| - private List<SystemLibrary> libraries;
|
| - private final SystemLibraryProvider libraryProvider;
|
| -
|
| - public SystemLibraryManager(File sdkPath) {
|
| - this(new FileBasedSystemLibraryProvider(sdkPath));
|
| - }
|
| -
|
| - public SystemLibraryManager(SystemLibraryProvider libraryProvider) {
|
| - this.libraryProvider = libraryProvider;
|
| - this.sdkLibPathUri = libraryProvider.getSdkLibPathUri();
|
| - setLibraries(getDefaultLibraries());
|
| - }
|
| -
|
| - public URI expandRelativeDartUri(URI uri) throws AssertionError {
|
| - String host = uri.getHost();
|
| - if (host == null && uri.getAuthority() == null) {
|
| - String spec = uri.getSchemeSpecificPart();
|
| - String replacement = expansionMap.get(spec);
|
| - if (replacement != null) {
|
| - try {
|
| - uri = new URI(PackageLibraryManager.DART_SCHEME + ":" + replacement);
|
| - } catch (URISyntaxException e) {
|
| - throw new AssertionError();
|
| - }
|
| - } else {
|
| - return null;
|
| - }
|
| - }
|
| - return uri;
|
| - }
|
| -
|
| - public URI getRelativeUri(URI fileUri) {
|
| -
|
| - if (fileUri == null || !fileUri.getScheme().equals("file")){
|
| - return null;
|
| - }
|
| -
|
| - URI relativeUri = sdkLibPathUri.relativize(fileUri);
|
| - if (relativeUri.getScheme() == null) {
|
| - try {
|
| - return new URI(null, null, "dart://" + relativeUri.getPath(), null, null);
|
| - } catch (URISyntaxException e) {
|
| - //$FALL-THROUGH$
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - public URI getShortUri(URI uri) {
|
| - URI shortUri = longToShortUriMap.get(uri);
|
| - if (shortUri != null){
|
| - return shortUri;
|
| - }
|
| - shortUri = getRelativeUri(uri);
|
| - if (shortUri != null){
|
| - try {
|
| - return new URI(null, null, shortUri.getScheme() + ":" + shortUri.getHost() + shortUri.getPath(),null, null);
|
| - } catch (URISyntaxException e) {
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - public URI translateDartUri(URI uri) {
|
| -
|
| - String host = uri.getHost();
|
| -
|
| - SystemLibrary library = hostMap.get(host);
|
| - if (library != null) {
|
| - return library.translateUri(uri);
|
| - }
|
| - if (host != null) {
|
| - return libraryProvider.resolveHost(host, uri);
|
| - }
|
| - String authorithy = uri.getAuthority();
|
| - if (authorithy != null){
|
| - return libraryProvider.resolveHost(authorithy, uri);
|
| - }
|
| - throw new RuntimeException("No system library defined for " + uri);
|
| -
|
| - }
|
| -
|
| -
|
| - public Collection<String> getAllLibrarySpecs() {
|
| - Collection<String> result = new ArrayList<String>(libraries.size());
|
| - for (SystemLibrary lib : libraries) {
|
| - result.add("dart:" + lib.getShortName());
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - public Collection<SystemLibrary> getAllSystemLibraries(){
|
| - return libraries;
|
| - }
|
| -
|
| - /**
|
| - * Load the libraries listed out in the libraries.dart files as read by the {@link SystemLibrariesReader}
|
| - */
|
| - 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 = this.sdkLibPathUri;
|
| -
|
| - Map<String, DartLibrary> declaredLibraries = libraryProvider.getLibraryMap();
|
| -
|
| - HashSet<String> explicitShortNames = new HashSet<String>();
|
| -
|
| - for (Entry<String, DartLibrary> entry : declaredLibraries.entrySet()) {
|
| - if (entry.getValue().getCategory().equals("Internal")
|
| - // TODO(8365): the following line allows dart:_collection-dev to
|
| - // be imported even though it's a hidden library.
|
| - && !entry.getKey().equals("dart:_collection-dev")) {
|
| - continue;
|
| - }
|
| - String shortName = entry.getKey().trim();
|
| - DartLibrary library = entry.getValue();
|
| - String path = library.getPath();
|
| - URI libFileUri;
|
| - try {
|
| - libFileUri = base.resolve(new URI(null, null, path, null, null)).normalize();
|
| - } catch (URISyntaxException e) {
|
| - continue;
|
| - }
|
| -
|
| - if (!libraryProvider.exists(libFileUri)) {
|
| - throw new InternalCompilerException("Can't find system library dart:" + shortName
|
| - + " at " + libFileUri);
|
| - }
|
| -
|
| - int index = shortName.indexOf(':');
|
| - if (index == -1) {
|
| - continue;
|
| - }
|
| - explicitShortNames.add(shortName);
|
| - String scheme = shortName.substring(0, index + 1);
|
| - String name = shortName.substring(index + 1);
|
| -
|
| - String relPath = sdkLibPathUri.relativize(libFileUri).getPath();
|
| - index = relPath.indexOf('/');
|
| - if (index == -1) {
|
| - continue;
|
| - }
|
| - String host = relPath.substring(0, index);
|
| - String pathToLib = relPath.substring(index + 1);
|
| -
|
| - addLib(scheme,
|
| - host,
|
| - name,
|
| - pathToLib,
|
| - library.getCategory(),
|
| - library.isDocumented(),
|
| - library.isImplementation());
|
| -
|
| - }
|
| - return libraries.toArray(new SystemLibrary[libraries.size()]);
|
| - }
|
| -
|
| - protected boolean addLib(String scheme, String host, String name, String pathToLib,
|
| - String category, boolean documented, boolean implementation)
|
| - throws AssertionError {
|
| -
|
| - SystemLibrary lib = libraryProvider.createSystemLibrary(name, host, pathToLib, category, documented, implementation);
|
| - libraries.add(lib);
|
| -
|
| - String libSpec = scheme + name;
|
| - URI libUri;
|
| - URI expandedUri;
|
| - try {
|
| - libUri = new URI(libSpec);
|
| - expandedUri = new URI("dart:" + "//" + host + "/" + pathToLib);
|
| - } catch (URISyntaxException e) {
|
| - throw new AssertionError(e);
|
| - }
|
| - URI resolvedUri = lib.translateUri(expandedUri);
|
| - longToShortUriMap.put(resolvedUri, libUri);
|
| - longToShortUriMap.put(expandedUri, libUri);
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * Register system libraries for the "dart:" protocol such that dart:[shortLibName] (e.g.
|
| - * "dart:html") will automatically be expanded to dart://[host]/[pathToLib] (e.g.
|
| - * dart://html/html.dart)
|
| - */
|
| - private void setLibraries(SystemLibrary[] newLibraries) {
|
| - libraries = new ArrayList<SystemLibrary>();
|
| - hostMap = new HashMap<String, SystemLibrary>();
|
| - expansionMap = new HashMap<String, String>();
|
| - for (SystemLibrary library : newLibraries) {
|
| - String host = library.getHost();
|
| - SystemLibrary existingLib = hostMap.get(host);
|
| - if (existingLib != null) {
|
| - libraries.remove(existingLib);
|
| - }
|
| - libraries.add(library);
|
| - hostMap.put(host, library);
|
| - expansionMap.put(library.getShortName(),
|
| - "//" + host + "/" + library.getPathToLib());
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Check if this URI denotes a patch file.
|
| - */
|
| - public boolean isPatchFile(URI uri) {
|
| - return libraryProvider.isPatchFile(uri);
|
| - }
|
| -
|
| -}
|
|
|