| /* |
| * Copyright (c) 2013, the Dart project authors. |
| * |
| * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except |
| * in compliance with the License. You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Unless required by applicable law or agreed to in writing, software distributed under the License |
| * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
| * or implied. See the License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.dart.engine.internal.task; |
| |
| import com.google.dart.engine.context.AnalysisException; |
| import com.google.dart.engine.internal.context.InternalAnalysisContext; |
| import com.google.dart.engine.internal.resolver.LibraryResolver; |
| import com.google.dart.engine.source.Source; |
| |
| /** |
| * Instances of the class {@code ResolveDartLibraryTask} resolve a specific Dart library. |
| */ |
| public class ResolveDartLibraryTask extends AnalysisTask { |
| /** |
| * The source representing the file whose compilation unit is to be returned. |
| */ |
| private Source unitSource; |
| |
| /** |
| * The source representing the library to be resolved. |
| */ |
| private Source librarySource; |
| |
| /** |
| * The library resolver holding information about the libraries that were resolved. |
| */ |
| private LibraryResolver resolver; |
| |
| /** |
| * Initialize a newly created task to perform analysis within the given context. |
| * |
| * @param context the context in which the task is to be performed |
| * @param unitSource the source representing the file whose compilation unit is to be returned |
| * @param librarySource the source representing the library to be resolved |
| */ |
| public ResolveDartLibraryTask(InternalAnalysisContext context, Source unitSource, |
| Source librarySource) { |
| super(context); |
| this.unitSource = unitSource; |
| this.librarySource = librarySource; |
| } |
| |
| @Override |
| public <E> E accept(AnalysisTaskVisitor<E> visitor) throws AnalysisException { |
| return visitor.visitResolveDartLibraryTask(this); |
| } |
| |
| /** |
| * Return the library resolver holding information about the libraries that were resolved. |
| * |
| * @return the library resolver holding information about the libraries that were resolved |
| */ |
| public LibraryResolver getLibraryResolver() { |
| return resolver; |
| } |
| |
| /** |
| * Return the source representing the library to be resolved. |
| * |
| * @return the source representing the library to be resolved |
| */ |
| public Source getLibrarySource() { |
| return librarySource; |
| } |
| |
| /** |
| * Return the source representing the file whose compilation unit is to be returned. |
| * |
| * @return the source representing the file whose compilation unit is to be returned |
| */ |
| public Source getUnitSource() { |
| return unitSource; |
| } |
| |
| @Override |
| protected String getTaskDescription() { |
| if (librarySource == null) { |
| return "resolve library null source"; |
| } |
| return "resolve library " + librarySource.getFullName(); |
| } |
| |
| @Override |
| protected void internalPerform() throws AnalysisException { |
| resolver = new LibraryResolver(getContext()); |
| resolver.resolveLibrary(librarySource, true); |
| } |
| } |