Package jetbrains.mps.classloading
Class ModulesWatcher
- java.lang.Object
 - 
- jetbrains.mps.classloading.ModulesWatcher
 
 
- 
public class ModulesWatcher extends Object
This class watches all the reloadable modules, which satisfy #myWatchableCondition in the repository and dependencies between them. It aims to store a status for each tracked module- See Also:
 and to return all compile depedencies of module within repository,Also it keeps a dependency graph to be able to calculate back dependencies for any module,Note: due to the lazy implementation of module unloading, there is a possible situation, when there are some disposed modules in ModulesWatcher. We may be asked about their dependencies etc. Therefore ModulesWatcher tracks references to modules not modules themselves. The add/remove/update module methods are triggered from above. This class updates its state accordingly. A lazy mechanism is used here: when the state is 'dirty', refresh happens at any request.,Notice, that read action is required on every update.,ClassLoaderManager.myLoadableCondition,ClassLoaderManager.myWatchableCondition
 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceModulesWatcher.ClassLoadingStatus 
- 
Constructor Summary
Constructors Constructor Description ModulesWatcher(SRepository repository, Condition<ReloadableModule> watchableCondition) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddModules(Collection<? extends ReloadableModule> modules)Collection<SModuleReference>getBackDependencies(Iterable<? extends SModuleReference> mRefs)Collection<SModuleReference>getDependencies(Iterable<? extends SModuleReference> mRefs)Collection<? extends ReloadableModule>getResolvedBackDependencies(Iterable<? extends ReloadableModule> modules)ModulesWatcher.ClassLoadingStatusgetStatus(SModuleReference mRef)voidremoveModules(Collection<? extends SModuleReference> mRefs)voidupdateModules(Collection<? extends ReloadableModule> modules) 
 - 
 
- 
- 
Constructor Detail
- 
ModulesWatcher
public ModulesWatcher(SRepository repository, Condition<ReloadableModule> watchableCondition)
 
 - 
 
- 
Method Detail
- 
getStatus
@NotNull public ModulesWatcher.ClassLoadingStatus getStatus(@NotNull SModuleReference mRef)
- Parameters:
 mRef- is a module reference.ModulesWatchermaintains references, not modules themselves.- Returns:
 - the status for the given module reference
 - See Also:
 ModulesWatcher.ClassLoadingStatus
 
- 
updateModules
public void updateModules(@NotNull Collection<? extends ReloadableModule> modules)
 
- 
addModules
public void addModules(@NotNull Collection<? extends ReloadableModule> modules)
 
- 
removeModules
public void removeModules(@NotNull Collection<? extends SModuleReference> mRefs)
 
- 
getDependencies
public Collection<SModuleReference> getDependencies(Iterable<? extends SModuleReference> mRefs)
- Returns:
 - all dependencies of this module (closed set under dependency-relation)
 
 
- 
getBackDependencies
public Collection<SModuleReference> getBackDependencies(Iterable<? extends SModuleReference> mRefs)
- Returns:
 - all back dependencies of this module (closed set under back-dependency-relation)
 
 
- 
getResolvedBackDependencies
public Collection<? extends ReloadableModule> getResolvedBackDependencies(Iterable<? extends ReloadableModule> modules)
 
 - 
 
 -