Package jetbrains.mps.smodel
Class Language
- java.lang.Object
 - 
- jetbrains.mps.extapi.module.SModuleBase
 - 
- jetbrains.mps.project.AbstractModule
 - 
- jetbrains.mps.module.ReloadableModuleBase
 - 
- jetbrains.mps.smodel.Language
 
 
 
 
 
- 
- All Implemented Interfaces:
 EditableSModule,ReloadableModule,SModule
- Direct Known Subclasses:
 TestLanguage
public class Language extends ReloadableModuleBase implements ReloadableModule
 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static classLanguage.LanguageModelsAutoImports- 
Nested classes/interfaces inherited from class jetbrains.mps.module.ReloadableModuleBase
ReloadableModuleBase.SModuleDependenciesListener 
- 
Nested classes/interfaces inherited from class jetbrains.mps.project.AbstractModule
AbstractModule.LangAndDevkits 
- 
Nested classes/interfaces inherited from interface jetbrains.mps.module.ReloadableModule
ReloadableModule.DeploymentStatus 
 - 
 
- 
Field Summary
Fields Modifier and Type Field Description static StringLANGUAGE_MODELSDefault, although not mandatory location we save our models to.static StringLEGACY_LANGUAGE_MODELSDeprecated.Use of default value to detect aspect source root or to check module existence is wrong.- 
Fields inherited from class jetbrains.mps.project.AbstractModule
CLASSES, CLASSES_GEN, MODULE_DIR 
- 
Fields inherited from class jetbrains.mps.extapi.module.SModuleBase
MODEL_BY_NAME_COMPARATOR 
 - 
 
