OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 | 4 |
5 library context.directory.manager; | 5 library context.directory.manager; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:convert'; | 9 import 'dart:convert'; |
10 import 'dart:core' hide Resource; | 10 import 'dart:core' hide Resource; |
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 Map<Folder, YamlMap> embedderYamls = | 894 Map<Folder, YamlMap> embedderYamls = |
895 new EmbedderYamlLocator(packageMap).embedderYamls; | 895 new EmbedderYamlLocator(packageMap).embedderYamls; |
896 | 896 |
897 SourceFactory sourceFactory = info.context.sourceFactory; | 897 SourceFactory sourceFactory = info.context.sourceFactory; |
898 | 898 |
899 // Check for library embedders. | 899 // Check for library embedders. |
900 if (embedderYamls.values.any(definesEmbeddedLibs)) { | 900 if (embedderYamls.values.any(definesEmbeddedLibs)) { |
901 // If there is no embedded URI resolver, a new source factory needs to | 901 // If there is no embedded URI resolver, a new source factory needs to |
902 // be recreated. | 902 // be recreated. |
903 if (sourceFactory is SourceFactoryImpl) { | 903 if (sourceFactory is SourceFactoryImpl) { |
904 if (!sourceFactory.resolvers | 904 // Get all but the dart: Uri resolver. |
905 .any((UriResolver r) => r is EmbedderUriResolver)) { | 905 List<UriResolver> resolvers = sourceFactory.resolvers |
906 // Get all but the dart: Uri resolver. | 906 .where((r) => r is! DartUriResolver) |
907 List<UriResolver> resolvers = sourceFactory.resolvers | 907 .toList(); |
908 .where((r) => r is! DartUriResolver) | 908 // Add an embedded URI resolver in its place. |
909 .toList(); | 909 resolvers.add(new DartUriResolver(new EmbedderSdk(embedderYamls))); |
910 // Add an embedded URI resolver in its place. | |
911 resolvers.add(new EmbedderUriResolver(embedderYamls)); | |
912 | 910 |
913 // Set a new source factory. | 911 // Set a new source factory. |
914 SourceFactoryImpl newFactory = sourceFactory.clone(); | 912 SourceFactoryImpl newFactory = sourceFactory.clone(); |
915 newFactory.resolvers.clear(); | 913 newFactory.resolvers.clear(); |
916 newFactory.resolvers.addAll(resolvers); | 914 newFactory.resolvers.addAll(resolvers); |
917 info.context.sourceFactory = newFactory; | 915 info.context.sourceFactory = newFactory; |
918 return; | 916 return; |
919 } | |
920 } | 917 } |
921 } | 918 } |
922 | 919 |
923 // Next check for package URI updates. | 920 // Next check for package URI updates. |
924 if (info.isPathToPackageDescription(path)) { | 921 if (info.isPathToPackageDescription(path)) { |
925 Packages packages = _readPackagespec(packagespec); | 922 Packages packages = _readPackagespec(packagespec); |
926 if (packages != null) { | 923 if (packages != null) { |
927 _updateContextPackageUriResolver( | 924 _updateContextPackageUriResolver( |
928 folder, new PackagesFileDisposition(packages)); | 925 folder, new PackagesFileDisposition(packages)); |
929 } | 926 } |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 /** | 1147 /** |
1151 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1148 * Set up a [SourceFactory] that resolves packages as appropriate for the |
1152 * given [disposition]. | 1149 * given [disposition]. |
1153 */ | 1150 */ |
1154 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1151 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
1155 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1152 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
1156 List<UriResolver> resolvers = []; | 1153 List<UriResolver> resolvers = []; |
1157 List<UriResolver> packageUriResolvers = | 1154 List<UriResolver> packageUriResolvers = |
1158 disposition.createPackageUriResolvers(resourceProvider); | 1155 disposition.createPackageUriResolvers(resourceProvider); |
1159 | 1156 |
1160 EmbedderUriResolver embedderUriResolver = | 1157 EmbedderSdk sdk = |
1161 new EmbedderUriResolver(context.embedderYamlLocator.embedderYamls); | 1158 new EmbedderSdk(context.embedderYamlLocator.embedderYamls); |
1162 if (embedderUriResolver.length == 0) { | 1159 if (sdk.libraryMap.size() == 0) { |
1163 // The embedder uri resolver has no mappings. Use the default Dart SDK | 1160 // The embedder uri resolver has no mappings. Use the default Dart SDK |
1164 // uri resolver. | 1161 // uri resolver. |
1165 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); | 1162 resolvers.add(new DartUriResolver(sdkManager.getSdkForOptions(options))); |
1166 } else { | 1163 } else { |
1167 // The embedder uri resolver has mappings, use it instead of the default | 1164 // The embedder uri resolver has mappings, use it instead of the default |
1168 // Dart SDK uri resolver. | 1165 // Dart SDK uri resolver. |
1169 resolvers.add(embedderUriResolver); | 1166 resolvers.add(new DartUriResolver(sdk)); |
1170 } | 1167 } |
1171 | 1168 |
1172 resolvers.addAll(packageUriResolvers); | 1169 resolvers.addAll(packageUriResolvers); |
1173 resolvers.add(new ResourceUriResolver(resourceProvider)); | 1170 resolvers.add(new ResourceUriResolver(resourceProvider)); |
1174 return new SourceFactory(resolvers, disposition.packages); | 1171 return new SourceFactory(resolvers, disposition.packages); |
1175 } | 1172 } |
1176 | 1173 |
1177 /** | 1174 /** |
1178 * Clean up and destroy the context associated with the given folder. | 1175 * Clean up and destroy the context associated with the given folder. |
1179 */ | 1176 */ |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1817 ResourceProvider resourceProvider) { | 1814 ResourceProvider resourceProvider) { |
1818 if (packages != null) { | 1815 if (packages != null) { |
1819 // Construct package map for the SdkExtUriResolver. | 1816 // Construct package map for the SdkExtUriResolver. |
1820 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); | 1817 Map<String, List<Folder>> packageMap = buildPackageMap(resourceProvider); |
1821 return <UriResolver>[new SdkExtUriResolver(packageMap)]; | 1818 return <UriResolver>[new SdkExtUriResolver(packageMap)]; |
1822 } else { | 1819 } else { |
1823 return const <UriResolver>[]; | 1820 return const <UriResolver>[]; |
1824 } | 1821 } |
1825 } | 1822 } |
1826 } | 1823 } |
OLD | NEW |