| OLD | NEW |
| 1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
| 2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
| 3 library engine.source.io; | 3 library engine.source.io; |
| 4 import 'source.dart'; | 4 import 'source.dart'; |
| 5 import 'dart:io'; | 5 import 'dart:io'; |
| 6 import 'java_core.dart'; | 6 import 'java_core.dart'; |
| 7 import 'java_io.dart'; | 7 import 'java_io.dart'; |
| 8 import 'sdk.dart' show DartSdk; | 8 import 'sdk.dart' show DartSdk; |
| 9 import 'engine.dart' show AnalysisContext, AnalysisEngine; | 9 import 'engine.dart' show AnalysisContext, AnalysisEngine; |
| 10 export 'source.dart'; | 10 export 'source.dart'; |
| 11 /** | 11 /** |
| 12 * Instances of the class `FileBasedSource` implement a source that represents a
file. | 12 * Instances of the class `FileBasedSource` implement a source that represents a
file. |
| 13 * |
| 13 * @coverage dart.engine.source | 14 * @coverage dart.engine.source |
| 14 */ | 15 */ |
| 15 class FileBasedSource implements Source { | 16 class FileBasedSource implements Source { |
| 16 | 17 |
| 17 /** | 18 /** |
| 18 * The content cache used to access the contents of this source if they have b
een overridden from | 19 * The content cache used to access the contents of this source if they have b
een overridden from |
| 19 * what is on disk or cached. | 20 * what is on disk or cached. |
| 20 */ | 21 */ |
| 21 ContentCache _contentCache; | 22 ContentCache _contentCache; |
| 22 | 23 |
| 23 /** | 24 /** |
| 24 * The file represented by this source. | 25 * The file represented by this source. |
| 25 */ | 26 */ |
| 26 JavaFile _file; | 27 JavaFile _file; |
| 27 | 28 |
| 28 /** | 29 /** |
| 29 * The cached encoding for this source. | 30 * The cached encoding for this source. |
| 30 */ | 31 */ |
| 31 String _encoding; | 32 String _encoding; |
| 32 | 33 |
| 33 /** | 34 /** |
| 34 * The kind of URI from which this source was originally derived. | 35 * The kind of URI from which this source was originally derived. |
| 35 */ | 36 */ |
| 36 UriKind _uriKind; | 37 UriKind _uriKind; |
| 37 | 38 |
| 38 /** | 39 /** |
| 39 * Initialize a newly created source object. The source object is assumed to n
ot be in a system | 40 * Initialize a newly created source object. The source object is assumed to n
ot be in a system |
| 40 * library. | 41 * library. |
| 42 * |
| 41 * @param contentCache the content cache used to access the contents of this s
ource | 43 * @param contentCache the content cache used to access the contents of this s
ource |
| 42 * @param file the file represented by this source | 44 * @param file the file represented by this source |
| 43 */ | 45 */ |
| 44 FileBasedSource.con1(ContentCache contentCache, JavaFile file) { | 46 FileBasedSource.con1(ContentCache contentCache, JavaFile file) { |
| 45 _jtd_constructor_338_impl(contentCache, file); | 47 _jtd_constructor_338_impl(contentCache, file); |
| 46 } | 48 } |
| 47 _jtd_constructor_338_impl(ContentCache contentCache, JavaFile file) { | 49 _jtd_constructor_338_impl(ContentCache contentCache, JavaFile file) { |
| 48 _jtd_constructor_339_impl(contentCache, file, UriKind.FILE_URI); | 50 _jtd_constructor_339_impl(contentCache, file, UriKind.FILE_URI); |
| 49 } | 51 } |
| 50 | 52 |
| 51 /** | 53 /** |
| 52 * Initialize a newly created source object. | 54 * Initialize a newly created source object. |
| 55 * |
| 53 * @param contentCache the content cache used to access the contents of this s
ource | 56 * @param contentCache the content cache used to access the contents of this s
ource |
| 54 * @param file the file represented by this source | 57 * @param file the file represented by this source |
| 55 * @param flags `true` if this source is in one of the system libraries | 58 * @param flags `true` if this source is in one of the system libraries |
| 56 */ | 59 */ |
| 57 FileBasedSource.con2(ContentCache contentCache2, JavaFile file2, UriKind uriKi
nd2) { | 60 FileBasedSource.con2(ContentCache contentCache2, JavaFile file2, UriKind uriKi
nd2) { |
| 58 _jtd_constructor_339_impl(contentCache2, file2, uriKind2); | 61 _jtd_constructor_339_impl(contentCache2, file2, uriKind2); |
| 59 } | 62 } |
| 60 _jtd_constructor_339_impl(ContentCache contentCache2, JavaFile file2, UriKind
uriKind2) { | 63 _jtd_constructor_339_impl(ContentCache contentCache2, JavaFile file2, UriKind
uriKind2) { |
| 61 this._contentCache = contentCache2; | 64 this._contentCache = contentCache2; |
| 62 this._file = file2; | 65 this._file = file2; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 String toString() { | 102 String toString() { |
| 100 if (_file == null) { | 103 if (_file == null) { |
| 101 return "<unknown source>"; | 104 return "<unknown source>"; |
| 102 } | 105 } |
| 103 return _file.getAbsolutePath(); | 106 return _file.getAbsolutePath(); |
| 104 } | 107 } |
| 105 | 108 |
| 106 /** | 109 /** |
| 107 * Return the file represented by this source. This is an internal method that
is only intended to | 110 * Return the file represented by this source. This is an internal method that
is only intended to |
| 108 * be used by [UriResolver]. | 111 * be used by [UriResolver]. |
| 112 * |
| 109 * @return the file represented by this source | 113 * @return the file represented by this source |
| 110 */ | 114 */ |
| 111 JavaFile get file => _file; | 115 JavaFile get file => _file; |
| 112 } | 116 } |
| 113 /** | 117 /** |
| 114 * Instances of the class `PackageUriResolver` resolve `package` URI's in the co
ntext of | 118 * Instances of the class `PackageUriResolver` resolve `package` URI's in the co
ntext of |
| 115 * an application. | 119 * an application. |
| 116 * | 120 * |
| 117 * For the purposes of sharing analysis, the path to each package under the "pac
kages" directory | 121 * For the purposes of sharing analysis, the path to each package under the "pac
kages" directory |
| 118 * should be canonicalized, but to preserve relative links within a package, the
remainder of the | 122 * should be canonicalized, but to preserve relative links within a package, the
remainder of the |
| 119 * path from the package directory to the leaf should not. | 123 * path from the package directory to the leaf should not. |
| 124 * |
| 120 * @coverage dart.engine.source | 125 * @coverage dart.engine.source |
| 121 */ | 126 */ |
| 122 class PackageUriResolver extends UriResolver { | 127 class PackageUriResolver extends UriResolver { |
| 123 | 128 |
| 124 /** | 129 /** |
| 125 * The package directories that `package` URI's are assumed to be relative to. | 130 * The package directories that `package` URI's are assumed to be relative to. |
| 126 */ | 131 */ |
| 127 List<JavaFile> _packagesDirectories; | 132 List<JavaFile> _packagesDirectories; |
| 128 | 133 |
| 129 /** | 134 /** |
| 130 * The name of the `package` scheme. | 135 * The name of the `package` scheme. |
| 131 */ | 136 */ |
| 132 static String PACKAGE_SCHEME = "package"; | 137 static String PACKAGE_SCHEME = "package"; |
| 133 | 138 |
| 134 /** | 139 /** |
| 135 * Log exceptions thrown with the message "Required key not available" only on
ce. | 140 * Log exceptions thrown with the message "Required key not available" only on
ce. |
| 136 */ | 141 */ |
| 137 static bool _CanLogRequiredKeyIoException = true; | 142 static bool _CanLogRequiredKeyIoException = true; |
| 138 | 143 |
| 139 /** | 144 /** |
| 140 * Return `true` if the given URI is a `package` URI. | 145 * Return `true` if the given URI is a `package` URI. |
| 146 * |
| 141 * @param uri the URI being tested | 147 * @param uri the URI being tested |
| 142 * @return `true` if the given URI is a `package` URI | 148 * @return `true` if the given URI is a `package` URI |
| 143 */ | 149 */ |
| 144 static bool isPackageUri(Uri uri) => PACKAGE_SCHEME == uri.scheme; | 150 static bool isPackageUri(Uri uri) => PACKAGE_SCHEME == uri.scheme; |
| 145 | 151 |
| 146 /** | 152 /** |
| 147 * Initialize a newly created resolver to resolve `package` URI's relative to
the given | 153 * Initialize a newly created resolver to resolve `package` URI's relative to
the given |
| 148 * package directories. | 154 * package directories. |
| 155 * |
| 149 * @param packagesDirectories the package directories that `package` URI's are
assumed to be | 156 * @param packagesDirectories the package directories that `package` URI's are
assumed to be |
| 150 * relative to | 157 * relative to |
| 151 */ | 158 */ |
| 152 PackageUriResolver(List<JavaFile> packagesDirectories) { | 159 PackageUriResolver(List<JavaFile> packagesDirectories) { |
| 153 if (packagesDirectories.length < 1) { | 160 if (packagesDirectories.length < 1) { |
| 154 throw new IllegalArgumentException("At least one package directory must be
provided"); | 161 throw new IllegalArgumentException("At least one package directory must be
provided"); |
| 155 } | 162 } |
| 156 this._packagesDirectories = packagesDirectories; | 163 this._packagesDirectories = packagesDirectories; |
| 157 } | 164 } |
| 158 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri) { | 165 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri) { |
| 159 if (identical(kind, UriKind.PACKAGE_URI)) { | 166 if (identical(kind, UriKind.PACKAGE_URI)) { |
| 160 return new FileBasedSource.con2(contentCache, new JavaFile.fromUri(uri), k
ind); | 167 return new FileBasedSource.con2(contentCache, new JavaFile.fromUri(uri), k
ind); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 } | 216 } |
| 210 } | 217 } |
| 211 } | 218 } |
| 212 } | 219 } |
| 213 } | 220 } |
| 214 return null; | 221 return null; |
| 215 } | 222 } |
| 216 | 223 |
| 217 /** | 224 /** |
| 218 * Answer the canonical file for the specified package. | 225 * Answer the canonical file for the specified package. |
| 226 * |
| 219 * @param packagesDirectory the "packages" directory (not `null`) | 227 * @param packagesDirectory the "packages" directory (not `null`) |
| 220 * @param pkgName the package name (not `null`, not empty) | 228 * @param pkgName the package name (not `null`, not empty) |
| 221 * @param relPath the path relative to the package directory (not `null`, no l
eading slash, | 229 * @param relPath the path relative to the package directory (not `null`, no l
eading slash, |
| 222 * but may be empty string) | 230 * but may be empty string) |
| 223 * @return the file (not `null`) | 231 * @return the file (not `null`) |
| 224 */ | 232 */ |
| 225 JavaFile getCanonicalFile(JavaFile packagesDirectory, String pkgName, String r
elPath) { | 233 JavaFile getCanonicalFile(JavaFile packagesDirectory, String pkgName, String r
elPath) { |
| 226 JavaFile pkgDir = new JavaFile.relative(packagesDirectory, pkgName); | 234 JavaFile pkgDir = new JavaFile.relative(packagesDirectory, pkgName); |
| 227 try { | 235 try { |
| 228 pkgDir = pkgDir.getCanonicalFile(); | 236 pkgDir = pkgDir.getCanonicalFile(); |
| 229 } on IOException catch (e) { | 237 } on IOException catch (e) { |
| 230 if (!e.toString().contains("Required key not available")) { | 238 if (!e.toString().contains("Required key not available")) { |
| 231 AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}",
e); | 239 AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}",
e); |
| 232 } else if (_CanLogRequiredKeyIoException) { | 240 } else if (_CanLogRequiredKeyIoException) { |
| 233 _CanLogRequiredKeyIoException = false; | 241 _CanLogRequiredKeyIoException = false; |
| 234 AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}",
e); | 242 AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}",
e); |
| 235 } | 243 } |
| 236 } | 244 } |
| 237 return new JavaFile.relative(pkgDir, relPath.replaceAll('/', new String.from
CharCode(JavaFile.separatorChar))); | 245 return new JavaFile.relative(pkgDir, relPath.replaceAll('/', new String.from
CharCode(JavaFile.separatorChar))); |
| 238 } | 246 } |
| 239 } | 247 } |
| 240 /** | 248 /** |
| 241 * Instances of the class [DirectoryBasedSourceContainer] represent a source con
tainer that | 249 * Instances of the class [DirectoryBasedSourceContainer] represent a source con
tainer that |
| 242 * contains all sources within a given directory. | 250 * contains all sources within a given directory. |
| 251 * |
| 243 * @coverage dart.engine.source | 252 * @coverage dart.engine.source |
| 244 */ | 253 */ |
| 245 class DirectoryBasedSourceContainer implements SourceContainer { | 254 class DirectoryBasedSourceContainer implements SourceContainer { |
| 246 | 255 |
| 247 /** | 256 /** |
| 248 * Append the system file separator to the given path unless the path already
ends with a | 257 * Append the system file separator to the given path unless the path already
ends with a |
| 249 * separator. | 258 * separator. |
| 259 * |
| 250 * @param path the path to which the file separator is to be added | 260 * @param path the path to which the file separator is to be added |
| 251 * @return a path that ends with the system file separator | 261 * @return a path that ends with the system file separator |
| 252 */ | 262 */ |
| 253 static String appendFileSeparator(String path) { | 263 static String appendFileSeparator(String path) { |
| 254 if (path == null || path.length <= 0 || path.codeUnitAt(path.length - 1) ==
JavaFile.separatorChar) { | 264 if (path == null || path.length <= 0 || path.codeUnitAt(path.length - 1) ==
JavaFile.separatorChar) { |
| 255 return path; | 265 return path; |
| 256 } | 266 } |
| 257 return "${path}${JavaFile.separator}"; | 267 return "${path}${JavaFile.separator}"; |
| 258 } | 268 } |
| 259 | 269 |
| 260 /** | 270 /** |
| 261 * The container's path (not `null`). | 271 * The container's path (not `null`). |
| 262 */ | 272 */ |
| 263 String _path; | 273 String _path; |
| 264 | 274 |
| 265 /** | 275 /** |
| 266 * Construct a container representing the specified directory and containing a
ny sources whose[Source#getFullName] starts with the directory's path. This is a
convenience method, | 276 * Construct a container representing the specified directory and containing a
ny sources whose |
| 267 * fully equivalent to [DirectoryBasedSourceContainer#DirectoryBasedSourceCont
ainer]. | 277 * [Source#getFullName] starts with the directory's path. This is a convenienc
e method, |
| 278 * fully equivalent to [DirectoryBasedSourceContainer#DirectoryBasedSourceCont
ainer] |
| 279 * . |
| 280 * |
| 268 * @param directory the directory (not `null`) | 281 * @param directory the directory (not `null`) |
| 269 */ | 282 */ |
| 270 DirectoryBasedSourceContainer.con1(JavaFile directory) { | 283 DirectoryBasedSourceContainer.con1(JavaFile directory) { |
| 271 _jtd_constructor_336_impl(directory); | 284 _jtd_constructor_336_impl(directory); |
| 272 } | 285 } |
| 273 _jtd_constructor_336_impl(JavaFile directory) { | 286 _jtd_constructor_336_impl(JavaFile directory) { |
| 274 _jtd_constructor_337_impl(directory.getPath()); | 287 _jtd_constructor_337_impl(directory.getPath()); |
| 275 } | 288 } |
| 276 | 289 |
| 277 /** | 290 /** |
| 278 * Construct a container representing the specified path and containing any so
urces whose[Source#getFullName] starts with the specified path. | 291 * Construct a container representing the specified path and containing any so
urces whose |
| 292 * [Source#getFullName] starts with the specified path. |
| 293 * |
| 279 * @param path the path (not `null` and not empty) | 294 * @param path the path (not `null` and not empty) |
| 280 */ | 295 */ |
| 281 DirectoryBasedSourceContainer.con2(String path2) { | 296 DirectoryBasedSourceContainer.con2(String path2) { |
| 282 _jtd_constructor_337_impl(path2); | 297 _jtd_constructor_337_impl(path2); |
| 283 } | 298 } |
| 284 _jtd_constructor_337_impl(String path2) { | 299 _jtd_constructor_337_impl(String path2) { |
| 285 this._path = appendFileSeparator(path2); | 300 this._path = appendFileSeparator(path2); |
| 286 } | 301 } |
| 287 bool contains(Source source) => source.fullName.startsWith(_path); | 302 bool contains(Source source) => source.fullName.startsWith(_path); |
| 288 bool operator ==(Object obj) => (obj is DirectoryBasedSourceContainer) && ((ob
j as DirectoryBasedSourceContainer)).path == path; | 303 bool operator ==(Object obj) => (obj is DirectoryBasedSourceContainer) && ((ob
j as DirectoryBasedSourceContainer)).path == path; |
| 289 | 304 |
| 290 /** | 305 /** |
| 291 * Answer the receiver's path, used to determine if a source is contained in t
he receiver. | 306 * Answer the receiver's path, used to determine if a source is contained in t
he receiver. |
| 307 * |
| 292 * @return the path (not `null`, not empty) | 308 * @return the path (not `null`, not empty) |
| 293 */ | 309 */ |
| 294 String get path => _path; | 310 String get path => _path; |
| 295 int get hashCode => _path.hashCode; | 311 int get hashCode => _path.hashCode; |
| 296 String toString() => "SourceContainer[${_path}]"; | 312 String toString() => "SourceContainer[${_path}]"; |
| 297 } | 313 } |
| 298 /** | 314 /** |
| 299 * Instances of the class `FileUriResolver` resolve `file` URI's. | 315 * Instances of the class `FileUriResolver` resolve `file` URI's. |
| 316 * |
| 300 * @coverage dart.engine.source | 317 * @coverage dart.engine.source |
| 301 */ | 318 */ |
| 302 class FileUriResolver extends UriResolver { | 319 class FileUriResolver extends UriResolver { |
| 303 | 320 |
| 304 /** | 321 /** |
| 305 * The name of the `file` scheme. | 322 * The name of the `file` scheme. |
| 306 */ | 323 */ |
| 307 static String FILE_SCHEME = "file"; | 324 static String FILE_SCHEME = "file"; |
| 308 | 325 |
| 309 /** | 326 /** |
| 310 * Return `true` if the given URI is a `file` URI. | 327 * Return `true` if the given URI is a `file` URI. |
| 328 * |
| 311 * @param uri the URI being tested | 329 * @param uri the URI being tested |
| 312 * @return `true` if the given URI is a `file` URI | 330 * @return `true` if the given URI is a `file` URI |
| 313 */ | 331 */ |
| 314 static bool isFileUri(Uri uri) => uri.scheme == FILE_SCHEME; | 332 static bool isFileUri(Uri uri) => uri.scheme == FILE_SCHEME; |
| 315 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri) { | 333 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri) { |
| 316 if (identical(kind, UriKind.FILE_URI)) { | 334 if (identical(kind, UriKind.FILE_URI)) { |
| 317 return new FileBasedSource.con2(contentCache, new JavaFile.fromUri(uri), k
ind); | 335 return new FileBasedSource.con2(contentCache, new JavaFile.fromUri(uri), k
ind); |
| 318 } | 336 } |
| 319 return null; | 337 return null; |
| 320 } | 338 } |
| 321 Source resolveAbsolute(ContentCache contentCache, Uri uri) { | 339 Source resolveAbsolute(ContentCache contentCache, Uri uri) { |
| 322 if (!isFileUri(uri)) { | 340 if (!isFileUri(uri)) { |
| 323 return null; | 341 return null; |
| 324 } | 342 } |
| 325 return new FileBasedSource.con1(contentCache, new JavaFile.fromUri(uri)); | 343 return new FileBasedSource.con1(contentCache, new JavaFile.fromUri(uri)); |
| 326 } | 344 } |
| 327 } | 345 } |
| OLD | NEW |