# Incompatible Changes in IntelliJ Platform and Plugins API 2021.*
## 2021.3
### IntelliJ Platform 2021.3
Running tests fails with `jarFiles is not set for [...]` or `Created extension classloader is not equal to plugin's one`
: Set system property `idea.force.use.core.classloader` to `true`.
Running tests fails using Gradle setup
: Please use [workarounds](https://youtrack.jetbrains.com/issue/IDEA-278926#focus=Comments-27-5561012.0-0).
`com.intellij.ui.mac.MacMessages.showMessageDialog(String, String, String[], boolean, Window, int, int, DialogWrapper.DoNotAskOption)` method removed
: Use `com.intellij.ui.mac.MacMessages.showMessageDialog(String, String, String[], boolean, Window, int, int, DoNotAskOption)` instead.
`com.intellij.openapi.ui.MessageDialogBuilder.doNotAsk(DialogWrapper.DoNotAskOption)` method removed
: Use `com.intellij.openapi.ui.MessageDialogBuilder.doNotAsk(DoNotAskOption)` instead.
`com.intellij.ide.util.projectWizard.WizardContext.getWizard()` method removed
: Use `com.intellij.ide.util.projectWizard.WizardContext.getUserData(AbstractWizard.KEY)` instead.
`com.intellij.openapi.ui.TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT` field removed
: Use `com.intellij.openapi.ui.TextComponentAccessors.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT` instead.
`com.intellij.execution.process.ColoredOutputTypeRegistry.getAnsiColorKey(int)` method removed
: Use `com.intellij.execution.process.ColoredOutputTypeRegistryImpl.getAnsiColorKey(int)` instead.
`com.intellij.diagnostic.PerformanceWatcher.Snapshot` class now interface
: Recompile the dependant code or use `com.intellij.diagnostic.PerformanceWatcherImpl.SnapshotImpl` instead.
`com.intellij.openapi.fileEditor.impl.EditorTabPresentationUtil.getEditorTabTitle(Project, VirtualFile, EditorWindow)` method parameter `EditorWindow` removed
: This parameter was never needed, but led to code coupling.
`com.intellij.openapi.fileEditor.impl.EditorTabPresentationUtil.getUniqueEditorTabTitle(Project, VirtualFile, EditorWindow)` method parameter `EditorWindow` removed
: This parameter was never needed, but led to code coupling.
`com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider.getEditorTabTitle(Project, VirtualFile, EditorWindow)` method parameter `EditorWindow` removed
: This parameter was never needed, but led to code coupling.
Constructor `com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel` changed
: Added `Language` parameter.
`com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getDescription()` abstract method added
: Provides short description.
`com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getCaseDescription(ImmediateConfigurable.Case)` abstract method added
: Provides description text for given case.
`com.intellij.codeInsight.hints.settings.InlayProviderSettingsModel.getCasePreview(ImmediateConfigurable.Case)` abstract method added
: Provides preview text for given case.
`com.intellij.openapi.wm.ToolWindow.getEmptyText()` method removed
: Please safe-cast and use `com.intellij.openapi.wm.ex.ToolWindowEx.getEmptyText()`.
`com.intellij.openapi.actionSystem.ex.CustomComponentAction#createCustomComponent(Presentation, String, DataContext)` method removed
: Please use `createCustomComponent(Presentation, String)`, one shall not depend on `dataContext` there.
`com.intellij.ui.EditorTextField.addNotify()` method marked final
: Please use `addSettingsProvider(EditorSettingsProvider)` to configure `Editor` as editor creation may be postponed now.
### VCS Log 2021.3
`com.intellij.vcs.log.ui.frame.CommitPanel` class removed
: Removed unnecessary inheritance.
### Git Plugin 2021.3
`git4idea.ui.branch.GitBranchActionsUtilKt.checkoutOrReset(Project, List, String, GitNewBranchOptions)` method removed
: Method was dropped to avoid supporting outdated behavior.
`git4idea.ui.branch.GitBranchActionsUtilKt.createNewBranch(Project, List, String, GitNewBranchOptions)` method removed
: Method was dropped to avoid supporting outdated behavior.
### Python Plugin 2021.3
`com.jetbrains.python.console.PydevConsoleRunnerImpl(Project, Sdk, PyConsoleType, String, Map, PyConsoleOptions.PyConsoleSettings, Consumer super String>, String[])` constructor parameter type `com.intellij.util.Consumer super String>` removed
: There is no need to pass a Restart action as a constructor parameter, it should be created inside the `com.jetbrains.python.console.PydevConsoleRunnerImpl#createRerunAction` method
### IntelliJ IDEA Ultimate 2021.3
#### Miscellaneous
`com.intellij.util.JavaeeIcons` class renamed to `com.intellij.javaee.JavaeeIcons`
: To support dynamic plugins.
`icons.RestClientIcons` class renamed to `com.intellij.httpClient.RestClientIcons`
: To support dynamic plugins.
#### Expression Language (EL) / JSP
Expression Language (EL) was extracted from `com.intellij.jsp` (_"Java Server Pages (JSP)"_) plugin to new `com.intellij.javaee.el` (_Java EE: Expression Language (EL)_) plugin.
`com.intellij.jsp` has mandatory dependency on `com.intellij.javaee.el`.
10+ Ultimate plugins (Spring, Java EE, Frameworks) now have optional dependency on `com.intellij.javaee.el` plugin (mandatory dependency to `com.intellij.jsp` was removed).
`com.intellij.jsp.el.impl.ELResolveUtil.VariableInfoData` class renamed to `com.intellij.jsp.el.impl.JspELResolveUtil.VariableInfoData`
: To support dynamic plugins.
`com.intellij.jsp.el.impl.ELResolveUtil` class renamed to `com.intellij.javaee.el.util.ELResolveUtil`
: Use new class from `com.intellij.javaee.el` plugin instead or `com.intellij.jsp.el.impl.JspELResolveUtil` from `com.intellij.jsp` plugin.
`com.intellij.jsp.el.impl.ELElementProcessor` class renamed to `com.intellij.javaee.el.ELElementProcessor`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ELElementTypes` class renamed to `com.intellij.javaee.el.psi.ELElementTypes`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ELLiteralExpression` class renamed to `com.intellij.javaee.el.psi.ELLiteralExpression`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ELElementType` class renamed to `com.intellij.javaee.el.psi.ELElementType`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ELExpressionHolder` class renamed to `com.intellij.javaee.el.psi.ELExpressionHolder`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.jsp.el.impl.ElVariablesProvider` class renamed to `com.intellij.javaee.el.providers.ElVariablesProvider`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ELVariable` class renamed to `com.intellij.javaee.el.psi.ELVariable`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.el.ElLiteralCustomReferenceProvider` class renamed to `com.intellij.javaee.el.psi.ElLiteralCustomReferenceProvider`
: Use new class from `com.intellij.javaee.el` plugin instead.
`com.intellij.psi.jsp.JspImplicitVariable` class renamed to `com.intellij.javaee.el.util.ELImplicitVariable`
: Use new class from `com.intellij.javaee.el` plugin instead.
#### Persistence
Package `com.intellij.javaee.model.xml.persistence` renamed to `com.intellij.jpa.model.xml.persistence`
: To support dynamic plugins.
#### Application Servers
Various package renames to support dynamic plugins
| Old package name | New package name |
|---------------------------------------------|--------------------------------------------------------|
| `com.intellij.javaee.serverInstances` | `com.intellij.javaee.appServers.serverInstances` |
| `com.intellij.javaee.appServerIntegrations` | `com.intellij.javaee.appServers.appServerIntegrations` |
| `com.intellij.javaee.deployment` | `com.intellij.javaee.appServers.deployment` |
| `com.intellij.javaee.run` | `com.intellij.javaee.appServers.run` |
`com.intellij.javaee.deployment.DeploymentModel` class renamed to `com.intellij.javaee.appServers.deployment.DeploymentModel`
: To support dynamic plugins.
`com.intellij.javaee.deployment.DeploymentSource` class renamed to `com.intellij.javaee.appServers.deployment.DeploymentSource`
: To support dynamic plugins.
`com.intellij.javaee.deployment.DeploymentProvider` class renamed to `com.intellij.javaee.appServers.deployment.DeploymentProvider`
: To support dynamic plugins.
`com.intellij.javaee.openapi.ex.AppServerIntegrationsManager` class renamed to `com.intellij.javaee.appServers.openapi.ex.AppServerIntegrationsManager`
: To support dynamic plugins.
`com.intellij.javaee.appServerIntegrations.AppServerIntegration` class renamed to `com.intellij.javaee.appServers.appServerIntegrations.AppServerIntegration`
: To support dynamic plugins.
`com.intellij.javaee.appServerIntegrations.ApplicationServerPersistentData` class renamed to `com.intellij.javaee.appServers.appServerIntegrations.ApplicationServerPersistentData`
: To support dynamic plugins.
`com.intellij.javaee.facet.JavaeeFrameworkSupportInfoCollector` class renamed to `com.intellij.javaee.appServers.facet.JavaeeFrameworkSupportInfoCollector`
: To support dynamic plugins.
`com.intellij.javaee.appServerIntegrations.ApplicationServer` class renamed to `com.intellij.javaee.appServers.appServerIntegrations.ApplicationServer`
: To support dynamic plugins.
`com.intellij.javaee.appServerIntegrations.ApplicationServerHelper` class renamed to `com.intellij.javaee.appServers.appServerIntegrations.ApplicationServerHelper`
: To support dynamic plugins.
`com.intellij.javaee.serverInstances.J2EEServerInstance` class renamed to `com.intellij.javaee.appServers.serverInstances.J2EEServerInstance`
: To support dynamic plugins.
`com.intellij.javaee.run.configuration.CommonModel` class renamed to `com.intellij.javaee.appServers.run.configuration.CommonModel`
: To support dynamic plugins.
`com.intellij.javaee.run.localRun.ExecutableObjectStartupPolicy` class renamed to `com.intellij.javaee.appServers.run.localRun.ExecutableObjectStartupPolicy`
: To support dynamic plugins.
### Database Plugin 2021.3
`com.intellij.database.model.ModelLightCopierUtils` class removed
: Internal class not to be used by 3rd party.
## 2021.2
### IntelliJ Platform 2021.2
`com.intellij.openapi.editor.impl.event.DocumentEventImpl.translateLineViaDiff(int)` method removed
: Use persistent range markers instead, see `com.intellij.openapi.editor.Document.createRangeMarker(int, int, boolean)` with `surviveOnExternalChange=true`.
`com.intellij.openapi.editor.impl.event.DocumentEventImpl.translateLineViaDiffStrict(int)` method removed
: Use persistent range markers instead, see `com.intellij.openapi.editor.Document.createRangeMarker(int, int, boolean)` with `surviveOnExternalChange=true`.
`com.intellij.openapi.file.exclude.EnforcedPlainTextFileType` class removed
: Use `com.intellij.openapi.fileTypes.PlainTextFileType` instead.
`com.intellij.openapi.updateSettings.impl.CheckForUpdateResult` class removed
: Use `com.intellij.openapi.updateSettings.impl.PlatformUpdates` instead.
`com.intellij.openapi.updateSettings.impl.UpdateStrategy.checkForUpdates()` method return type changed from `com.intellij.openapi.updateSettings.impl.CheckForUpdateResult` to `com.intellij.openapi.updateSettings.impl.PlatformUpdates`
: Use `com.intellij.openapi.updateSettings.impl.PlatformUpdates` instead of `com.intellij.openapi.updateSettings.impl.CheckForUpdateResult`.
`com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.PluginsAdvertiser.Plugin` class removed
: Use `com.intellij.ide.plugins.advertiser.PluginData` instead.
`com.intellij.ide.plugins.DisabledPluginsState.disablePlugin(PluginId)` method removed
: Use either `com.intellij.ide.plugins.PluginManagerCore.disablePlugin(PluginId)` or `com.intellij.ide.plugins.PluginEnabler.disablePlugins(Collection)` instead.
`com.intellij.ide.plugins.PluginManagerMain.suggestToEnableInstalledDependantPlugins(PluginEnabler, List)` method parameter type changed from `com.intellij.ide.plugins.PluginManagerMain.PluginEnabler` to `com.intellij.ide.plugins.PluginEnabler`
: `com.intellij.ide.plugins.PluginManagerMain.PluginEnabler` has been renamed to `com.intellij.ide.plugins.PluginEnabler`.
`com.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility` class removed
: Use `com.intellij.ssh.ui.unified.SshConfigVisibility` instead.
`com.intellij.ssh.ui.unified.SshConfigComboBox.reload(PresentableId, SshConfigConfigurable.Visibility)` method parameter type changed from `com.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility` to `com.intellij.ssh.ui.unified.SshConfigVisibility`
: `SshConfigConfigurable.Visibility` has been renamed to `SshConfigVisibility`.
`com.intellij.ssh.ui.unified.SshConfigComboBox(Project, Disposable, SshConfigConfigurable.Visibility)` constructor parameter type changed from `com.intellij.ssh.ui.unified.SshConfigConfigurable.Visibility` to `com.intellij.ssh.ui.unified.SshConfigVisibility`
: `SshConfigConfigurable.Visibility` has been renamed to `SshConfigVisibility`.
`org.jetbrains.uast.UAnnotated.getAnnotations()` method removed
: Use `org.jetbrains.uast.UAnnotated.getUAnnotations()` instead.
`org.jetbrains.uast.UAnnotated.getUAnnotations()` marked abstract
: Previously this circularly referenced `org.jetbrains.uast.UAnnotated.getAnnotations()`, which has been removed.
`com.intellij.openapi.actionSystem.ActionPlaces.isMainMenuOrShortcut(String)` method removed
: Use `isMainMenuOrActionSearch(String)` method instead.
Add implementation for `com.intellij.openapi.fileEditor.FileEditor.getFile()`
: Implementations should return non-null `VirtualFile` instance.
### Performance Testing Plugin 2021.2
`com.jetbrains.performancePlugin.CommandProvider.getCommands()` method return type changed from `java.util.List` to `java.util.Map`
: Use `java.util.List` instead of `java.util.Map`.
### Database Plugin 2021.2
`com.intellij.database.dataSource.DatabaseCredentialsAuthProvider.UserWidget` class removed
: Use `com.intellij.database.dataSource.DatabaseCredentialsAuthProviderUi.UserWidget` instead.
`com.intellij.database.actions.DdlActions.DeleteProvider1` class removed
: Use `com.intellij.database.actions.DbDeleteProvider.getDeleteProvider()` instead.
`com.intellij.database.model.RawConnectionConfig.getEffectiveUrl(Project)` method removed
: Use `com.intellij.database.model.RawConnectionConfig.getUrl()` instead. Or use `com.intellij.database.dataSource.DatabaseConnectionEstablisher.processInterceptors()`.
### GitHub Plugin 2021.2
`org.jetbrains.plugins.github.util.GithubAuthData` class removed
: Use `org.jetbrains.plugins.github.authentication.GithubAuthenticationManager` instead.
`org.jetbrains.plugins.github.util.GithubAuthData$BasicAuth` class removed
: Use `org.jetbrains.plugins.github.authentication.GithubAuthenticationManager` instead.
`org.jetbrains.plugins.github.util.GithubSettings.getAuthData(GithubAuthData)` method removed
: Use `org.jetbrains.plugins.github.authentication.GithubAuthenticationManager` instead.
`org.jetbrains.plugins.github.util.GithubSettings.getLogin` method removed
: Use `org.jetbrains.plugins.github.authentication.GithubAuthenticationManager` instead.
`org.jetbrains.plugins.github.util.GithubSettings.isAuthConfigured` method removed
: Use `org.jetbrains.plugins.github.authentication.GithubAuthenticationManager` instead.
### Spring Plugin 2021.2
`icons.SpringApiIcons` class moved to package `com.intellij.spring`
: Use `com.intellij.spring.SpringApiIcons` instead.
`icons.SpringApiIcons.Gutter` class moved to package `com.intellij.spring`
: Use `com.intellij.spring.SpringApiIcons.Gutter` instead.
### Python Plugin 2021.2.1
`com.jetbrains.python.psi.types.PyTypedDictType.Companion.match(PyTypedDictType, PyDictLiteralExpression, TypeEvalContext)` method removed
: As the result of the refactoring aimed at fixing [PY-48799](https://youtrack.jetbrains.com/issue/PY-48799), for dict literals containing only string keys we infer `PyTypedDictType` now, so there's no need to match dict literals with `TypedDict`s. There's a new method for comparing the inferred `TypedDict`s with the given ones: `com.jetbrains.python.psi.types.PyTypedDictType.Companion.match(PyType, PyTypedDictType, TypeEvalContext)`.
## 2021.1
### IntelliJ Platform 2021.1
`com.intellij.util.io.PersistentHashMap.isCorrupted` method removed
: The storage checks for corruption automatically, there is no need of any explicit additional checks.
`com.intellij.lang.StdLanguages.JSPX` field removed
: Add a dependency on the `com.intellij.jsp` plugin and replace the reference with `com.intellij.lang.jspx.JspxLanguageImpl.INSTANCE`.
`com.intellij.lang.StdLanguages.JSP` field removed
: Add a dependency on the `com.intellij.jsp` plugin and replace the reference with `com.intellij.lang.jsp.NewJspLanguage.getInstance()`.
`com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.compareItems(alreadyFoundItem)` method parameter type changed from `SearchEverywhereFoundElementInfo` to `List`
: New API is more abstract which allows to review all already found items before making "deduplication" decision. Also consider implementing `com.intellij.ide.actions.searcheverywhere.AbstractEqualityProvider` instead of `com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider`.
`com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.SKIP` field removed
: Enum class `SEEqualElementsActionType` was converted to sealed class with the same name.
`com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.DO_NOTHING` field removed
: Enum class `SEEqualElementsActionType` was converted to sealed class with the same name.
`com.intellij.ide.actions.searcheverywhere.SEResultsEqualityProvider.SEEqualElementsActionType.Replace` field removed
: Enum class `SEEqualElementsActionType` was converted to sealed class with the same name.
`org.sqlite.SQLiteConfig.setBusyTimeout(String)` method parameter type changed from `String` to `int`
: Please use updated sqlite-jdbc API.
`com.intellij.usages.impl.rules.UsageTypeProvider.getUsageType` method `PsiElement` parameter marked `@NotNull`
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
`com.jetbrains.performancePlugin.CommandProvider.getCommands(Project)` method parameter `Project` removed
: Project is now only accessible via `com.intellij.openapi.ui.playback.PlaybackContext.getProject()` since it may change during script execution.
JSON Widget suppressor `com.intellij.json.jsonWidgetSuppressor` EP
: Override new method [`JsonWidgetSuppressor.isCandidateForSuppress(VirtualFile, Project)`](%gh-ic%/json/src/com/jetbrains/jsonSchema/extension/JsonWidgetSuppressor.java) for quick check in EDT before `suppressSwitcherWidget()` is called on background thread.
### HTTP Client Plugin 2021.1
`com.intellij.ws.rest.client` package removed
: Replaced by `com.intellij.httpClient.execution` in HTTP Client plugin.
`com.intellij.ws.actions` package removed
: Replaced by `com.intellij.httpClient.actions` in HTTP Client plugin.
`com.intellij.ws.converters` package removed
: Replaced by `com.intellij.httpClient.converters` in HTTP Client plugin.
`com.intellij.ws.http.request` package removed
: Replaced by `com.intellij.httpClient.http.request` in HTTP Client plugin.
### Java UML Plugin 2021.1
Rename of packages to `.java.` specific variants
| Old package name | New package name |
|----------------------------|---------------------------------|
| `com.intellij.uml.utils` | `com.intellij.uml.java.utils` |
| `com.intellij.uml.project` | `com.intellij.uml.java.project` |
| `com.intellij.uml.jigsaw` | `com.intellij.uml.java.jigsaw` |
### Kotlin Plugin 2021.1
`org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeInfo(KotlinMethodDescriptor, String, KotlinTypeInfo, Visibility, List, KotlinParameterInfo, PsiElement, Collection)` constructor parameter type changed from `org.jetbrains.kotlin.descriptors.Visibility` to `org.jetbrains.kotlin.descriptors.DescriptorVisibility`
: `Visibility` has been renamed to `DescriptorVisibility`.
### Go Plugin 2021.1
`com.goide.sdk.combobox.GoSdkChooserCombo.getSdk` method moved to the superclass
: Recompile the dependant code.
### CoffeeScript Plugin 2021.1
`icons.CoffeescriptIcons` class renamed to `org.coffeescript.CoffeescriptIcons`
: To support dynamic plugins.