Classloading is coupled with project structure (modules, languages and generators), moved to project module.
Drop dependency from SModelRepository, replaced with openapi.SRepository
Utility class nobody uses is not of any utility.
Logger shall be separate aspect of a kernel/core so that code that needs logging (e.g. smodel impl) doesn't depend from the whole kernel module. Indeed, smodel module is not the right place, just a temporary haven until a better place (a module kernel and others, including smodel, can depend from. E.g. mps.base) is ready.
ModelAccess and related classes moved to smodel module out from kernel. Few interfaces got split up to facilitate smodel-kernel independence. Utility classes that got no better place to live at, relocated to smodel for now.
Drop deprecated runWriteActionInCommandAsync
Update idea plugin with ProjectModelAccess
IdeaPlugin: initialize MPS prior to using ModelAccess
ModelAccess: towards better (clean/concise) access API: fix assumptions (commands are inherently write actions; commands are EDT-bound; async command execution is necessary to keep UI responsive).
ModelAccess: remove duplicated code
ModelAccess: use access object from project (methods in ModelAccess that take project will be deprecated).
ModelAccess: use optional interface to pass additional parameters along with undoable command (to avoid cumbersome api)
Drop deprecated methods, actions without an editor context can't be run as a command
ModelAccess: refactor WorkbenchModelAccess to reduce code duplication
ModelAccess: deprecate methods that take project as an argument, favor use of project's own openapi.ModelAccess
ModelAccess: drop logger dependency from ModelAccess, with project-sensitive MAs, there's little reason to check read/write access at some arbitrary MA. In fact, there's little sense checking this at all, as smodel implementation does this check anyway.
Logger: drop deprecated and unused methods.
ModelAccess: move ModelAccess back to kernel (and implement extended api of ModelCommandProjectExecutor) to facilitate migration - generated code would expect these methods accessible from ModelAccess.instance(). Once migration is over, MA shall become a regular instance class (instantiated where needed, e.g. from SRepository), and reside to a better module (e.g. smodel).
idea plugin: drop mps custom logger where regular log4j is sufficient
Drop 3.0 migration script responsible for migration od deprecated methods that have been removed now.
Undo: fix UndoVariableNameChangeAtOnce_Test (group id with UndoRunnable is not respected when runWriteActionInCommand is invoked)