- 
Constructor Summary
Constructors Modifier Constructor Description protectedLanguage(LanguageDescriptor descriptor, IFile file) 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddExtendedLanguage(SModuleReference langRef)protected voidcollectMandatoryFacetTypes(Set<String> types)For the time being, MPS enforces certain facets for modules (e.g.voiddispose()voiddoSetModuleDescriptor(ModuleDescriptor moduleDescriptor)List<SModel>getAccessoryModels()Set<Language>getAllExtendedLanguages()All the language modules extended by this one within the same repository this module is attached to.List<SNode>getConceptDeclarations()Deprecated.method is not bad per se (Language module could tell SNode with concept declaration.Iterable<SDependency>getDeclaredDependencies()All dependencies on modules of all kinds.Set<SModuleReference>getExtendedLanguageRefs()Collection<Generator>getGenerators()static LanguagegetLanguageFor(SModel sm)static LanguagegetLanguageForLanguageAspect(SModel modelDescriptor)intgetLanguageVersion()static LanguageAspectgetModelAspect(SModel sm)Deprecated.LanguageDescriptorgetModuleDescriptor()Collection<Generator>getOwnedGenerators()PROVISIONAL API, DON'T USE UNLESS YOU'RE 100% SURE WHAT IS THE REASON FOR THAT, AND WHAT'S THE (UPCOMING) DIFFERENCE WITHgetGenerators()NOTE: BE CAREFUL WHEN INVOKED FROM A CODE THAT REACTS TO MODULE DESCRIPTOR CHANGES if invoked with a changed MD, gives state according to MD contents, and not the one exposed in the repository (think about scenario when a repo-registered, language-owned generator has been removed from MD.Collection<SModuleReference>getRuntimeModulesReferences()SModelgetStructureModelDescriptor()List<SModel>getUtilModels()booleanisAccessoryModel(SModelReference modelReference)static booleanisLanguageOwnedAccessoryModel(SModel sm)voidonModuleLoad()voidreloadAfterDescriptorChange()voidremoveAccessoryModel(SModel sm)voidrename(String newModuleName)voidsave()fixme why generator saves language?? generator is contained in language it must be the other way around!voidsetLanguageDescriptor(LanguageDescriptor moduleDescriptor)Deprecated.voidsetLanguageVersion(int version)StringtoString()voidvalidateExtends()- 
Methods inherited from class jetbrains.mps.module.ReloadableModuleBase
addDependenciesListener, dependenciesChanged, fireDependenciesChanged, getClass, getClass, getClassLoader0, getOwnClass, getStatus, reload, removeDependenciesListener 
- 
Methods inherited from class jetbrains.mps.project.AbstractModule
addDependency, attach, collectLanguagesAndDevkits, getDependencyVersion, getDependencyVersion, getDescriptorFile, getFacet, getFacets, getFileSystem, getModelRoots, getModuleId, getModuleName, getModuleReference, getModuleSourceDir, getModuleVersion, getOutputPath, getScope, getSourcePaths, getUsedLanguages, getUsedLanguageVersion, getUsedLanguageVersion, handleReadProblem, isChanged, isPackaged, isReadOnly, loadRoots, removeDependency, renameModels, setChanged, setModuleDescriptor, setModuleDescriptor, setModuleReference, setModuleVersion, setupFacet, updateExternalReferences, updateFacets, updateModelsSet, updatePackagedDescriptor 
- 
Methods inherited from class jetbrains.mps.extapi.module.SModuleBase
addModuleListener, assertCanChange, assertCanRead, fireBeforeModelRenamed, fireChanged, fireModelRenamed, fireModuleRenamed, getModel, getModels, getRepository, registerModel, removeModuleListener, unregisterModel 
- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait 
- 
Methods inherited from interface jetbrains.mps.module.ReloadableModule
canLoadClasses, getClass, getClassLoader, getClassLoader0, getOwnClass, getStatus, reload, willLoad 
- 
Methods inherited from interface org.jetbrains.mps.openapi.module.SModule
addModuleListener, getFacet, getFacets, getModel, getModelRoots, getModels, getModels, getModuleId, getModuleName, getModuleReference, getRepository, getUsedLanguages, getUsedLanguageVersion, isPackaged, isReadOnly, removeModuleListener 
 - 
 
 - 
 
- 
- 
Field Detail
- 
LANGUAGE_MODELS
public static final String LANGUAGE_MODELS
Default, although not mandatory location we save our models to. Made public just for the sake of tests.- See Also:
 - Constant Field Values
 
 
- 
LEGACY_LANGUAGE_MODELS
@Deprecated public static final String LEGACY_LANGUAGE_MODELS
Deprecated.Use of default value to detect aspect source root or to check module existence is wrong.- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Constructor Detail
- 
Language
protected Language(@NotNull LanguageDescriptor descriptor, @Nullable IFile file)
 
 - 
 
- 
Method Detail
- 
reloadAfterDescriptorChange
public void reloadAfterDescriptorChange()
- Overrides:
 reloadAfterDescriptorChangein classAbstractModule
 
- 
addExtendedLanguage
public void addExtendedLanguage(@NotNull SModuleReference langRef)
 
- 
getExtendedLanguageRefs
public Set<SModuleReference> getExtendedLanguageRefs()
 
- 
getDeclaredDependencies
public Iterable<SDependency> getDeclaredDependencies()
Description copied from interface:SModuleAll dependencies on modules of all kinds. Includes only dependencies declared in this model. See also GlobalModuleDependenciesManager [not yet in API]- Specified by:
 getDeclaredDependenciesin interfaceSModule- Overrides:
 getDeclaredDependenciesin classAbstractModule
 
- 
getAllExtendedLanguages
@NotNull public Set<Language> getAllExtendedLanguages()
All the language modules extended by this one within the same repository this module is attached to. For detached module, the set returned is empty. To access 'raw' information about extended languages, one could usegetExtendedLanguageRefs(). This method requires model read access as it resolves modules. IMPORTANT: if any extended language is missing from the repository of the module, it's simply ignored and not included into outcome (nor the closure of its extended languages). NOTE, implementation hides cyclic dependencies between languages, e.g if "A extends B extends A", you'd get "A extends B" for A and "B extends A" for B. 
- 
getRuntimeModulesReferences
public Collection<SModuleReference> getRuntimeModulesReferences()
 
- 
validateExtends
public void validateExtends()
 
- 
onModuleLoad
public void onModuleLoad()
- Overrides:
 onModuleLoadin classAbstractModule
 
- 
dispose
public void dispose()
- Overrides:
 disposein classAbstractModule
 
- 
getModuleDescriptor
@NotNull public LanguageDescriptor getModuleDescriptor()
- Overrides:
 getModuleDescriptorin classAbstractModule
 
- 
doSetModuleDescriptor
public void doSetModuleDescriptor(ModuleDescriptor moduleDescriptor)
- Overrides:
 doSetModuleDescriptorin classAbstractModule
 
- 
setLanguageDescriptor
@Deprecated public void setLanguageDescriptor(@NotNull LanguageDescriptor moduleDescriptor)
Deprecated. 
- 
getLanguageVersion
public int getLanguageVersion()
 
- 
setLanguageVersion
public void setLanguageVersion(int version)
 
- 
getGenerators
public Collection<Generator> getGenerators()
- Returns:
 - all generators that treat this language as their source one.
 
 
- 
getOwnedGenerators
public Collection<Generator> getOwnedGenerators()
PROVISIONAL API, DON'T USE UNLESS YOU'RE 100% SURE WHAT IS THE REASON FOR THAT, AND WHAT'S THE (UPCOMING) DIFFERENCE WITHgetGenerators()NOTE: BE CAREFUL WHEN INVOKED FROM A CODE THAT REACTS TO MODULE DESCRIPTOR CHANGES if invoked with a changed MD, gives state according to MD contents, and not the one exposed in the repository (think about scenario when a repo-registered, language-owned generator has been removed from MD. This method would give empty set despite the fact generator module is there)- Returns:
 - generators declared and controlled by this language module.
 
 
- 
rename
public void rename(@NotNull String newModuleName) throws DescriptorTargetFileAlreadyExistsException
- Overrides:
 renamein classAbstractModule- Throws:
 DescriptorTargetFileAlreadyExistsException
 
- 
getConceptDeclarations
@Deprecated public List<SNode> getConceptDeclarations()
Deprecated.method is not bad per se (Language module could tell SNode with concept declaration. However, it silently excludes Interface concepts, and likely its uses need attention and switch to SConcept. Then, we could decide whether we truly need access to language's concept nodes this way, or shall use LanguageAspects instead. 
- 
getStructureModelDescriptor
public SModel getStructureModelDescriptor()
 
- 
save
public void save()
fixme why generator saves language?? generator is contained in language it must be the other way around!- Specified by:
 savein interfaceEditableSModule- Overrides:
 savein classAbstractModule
 
- 
isAccessoryModel
public boolean isAccessoryModel(SModelReference modelReference)
 
- 
removeAccessoryModel
public void removeAccessoryModel(SModel sm)
 
- 
toString
public String toString()
- Overrides:
 toStringin classAbstractModule
 
- 
getLanguageForLanguageAspect
public static Language getLanguageForLanguageAspect(SModel modelDescriptor)
 
- 
getModelAspect
@Deprecated @Nullable public static LanguageAspect getModelAspect(SModel sm)
Deprecated. 
- 
isLanguageOwnedAccessoryModel
public static boolean isLanguageOwnedAccessoryModel(SModel sm)
 
- 
collectMandatoryFacetTypes
protected void collectMandatoryFacetTypes(Set<String> types)
Description copied from class:AbstractModuleFor the time being, MPS enforces certain facets for modules (e.g. Java facet is essential for classloading mechanism). As we move forward with facets story, we likely respect actual facets for the module (e.g. would force Java facet on module creation only) Need to ensure classloading could deal with modules without Java facet, then can drop these mandatory facets altogether- Overrides:
 collectMandatoryFacetTypesin classAbstractModule
 
 - 
 
 -