[//]: # (title: Incompatible Changes in IntelliJ Platform and Plugins API 2022.*)
Please see [](verifying_plugin_compatibility.md) on how to use Plugin Verifier and IDE inspections to check such problems.
> Changes from API marked with `@Deprecated(forRemoval=true)` or any of [`org.jetbrains.annotations.ApiStatus`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java) `@Experimental`, `@ScheduledForRemoval`, or `@Internal` are not listed here, as incompatible changes are to be expected.
>
> For API annotated with `ApiStatus.@Internal`, see [](api_internal.md) for more details and replacements.
>
{type="note"}
> Java 17 is required when targeting 2022.2 or later only.
>
> Java 11 is required ([blog post](https://blog.jetbrains.com/platform/2020/09/intellij-project-migrates-to-java-11/)) when targeting 2020.3 and later only.
>
> Please make sure to always upgrade `gradle-intellij-plugin` to the latest version [{type="joined"}](https://github.com/jetbrains/gradle-intellij-plugin/releases)
>
{type="note"}
_Early Access Program_ (EAP) releases of upcoming versions are available [here](https://eap.jetbrains.com).
## 2022.3
### IntelliJ Platform 2022.3
`com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.isApplicable(ProjectSystemId)` method added
: Must be implemented.
`com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.createContributor(Project, Disposable)` method parameter `ProjectSystemId` removed
: Adjust your code.
`com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.createContributor(Project, Disposable)` method return type changed from `DependencyAnalyzerContributor?` to `DependencyAnalyzerContributor`
: Implement `isApplicable()` instead.
`com.intellij.openapi.editor.EditorCopyPasteHelper.getSelectionTransferable(Editor editor, EditorCopyPasteHelper.CopyPasteOptions options)` abstract method added
: Must be implemented instead of and preferred over `com.intellij.openapi.editor.EditorCopyPasteHelper.copySelectionToClipboard(Editor)` which now delegates to the new method.
### Database Plugin 2022.3
`com.intellij.database.dataSource.url.TypesRegistry.ParamEditor` class removed
: Use `com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor` instead.
`com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor.createFieldImpl(String caption, String configuration, DataInterchange interchange)` abstract method added
: Must be implemented.
`com.intellij.database.psi.DbDataSourceImpl.getDelegate()` method return type changed from `DatabaseSystem` to `RawDataSource`
: Prefer `com.intellij.database.psi.DbDataSource.getDelegateDataSource()`.
`com.intellij.database.psi.DbPsiFacadeImpl.createDataSourceWrapperElement(DasDataSource, DataSourceManager)` method parameter type changed from `DasDataSource` to `RawDataSource`
: Avoid manually wrapping data sources.
### TextMate Plugin 2022.3
`org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry` class now interface
: Construct and mutate the `org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl` instead.
`org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry.fillFromPList(CharSequence, Plist)` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl.fillFromPList(CharSequence, Plist)` instead.
`org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry.clear()` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl.clear()` instead.
`org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry()` constructor removed
: Instantiate `org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl` instead.
`org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry` class now interface
: Construct and mutate the `org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl` instead.
`org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry.fillVariablesFromPlist(CharSequence, Plist)` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl.fillVariablesFromPlist(CharSequence, Plist)` instead.
`org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry.clear()` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl.clear()` instead.
`org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry()` constructor removed
: Instantiate `org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl` instead.
`org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry` class now interface
: Construct and mutate the `org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl` instead.
`org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry.register(TextMateSnippet)` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl.register(TextMateSnippet)` instead.
`org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry.clear()` method removed
: Use `org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl.clear()` instead.
`org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry()` constructor removed
: Instantiate `org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl()` instead.
### HTTP Client Plugin 2022.3
`com.intellij.httpClient.http.request.HttpRequestVariableSubstitutor` class now interface
: Use `com.intellij.httpClient.http.request.HttpRequestVariableSubstitutorImpl.create(Project, HttpRequestEnvironment)` for constructing instances.
### JavaScript Plugin 2022.3
`com.intellij.lang.javascript.buildTools.webpack.WebPackConfigManager` class moved to package `com.intellij.webpack`
: Use `com.intellij.webpack.WebpackConfigManager` instead.
`com.intellij.lang.javascript.buildTools.webpack.WebPackConfigManager.Companion` class moved to package `com.intellij.webpack`
: Use `com.intellij.webpack.WebpackConfigManager.Companion` instead.
## 2022.2
### IntelliJ Platform 2022.2
`com.intellij.openapi.actionSystem.TypeSafeDataProvider` class removed
: Use `com.intellij.openapi.actionSystem.DataProvider` class instead.
`com.intellij.openapi.actionSystem.DataSink` class removed
: Removed along with `com.intellij.openapi.actionSystem.TypeSafeDataProvider`.
`com.intellij.openapi.vcs.changes.ui.ChangesBrowser` class removed
: Use `com.intellij.openapi.vcs.changes.ui.ChangesBrowserBase` or `com.intellij.openapi.vcs.changes.ui.SimpleChangesBrowser` instead.
`com.intellij.openapi.vcs.changes.ui.ChangesBrowser.MyUseCase` class removed
: Removed along with `com.intellij.openapi.vcs.changes.ui.ChangesBrowser`.
`com.intellij.openapi.vcs.changes.ui.ChangesTreeList` class removed
: Use `com.intellij.openapi.vcs.changes.ui.ChangesTree` or `com.intellij.openapi.vcs.changes.ui.ChangesTreeImpl` instead.
`com.intellij.ide.IdeEventQueue.unsafeNonblockingExecute(Runnable)` method removed
: Method does not make sense anymore, please see [JBR-4328](https://youtrack.jetbrains.com/issue/JBR-4328).
`com.intellij.vcs.log.VcsLogHighlighter.getStyle(int, VcsShortCommitDetails, boolean)` method removed
: Use `com.intellij.vcs.log.VcsLogHighlighter.getStyle(int, VcsShortCommitDetails, int, boolean)` instead.
`com.intellij.AbstractBundle.getResourceBundle(java.lang.String, java.lang.ClassLoader)` method removed
: Use `com.intellij.DynamicBundle.getResourceBundle(java.lang.ClassLoader, java.lang.String)` instead
### Java Plugin 2022.2
`com.intellij.codeInspection.javaDoc.JavaDocLocalInspection` class removed
: Use `com.intellij.codeInspection.javaDoc.JavadocDeclarationInspection.ADDITIONAL_TAGS` field instead of `JavaDocLocalInspection.myAdditionalJavadocTags`.
### Plugin DevKit Plugin 2022.2
`icons.DevkitIcons` class renamed to `org.jetbrains.idea.devkit.DevKitIcons`
: Use `org.jetbrains.idea.devkit.DevKitIcons` instead.
`icons.DevkitIcons.Gutter` class renamed to `org.jetbrains.idea.devkit.DevKitIcons.Gutter`
: Use `org.jetbrains.idea.devkit.DevKitIcons.Gutter` instead.
### Collaboration Tools 2022.2
`com.intellij.collaboration.auth.ui.AccountsListModelBase.notifyCredentialsChanged(A account)` method visibility changed from protected to private
: Method hidden for better encapsulation.
`com.intellij.collaboration.auth.ui.AccountsPanelFactory.INSTANCE` field removed
: Factory is now a factory.
`com.intellij.collaboration.auth.ui.LoadingAccountsDetailsProvider.DetailsLoadingResult` class removed
: Better API introduced in the form of `com.intellij.collaboration.auth.ui.AccountsDetailsLoader`.
`com.intellij.collaboration.auth.ui.LoadingAccountsDetailsProvider` class removed
: Better API introduced in the form of `com.intellij.collaboration.auth.ui.AccountsDetailsLoader`.
`com.intellij.collaboration.ui.codereview.avatar.CachingAvatarIconsProvider` class renamed to `com.intellij.collaboration.ui.codereview.avatar.CachingCircleImageIconsProvider`
: Icon provider implementation changes to async.
### GitHub 2022.2
`org.jetbrains.plugins.github.api.GithubApiRequestExecutorManager.getExecutor(GithubAccount)` method return type changed from `org.jetbrains.plugins.github.api.GithubApiRequestExecutor.WithTokenAuth` to `org.jetbrains.plugins.github.api.GithubApiRequestExecutor`
: Hidden implementation details.
`org.jetbrains.plugins.github.api.GithubApiRequestExecutorManager.getExecutor(GithubAccount, Project)` method return type changed from `org.jetbrains.plugins.github.api.GithubApiRequestExecutor.WithTokenAuth` to `org.jetbrains.plugins.github.api.GithubApiRequestExecutor`
: Hidden implementation details.
`org.jetbrains.plugins.github.api.GithubApiRequestExecutorManager.getExecutor(GithubAccount, JComponent)` method return type changed from `org.jetbrains.plugins.github.api.GithubApiRequestExecutor.WithTokenAuth` to `org.jetbrains.plugins.github.api.GithubApiRequestExecutor`
: Hidden implementation details.
### Grazie Plugin 2022.2
Method `com.intellij.grazie.GrazieBundle.message(key, parameters)` marked static
: To shorten Java callers.
### Docker Plugin 2022.2
`com.intellij.docker.registry.DockerRegistry` class renamed to `com.intellij.docker.registry.DockerRegistryConfiguration`
: Please update usages.
### JavaScript Plugin 2022.2
`com.intellij.lang.javascript.buildTools.webpack.WebPackConfigManager.setConfig(WebPackConfig)` method moved to the superclass
: Should be used only in tests (marked with `@TestOnly`).
`com.intellij.lang.javascript.buildTools.webpack.WebPackConfig` class renamed to `com.intellij.lang.javascript.buildTools.bundler.WebBundlerConfig`
: Use `com.intellij.lang.javascript.buildTools.bundler.WebBundlerConfig` instead.
`com.intellij.lang.javascript.buildTools.webpack.WebPackResolve` class renamed to `com.intellij.lang.javascript.buildTools.bundler.WebBundlerResolve`
: Use `com.intellij.lang.javascript.buildTools.bundler.WebBundlerResolve` instead.
`com.intellij.lang.javascript.buildTools.webpack.WebPackConfigPath` class removed
: A regular String class is used instead.
## 2022.1
### IntelliJ Platform 2022.1
`org.apache.log4j` package removed
: log4j library removed from IntelliJ Platform, please see this [blog post](https://blog.jetbrains.com/platform/2022/02/removing-log4j-from-the-intellij-platform/) for migration instructions.
`org.slf4j` package removed
: log4j library removed from IntelliJ Platform, please see this [blog post](https://blog.jetbrains.com/platform/2022/02/removing-log4j-from-the-intellij-platform/) for migration instructions.
`com.intellij.openapi.diagnostic.Log4jBasedLogger` class removed
: log4j library removed from IntelliJ Platform, please see this [blog post](https://blog.jetbrains.com/platform/2022/02/removing-log4j-from-the-intellij-platform/) for migration instructions.
`com.intellij.platform.DirectoryProjectConfigurator.configureProject(Project, VirtualFile, Ref, boolean)` marked abstract
: Implement it instead of removed one.
`com.intellij.psi.impl.java.stubs.index.JavaStubIndexKeys.CLASS_FQN` field type changed from `StubIndexKey` to `StubIndexKey`
: `JavaFullClassNameIndex` now takes `CharSequence` instead of its `hashCode` to allow specific optimizations.
`com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.getKey` method return type changed from `StubIndexKey` to `StubIndexKey`
: `JavaFullClassNameIndex` now takes `CharSequence` instead of its `hashCode` to allow specific optimizations.
`com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(Integer, Project, GlobalSearchScope)` method parameter type changed from `Integer` to `CharSequence`
: `JavaFullClassNameIndex` now takes `CharSequence` instead of its `hashCode` to allow specific optimizations.
`com.jcraft.jsch` package removed
: [JSch library](https://mvnrepository.com/artifact/com.jcraft/jsch) was removed, bundle it with your plugin instead.
`com.intellij.diagnostic.DialogAppender.addFilter(Filter)` method removed
: `DialogAppender` now implements `java.util.logging.Handler`, use `setFilter` method if you need to apply a filter.
`com.intellij.psi.impl.cache.impl.BaseFilterLexerUtil.ScanContent` class removed
: Todo index is removed from the indexing procedure, use specific `calcIdEntries` or `calcTodoEntries` method instead.
`com.intellij.psi.impl.cache.impl.BaseFilterLexerUtil.scanContent(FileContent, IdAndToDoScannerBasedOnFilterLexer)` method removed
: Todo index is removed from the indexing procedure, use specific `calcIdEntries` or `calcTodoEntries` method instead.
`com.intellij.util.ui.StartupUiUtil.createStyleSheet(String)` method removed
: Method moved to `com.intellij.util.ui.StyleSheetUtil`
### Collaboration Tools 2022.1
`com.intellij.collaboration.auth.ui.AccountsPanelFactory.accountsPanel(Row, AccountManager, PersistentDefaultAccountHolder, AccountsListModel, AccountsDetailsProvider, Disposable, Icon)` method removed
: Support for default accounts required a signature change.
### Markdown Plugin 2022.1
`org.intellij.markdown.parser.constraints.MarkdownConstraints.Companion` class removed
: Some methods from a companion object were moved to `CommonMarkdownConstraints` and to extension functions on `MarkdownConstraints`.
`org.intellij.markdown.parser.constraints.MarkdownConstraints.Companion` field removed
: Some methods from a companion object were moved to `CommonMarkdownConstraints` and to extension functions on `MarkdownConstraints`.
`org.intellij.markdown.parser.constraints.MarkdownConstraints` class now interface
: Use `CommonMarkdownConstraints` for default method implementations instead.
`org.intellij.markdown.parser.markerblocks.providers.AtxHeaderProvider(boolean)` constructor parameter `boolean` removed
: `AtxHeaderProvider` now always requires at least one space between `#` and its content as specified by the CommonMark spec.
`org.intellij.markdown.html.HtmlGenerator.generateHtml()` method removed
: Use `org.intellij.markdown.html.HtmlGenerator.generateHtml(org.intellij.markdown.html.HtmlGenerator.TagRenderer)` instead.
`org.intellij.markdown.parser.markerblocks.MarkerBlockProvider.Companion.passSmallIndent(CharSequence)` method removed
: Use `org.intellij.markdown.parser.markerblocks.MarkerBlockProvider.Companion.passSmallIndent(CharSequence, Integer)` instead.
### Database Tools and SQL Plugin 2022.1
`com.intellij.database.datagrid.DataProducer.processRequest(DataRequest)` method parameter type changed from `DataRequest` to `GridDataRequest`
: `GridDataRequest` is a part of new API for async loading of table data. It's not possible to keep old method with default implementation because `DataProducer` will no longer have dependency on `DataRequest`. Plugins need to be recompiled to maintain bytecode compatibility.
`com.intellij.database.datagrid.DataRequest.RawQueryRequest.afterLastRowAdded(DataRequest.Context, int)` method parameter type changed from `DataRequest.Context` to `GridDataRequest.Context`
: The signature of the method was changed in the interface `com.intellij.database.datagrid.DataConsumer` that is now a part of new API for async loading of table data. Change the parameter type of the overridden method and recompile plugin to maintain bytecode compatibility.
`com.intellij.database.datagrid.DataConsumer.addRows(DataRequest.Context, List)` method parameter type changed from `DataRequest.Context` to `GridDataRequest.Context`
: The signature of the method was changed in the interface `com.intellij.database.datagrid.DataConsumer` that is now a part of new API for async loading of table data. Change the parameter type of the overridden method and recompile plugin to maintain bytecode compatibility.
`com.intellij.database.datagrid.DataConsumer.addRows(DataRequest.Context, List)` method parameter type changed from `List` to `List extends GridRow>`
: The signature of the method was changed in the interface `com.intellij.database.datagrid.DataConsumer` that is now a part of new API for async loading of table data. Change the parameter type of the overridden method and recompile plugin to maintain bytecode compatibility.
`com.intellij.database.extractors.ObjectFormatter.getPlainValue(Object, DataConsumer.Column, Dbms)` method removed
: Method was removed because we refactor table editor API. It will not depend on Dbms anymore. Please use `ObjectFormatter.objectToString` instead.
`com.intellij.database.DatabaseDataKeys.DATA_SOURCE_KEY` field removed
: `DatabaseDataKeys` no longer extends `DatabaseDataKeysCore` because `DatabaseDataKeys` was moved to a separate module for table editor. `DATA_SOURCE_KEY` now has to be accessed directly via `DatabaseDataKeysCore`.
`com.intellij.database.extractors.ObjectFormatter` class now interface
: Method was removed because we refactor table editor API. New API will allow to use table editor in other products and fully customize it.