| OLD | NEW |
| 1 package com.google.dart.tools.core.internal.analysis.model; | 1 package com.google.dart.tools.core.internal.analysis.model; |
| 2 | 2 |
| 3 import com.google.dart.engine.context.AnalysisContext; | 3 import com.google.dart.engine.context.AnalysisContext; |
| 4 import com.google.dart.tools.core.DartCore; | 4 import com.google.dart.tools.core.DartCore; |
| 5 import com.google.dart.tools.core.analysis.model.Project; | 5 import com.google.dart.tools.core.analysis.model.Project; |
| 6 import com.google.dart.tools.core.analysis.model.ProjectManager; | 6 import com.google.dart.tools.core.analysis.model.ProjectManager; |
| 7 import com.google.dart.tools.core.internal.builder.AnalysisWorker; | 7 import com.google.dart.tools.core.internal.builder.AnalysisWorker; |
| 8 import com.google.dart.tools.core.internal.builder.DeltaProcessor; |
| 9 import com.google.dart.tools.core.internal.builder.IgnoreResourceFilter; |
| 10 import com.google.dart.tools.core.internal.builder.IndexUpdater; |
| 11 import com.google.dart.tools.core.internal.builder.ProjectUpdater; |
| 8 | 12 |
| 9 import org.eclipse.core.resources.IProject; | 13 import org.eclipse.core.resources.IProject; |
| 10 import org.eclipse.core.resources.IResource; | 14 import org.eclipse.core.resources.IResource; |
| 11 import org.eclipse.core.resources.IResourceChangeEvent; | 15 import org.eclipse.core.resources.IResourceChangeEvent; |
| 12 import org.eclipse.core.resources.IResourceChangeListener; | 16 import org.eclipse.core.resources.IResourceChangeListener; |
| 13 import org.eclipse.core.resources.IResourceDelta; | 17 import org.eclipse.core.resources.IResourceDelta; |
| 14 import org.eclipse.core.resources.IResourceDeltaVisitor; | 18 import org.eclipse.core.resources.IResourceDeltaVisitor; |
| 15 import org.eclipse.core.runtime.CoreException; | 19 import org.eclipse.core.runtime.CoreException; |
| 16 | 20 |
| 17 /** | 21 /** |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 return true; | 53 return true; |
| 50 | 54 |
| 51 } else if (res.getType() == IResource.PROJECT) { | 55 } else if (res.getType() == IResource.PROJECT) { |
| 52 if (delta.getKind() == IResourceDelta.REMOVED) { | 56 if (delta.getKind() == IResourceDelta.REMOVED) { |
| 53 manager.projectRemoved((IProject) res); | 57 manager.projectRemoved((IProject) res); |
| 54 return false; | 58 return false; |
| 55 } | 59 } |
| 56 return true; | 60 return true; |
| 57 | 61 |
| 58 } else if (res.getType() == IResource.FOLDER) { | 62 } else if (res.getType() == IResource.FOLDER) { |
| 59 if (res.getName().equals(DartCore.PACKAGES_DIRECTORY_NAME) | 63 if (res.getName().equals(DartCore.PACKAGES_DIRECTORY_NAME)) { |
| 60 && (res.getParent().findMember(DartCore.PUBSPEC_FILE_NAME) !=
null)) { | |
| 61 | 64 |
| 62 // The builder is not notified about changes in symlinked folder
s (e.g. packages) | 65 // The builder is not notified about changes in symlinked folder
s (e.g. packages) |
| 63 // The context needs the delta of changes, what has to be remove
d and also added. | 66 // thus we traverse those changes here using the same mechanism
as the builder |
| 64 // Since at this point there is no knowledge of previous package
details, do a | |
| 65 // reanalyze for the context | |
| 66 Project project = manager.getProject(res.getProject()); | 67 Project project = manager.getProject(res.getProject()); |
| 67 project.discardContextsIn(res.getParent()); | 68 ProjectUpdater updater = new ProjectUpdater(); |
| 69 IndexUpdater indexUpdater = new IndexUpdater(manager.getIndex())
; |
| 70 DeltaProcessor processor = new DeltaProcessor(project); |
| 71 IgnoreResourceFilter filter = new IgnoreResourceFilter(); |
| 72 filter.addDeltaListener(updater); |
| 73 filter.addDeltaListener(indexUpdater); |
| 74 processor.addDeltaListener(filter); |
| 75 processor.traverse(delta); |
| 76 updater.applyChanges(); |
| 77 AnalysisContext context = manager.getContext(res); |
| 78 startBackgroundAnalysis(project, context); |
| 68 return false; | 79 return false; |
| 69 } | 80 } |
| 70 return true; | 81 return true; |
| 71 | 82 |
| 72 } else { | 83 } else { |
| 73 return false; | 84 return false; |
| 74 } | 85 } |
| 75 } | 86 } |
| 76 }); | 87 }); |
| 77 } catch (CoreException e) { | 88 } catch (CoreException e) { |
| 78 DartCore.logError(e); | 89 DartCore.logError(e); |
| 79 } | 90 } |
| 80 } | 91 } |
| 81 } | 92 } |
| 82 | 93 |
| 83 /** | 94 /** |
| 84 * Kick off a background analysis worker for the given context. | 95 * Kick off a background analysis worker for the given context. |
| 85 * | 96 * |
| 86 * @param project the project (not {@code null}) containing the context | 97 * @param project the project (not {@code null}) containing the context |
| 87 * @param context the context to be analyzed (not {@code null}) | 98 * @param context the context to be analyzed (not {@code null}) |
| 88 */ | 99 */ |
| 89 protected void startBackgroundAnalysis(Project project, AnalysisContext contex
t) { | 100 protected void startBackgroundAnalysis(Project project, AnalysisContext contex
t) { |
| 90 new AnalysisWorker(project, context).performAnalysisInBackground(); | 101 new AnalysisWorker(project, context).performAnalysisInBackground(); |
| 91 } | 102 } |
| 92 } | 103 } |
| OLD | NEW |