Package jetbrains.mps.extapi.model
Class SModelDescriptorStub
- java.lang.Object
 - 
- jetbrains.mps.extapi.model.SModelDescriptorStub
 
 
- 
- All Implemented Interfaces:
 ModelWithDisposeInfo,FastNodeFinder.Factory,SModelInternal,SModel
- Direct Known Subclasses:
 SModelBase
public abstract class SModelDescriptorStub extends Object implements SModelInternal, SModel, FastNodeFinder.Factory
IMPORTANT - DO NOT SUBCLASS THIS ONE DIRECTLY, USESModelBaseINSTEAD. Stub for model implementations with data kept separately in a SModel/SModelData (as of now/planned). UnlikeSModelBase, which is true root of model descriptor hierarchy, this class keeps transition stuff like legacy SModelListeners and SModelInternal methods, our explicit though untold dependencies from smodel.SModel. Perhaps, one day we can get rid of if altogether. TODO move listeners to openapi 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from interface org.jetbrains.mps.openapi.model.SModel
SModel.Problem 
 - 
 
- 
Constructor Summary
Constructors Constructor Description SModelDescriptorStub() 
- 
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddDevKit(SModuleReference ref)voidaddEngagedOnGenerationLanguage(SLanguage lang)voidaddLanguage(SLanguage language)voidaddModelImport(SModelReference ref)Tell one model depends from another.voidaddModelListener(SModelListener listener)protected voidassertCanChange()Invoked to check if it's legal to modify the model.protected voidassertCanRead()Invoked to check if it's legal to read from the model.voidchangeModelReference(SModelReference newModelReference)protected voidclearListeners()FastNodeFindercreateNodeFinder(SModel model)voiddeleteDevKit(SModuleReference ref)voiddeleteLanguageId(SLanguage ref)voiddeleteModelImport(SModelReference modelReference)protected voidfireBeforeModelDisposed(SModel model)protected voidfireBeforeModelFileChanged(SModelFileChangedEvent event)protected voidfireBeforeModelRenamed(SModelRenamedEvent event)Deprecated.protected voidfireModelFileChanged(SModelFileChangedEvent event)protected voidfireModelRenamed(SModelRenamedEvent event)Deprecated.protected voidfireModelSaved()protected voidfireModelStateChanged(ModelLoadingState newState)Deprecated.(a) we are in process to get rid of SModelListener; (b) this method used to change loading state in addition to event dispatch, and if you used to invoke it, please re-consider that code.StackTraceElement[]getDisposedStacktrace()intgetLanguageImportVersion(SLanguage lang)Collection<SLanguage>getLanguagesEngagedOnGeneration()ModelDependenciesManagergetModelDepsManager()Deprecated.There's no reason to cast openapi.SModel to SModelDescriptorStub to get ModelDependenciesManager instance as it's no longer cached and provides no extra benefit compared to direct new ModelDependenciesManager(model).Collection<SModelReference>getModelImports()List<SModelListener>getModelListeners()SModelgetSModel()UseSModelBase.getModelData()wherever possible.abstract SModelgetSModelInternal()Deprecated.useSModelBase.getModelData()orgetSModel()FIXME there's implicit convention that smodel.SModel has this openapi.SModel (aka descriptor) assigned once this method returnsList<SModuleReference>importedDevkits()Collection<SLanguage>importedLanguageIds()booleanisDisposed()voidremoveEngagedOnGenerationLanguage(SLanguage lang)voidremoveModelListener(SModelListener listener)voidsetLanguageImportVersion(SLanguage language, int version)booleanupdateExternalReferences(SRepository repo)Model has a chance to bring its external dependencies to a state manifested by supplied repository- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface org.jetbrains.mps.openapi.model.SModel
addAccessListener, addChangeListener, addModelListener, addRootNode, createNode, createNode, getModelId, getModelName, getModelRoot, getModule, getName, getNode, getProblems, getReference, getRepository, getRootNodes, getSource, isLoaded, isReadOnly, load, removeAccessListener, removeChangeListener, removeModelListener, removeRootNode, unload 
 - 
 
 - 
 
- 
- 
Method Detail
- 
getSModelInternal
@Deprecated public abstract SModel getSModelInternal()
Deprecated.useSModelBase.getModelData()orgetSModel()FIXME there's implicit convention that smodel.SModel has this openapi.SModel (aka descriptor) assigned once this method returnsMigration to 3.0. Loads and returns model data. FIXME Replace uses of this method with getSModel(), make it abstract and implement in SModelBase subclasses. The name getSModelInternal is misleading as it clashes with SModelInternal interface this class implements. Though getSModel is not much better, at least in the context of SModelDescriptor it makes more sense. 
- 
addModelListener
public void addModelListener(@NotNull SModelListener listener)
- Specified by:
 addModelListenerin interfaceSModelInternal
 
- 
removeModelListener
public void removeModelListener(@NotNull SModelListener listener)
- Specified by:
 removeModelListenerin interfaceSModelInternal
 
- 
getModelListeners
@NotNull public List<SModelListener> getModelListeners()
 
- 
clearListeners
protected void clearListeners()
 
- 
fireBeforeModelFileChanged
protected void fireBeforeModelFileChanged(SModelFileChangedEvent event)
 
