Package jetbrains.mps.project.dependency
Class ModelDependenciesManager
- java.lang.Object
 - 
- jetbrains.mps.project.dependency.ModelDependenciesManager
 
 
- 
public class ModelDependenciesManager extends Object
NOTE: THIS CLASS MAKES DUBIOUS ASSUMPTIONS, USES SOME DEPRECATED API, ITS USE IS DISCOURAGED. Chances are we replace it with another facility or drop altogether (there's little value in model dependency caching) Please useModelDependencyResolverinsteadBuild (and optionally maintain) set of all languages, imported directly and indirectly. The manager represents snapshot of all imported languages and doesn't update in unless
invalidated. WithtrackModelChanges()it tracks changes in the designated model and updates own state appropriately. WithtrackRepositoryChanges(org.jetbrains.mps.openapi.module.SRepository), changes to repository would invalidate the manager.Generally, there are two distinct patterns in using this manager, "lifecycle" and "snapshot":
ModelDependenciesManager mdm = new ModelDependenciesManager(model).trackModelChanges().trackRepositoryChanges(repo); process(mdm.getAllImportedLanguages()); ... // changes in models are reflected in MDM process(mdm.getAllImportedLanguages()); ... // much later mdm.dispose();
vs.ModelDependenciesManager mdm = new ModelDependenciesManager(model) process(mdm.getAllImportedModels()); mdm.dispose();
FIXME perhaps, worth moving to subpackage of j.m.smodel, as it's pure model functionality, unrelated to project 
- 
- 
Constructor Summary
Constructors Constructor Description ModelDependenciesManager(SModel model) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Collection<SLanguage>buildAllLanguages(SModel model, Collection<SLanguage> result)voiddispose()Collection<SLanguage>getAllImportedLanguagesIds()protected SModelgetModel()protected voidhandle(DevKit devkit, Collection<SLanguage> retval)Process devkit dependencyprotected voidhandle(SLanguage lang, Collection<SLanguage> retval)Process language reference dependencyvoidinvalidate()protected booleanisDependency(SLanguage langId)ModelDependenciesManagertrackModelChanges()Attach a listener to the model to track dependencies added through SModelInternalModelDependenciesManagertrackRepositoryChanges(SRepository repository)Attach a listener to given repository to reflect changes in model's dependencies 
 - 
 
- 
- 
Method Detail
- 
getAllImportedLanguagesIds
public Collection<SLanguage> getAllImportedLanguagesIds()
- Returns:
 - snapshot of model dependencies (up-to-date state depends on listeners installed)
 
 
- 
dispose
public void dispose()
 
- 
getModel
protected SModel getModel()
 
- 
isDependency
protected boolean isDependency(SLanguage langId)
 
- 
invalidate
public void invalidate()
 
- 
buildAllLanguages
protected Collection<SLanguage> buildAllLanguages(@NotNull SModel model, @NotNull Collection<SLanguage> result)
 
- 
handle
protected void handle(SLanguage lang, Collection<SLanguage> retval)
Process language reference dependency- Parameters:
 lang- reference to language module, nevernull. Language it points to not necessarily resolvesretval- collection to fill with languages of interest
 
- 
handle
protected void handle(DevKit devkit, Collection<SLanguage> retval)
Process devkit dependency- Parameters:
 devkit- reference to devkit, notnull.retval- collection to fill with languages of interest
 
- 
trackModelChanges
public ModelDependenciesManager trackModelChanges()
Attach a listener to the model to track dependencies added through SModelInternal- Returns:
 thisfor convenience
 
- 
trackRepositoryChanges
public ModelDependenciesManager trackRepositoryChanges(SRepository repository)
Attach a listener to given repository to reflect changes in model's dependencies- Returns:
 thisfor convenience
 
 - 
 
 -