- 
fireModelFileChanged
protected void fireModelFileChanged(SModelFileChangedEvent event)
 
- 
fireBeforeModelRenamed
@Deprecated protected void fireBeforeModelRenamed(SModelRenamedEvent event)
Deprecated. 
- 
fireModelRenamed
@Deprecated protected void fireModelRenamed(SModelRenamedEvent event)
Deprecated. 
- 
fireModelStateChanged
@Deprecated protected void fireModelStateChanged(ModelLoadingState newState)
Deprecated.(a) we are in process to get rid of SModelListener; (b) this method used to change loading state in addition to event dispatch, and if you used to invoke it, please re-consider that code. 
- 
fireBeforeModelDisposed
protected void fireBeforeModelDisposed(SModel model)
 
- 
fireModelSaved
protected void fireModelSaved()
 
- 
getSModel
public SModel getSModel()
UseSModelBase.getModelData()wherever possible. Use this method when accessing implementation aspects of smodel.SModel that are not exposed through SModelInternal interface (for latter, usegetSModelInternal()until ceased). 
- 
getModelDepsManager
@Deprecated public final ModelDependenciesManager getModelDepsManager()
Deprecated.There's no reason to cast openapi.SModel to SModelDescriptorStub to get ModelDependenciesManager instance as it's no longer cached and provides no extra benefit compared to direct new ModelDependenciesManager(model). Besides, use ofModelDependenciesManageris discouraged andModelDependencyResolvershall be preferred. 
- 
importedLanguageIds
public Collection<SLanguage> importedLanguageIds()
- Specified by:
 importedLanguageIdsin interfaceSModelInternal
 
- 
deleteLanguageId
public void deleteLanguageId(@NotNull SLanguage ref)
- Specified by:
 deleteLanguageIdin interfaceSModelInternal
 
- 
addLanguage
public void addLanguage(@NotNull SLanguage language)
- Specified by:
 addLanguagein interfaceSModelInternal
 
- 
setLanguageImportVersion
public void setLanguageImportVersion(@NotNull SLanguage language, int version)
- Specified by:
 setLanguageImportVersionin interfaceSModelInternal
 
- 
getLanguageImportVersion
public int getLanguageImportVersion(SLanguage lang)
- Specified by:
 getLanguageImportVersionin interfaceSModelInternal
 
- 
importedDevkits
public List<SModuleReference> importedDevkits()
- Specified by:
 importedDevkitsin interfaceSModelInternal
 
- 
addDevKit
public final void addDevKit(SModuleReference ref)
- Specified by:
 addDevKitin interfaceSModelInternal
 
- 
deleteDevKit
public final void deleteDevKit(@NotNull SModuleReference ref)
- Specified by:
 deleteDevKitin interfaceSModelInternal
 
- 
getModelImports
@NotNull public Collection<SModelReference> getModelImports()
- Specified by:
 getModelImportsin interfaceSModelInternal- Returns:
 - collection of models this one depends from.
 
 
- 
addModelImport
public final void addModelImport(@NotNull SModelReference ref)
Description copied from interface:SModelInternalTell one model depends from another.- Specified by:
 addModelImportin interfaceSModelInternal
 
- 
deleteModelImport
public final void deleteModelImport(SModelReference modelReference)
- Specified by:
 deleteModelImportin interfaceSModelInternal
 
- 
getLanguagesEngagedOnGeneration
@NotNull public Collection<SLanguage> getLanguagesEngagedOnGeneration()
- Specified by:
 getLanguagesEngagedOnGenerationin interfaceSModelInternal
 
- 
addEngagedOnGenerationLanguage
public final void addEngagedOnGenerationLanguage(SLanguage lang)
- Specified by:
 addEngagedOnGenerationLanguagein interfaceSModelInternal
 
- 
removeEngagedOnGenerationLanguage
public final void removeEngagedOnGenerationLanguage(SLanguage lang)
- Specified by:
 removeEngagedOnGenerationLanguagein interfaceSModelInternal
 
- 
assertCanRead
protected void assertCanRead()
Invoked to check if it's legal to read from the model. By default, is no-op, subclasses shall override to enforce proper policy 
- 
assertCanChange
protected void assertCanChange()
Invoked to check if it's legal to modify the model. By default, is no-op, subclasses shall override to enforce proper policy 
- 
isDisposed
public boolean isDisposed()
- Specified by:
 isDisposedin interfaceModelWithDisposeInfo
 
- 
getDisposedStacktrace
public final StackTraceElement[] getDisposedStacktrace()
- Specified by:
 getDisposedStacktracein interfaceModelWithDisposeInfo
 
- 
createNodeFinder
public FastNodeFinder createNodeFinder(@NotNull SModel model)
- Specified by:
 createNodeFinderin interfaceFastNodeFinder.Factory
 
- 
updateExternalReferences
public final boolean updateExternalReferences(@NotNull SRepository repo)
Description copied from interface:SModelInternalModel has a chance to bring its external dependencies to a state manifested by supplied repository- Specified by:
 updateExternalReferencesin interfaceSModelInternal- Returns:
 trueif anything has been changed
 
- 
changeModelReference
public void changeModelReference(SModelReference newModelReference)
- Specified by:
 changeModelReferencein interfaceSModelInternal
 
 - 
 
 -