Incompatible Changes in IntelliJ Platform and Plugins API 2022.*
Edit pageLast modified: 11 July 2024Please see Verifying Plugin Compatibility on how to use Plugin Verifier and IDE inspections to check such problems.
Early Access Program (EAP) releases of upcoming versions are available here.
note
Non-listed changesChanges from API marked with
@Deprecated(forRemoval=true)
or any ofApiStatus
@Experimental
,@ScheduledForRemoval
, or@Internal
are not listed here, as incompatible changes are to be expected.For API annotated with
@ApiStatus.Internal
/@IntellijInternalApi
, see Internal API Migration for more details and replacements.
note
warning
Gradle PluginThe Gradle plugin must be chosen depending on the target platform version.
- 2022.3+
Recommended IntelliJ Platform Gradle Plugin (2.x),
Requires Gradle IntelliJ Plugin (1.x) version 1.10.1+ (current: 1.17.4)
2022.3
IntelliJ Platform 2022.3
com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.isApplicable(ProjectSystemId)
abstract method addedMust be implemented.
com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.createContributor(Project, Disposable)
method parameterProjectSystemId
removedAdjust your code.
com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerExtension.createContributor(Project, Disposable)
method return type changed fromDependencyAnalyzerContributor?
toDependencyAnalyzerContributor
Implement
isApplicable()
instead.com.intellij.openapi.editor.EditorCopyPasteHelper.getSelectionTransferable(Editor editor, EditorCopyPasteHelper.CopyPasteOptions options)
abstract method addedMust 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 removedUse
com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor
instead.com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor.createFieldImpl(String caption, String configuration, DataInterchange interchange)
abstract method addedMust be implemented.
com.intellij.database.psi.DbDataSourceImpl.getDelegate()
method return type changed fromDatabaseSystem
toRawDataSource
Prefer
com.intellij.database.psi.DbDataSource.getDelegateDataSource()
.com.intellij.database.psi.DbPsiFacadeImpl.createDataSourceWrapperElement(DasDataSource, DataSourceManager)
method parameter type changed fromDasDataSource
toRawDataSource
Avoid manually wrapping data sources.
com.intellij.database.vfs.DatabaseElementVirtualFileImpl.setBusy(boolean)
method removedThat method was an internal method.
com.intellij.database.util.TreePatternNode.Group(ObjectKind, TreePatternNode[], TreePatternNode)
constructor removedDo not manipulate TreePatternNodes. Use
TreePatternUtils
to manipulateTreePatterns
.
TextMate Plugin 2022.3
org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry
class now interfaceConstruct and mutate the
org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl
instead.org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry.fillFromPList(CharSequence, Plist)
method removedUse
org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl.fillFromPList(CharSequence, Plist)
instead.org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry.clear()
method removedUse
org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl.clear()
instead.org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistry()
constructor removedInstantiate
org.jetbrains.plugins.textmate.language.preferences.PreferencesRegistryImpl
instead.org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry
class now interfaceConstruct and mutate the
org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl
instead.org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry.fillVariablesFromPlist(CharSequence, Plist)
method removedUse
org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl.fillVariablesFromPlist(CharSequence, Plist)
instead.org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry.clear()
method removedUse
org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl.clear()
instead.org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistry()
constructor removedInstantiate
org.jetbrains.plugins.textmate.language.preferences.ShellVariablesRegistryImpl
instead.org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry
class now interfaceConstruct and mutate the
org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl
instead.org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistry.register(TextMateSnippet)
method removedUse
org.jetbrains.plugins.textmate.language.preferences.SnippetsRegistryImpl.register(TextMateSnippet)
instead.
HTTP Client Plugin 2022.3
JavaScript Plugin 2022.3
Microservices Plugin 2022.3
com.intellij.microservices.url.inlay.UrlPathInlayAction.isAvailable(file: PsiFile, urlPathContext: UrlPathContext)
method parameter type changed fromcom.intellij.microservices.url.references.UrlPathContext
tocom.intellij.microservices.url.inlay.UrlPathInlayHint
Use
com.intellij.microservices.url.inlay.UrlPathInlayHint.getContext
to obtain correspondingUrlPathContext
instance.
Remote Development Gateway Plugin 2022.3
YAML Plugin 2022.3
Terraform Plugin 2022.3
Top level packages of Terraform org.intellij.plugins.hcl
and org.intellij.plugins.hil
moved to single org.intellij.terraform
.
2022.2
IntelliJ Platform 2022.2
com.intellij.openapi.actionSystem.TypeSafeDataProvider
class removedUse
com.intellij.openapi.actionSystem.DataProvider
class instead.com.intellij.openapi.actionSystem.DataSink
class removedRemoved along with
com.intellij.openapi.actionSystem.TypeSafeDataProvider
.com.intellij.openapi.vcs.changes.ui.ChangesBrowser
class removedUse
com.intellij.openapi.vcs.changes.ui.ChangesBrowserBase
orcom.intellij.openapi.vcs.changes.ui.SimpleChangesBrowser
instead.com.intellij.openapi.vcs.changes.ui.ChangesBrowser.MyUseCase
class removedRemoved along with
com.intellij.openapi.vcs.changes.ui.ChangesBrowser
.com.intellij.openapi.vcs.changes.ui.ChangesTreeList
class removedUse
com.intellij.openapi.vcs.changes.ui.ChangesTree
orcom.intellij.openapi.vcs.changes.ui.ChangesTreeImpl
instead.com.intellij.ide.IdeEventQueue.unsafeNonblockingExecute(Runnable)
method removedMethod does not make sense anymore, please see JBR-4328.
Java Plugin 2022.2
Plugin DevKit Plugin 2022.2
Collaboration Tools 2022.2
com.intellij.collaboration.auth.ui.AccountsListModelBase.notifyCredentialsChanged(A account)
method visibility changed from protected to privateMethod hidden for better encapsulation.
com.intellij.collaboration.auth.ui.AccountsPanelFactory.INSTANCE
field removedFactory is now a factory.
com.intellij.collaboration.auth.ui.LoadingAccountsDetailsProvider.DetailsLoadingResult
class removedBetter API introduced in the form of
com.intellij.collaboration.auth.ui.AccountsDetailsLoader
.
GitHub 2022.2
Grazie Plugin 2022.2
Docker Plugin 2022.2
JavaScript Plugin 2022.2
com.intellij.lang.javascript.buildTools.webpack.WebPackConfigManager.setConfig(WebPackConfig)
method moved to the superclassShould be used only in tests (marked with
@TestOnly
).com.intellij.lang.javascript.buildTools.webpack.WebPackConfig
class renamed tocom.intellij.lang.javascript.buildTools.bundler.WebBundlerConfig
Use
com.intellij.lang.javascript.buildTools.bundler.WebBundlerConfig
instead.
2022.1
IntelliJ Platform 2022.1
org.apache.log4j
package removedlog4j library removed from IntelliJ Platform, please see this blog post for migration instructions.
org.slf4j
package removedlog4j library removed from IntelliJ Platform, please see this blog post for migration instructions.
com.intellij.openapi.diagnostic.Log4jBasedLogger
class removedlog4j library removed from IntelliJ Platform, please see this blog post for migration instructions.
com.intellij.platform.DirectoryProjectConfigurator.configureProject(Project, VirtualFile, Ref<Module>, boolean)
marked abstractImplement it instead of removed one.
com.intellij.psi.impl.java.stubs.index.JavaStubIndexKeys.CLASS_FQN
field type changed fromStubIndexKey<Integer, PsiClass>
toStubIndexKey<CharSequence, PsiClass>
JavaFullClassNameIndex
now takesCharSequence
instead of itshashCode
to allow specific optimizations.com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.getKey
method return type changed fromStubIndexKey<Integer, PsiClass>
toStubIndexKey<CharSequence, PsiClass>
JavaFullClassNameIndex
now takesCharSequence
instead of itshashCode
to allow specific optimizations.com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(Integer, Project, GlobalSearchScope)
method parameter type changed fromInteger
toCharSequence
JavaFullClassNameIndex
now takesCharSequence
instead of itshashCode
to allow specific optimizations.com.jcraft.jsch
package removedJSch library was removed, bundle it with your plugin instead.
com.intellij.diagnostic.DialogAppender.addFilter(Filter)
method removedDialogAppender
now implementsjava.util.logging.Handler
, usesetFilter
method if you need to apply a filter.com.intellij.psi.impl.cache.impl.BaseFilterLexerUtil.ScanContent
class removedTodo index is removed from the indexing procedure, use specific
calcIdEntries
orcalcTodoEntries
method instead.
Collaboration Tools 2022.1
Markdown Plugin 2022.1
org.intellij.markdown.parser.constraints.MarkdownConstraints.Companion
class removedSome methods from a companion object were moved to
CommonMarkdownConstraints
and to extension functions onMarkdownConstraints
.org.intellij.markdown.parser.constraints.MarkdownConstraints.Companion
field removedSome methods from a companion object were moved to
CommonMarkdownConstraints
and to extension functions onMarkdownConstraints
.org.intellij.markdown.parser.constraints.MarkdownConstraints
class now interfaceUse
CommonMarkdownConstraints
for default method implementations instead.org.intellij.markdown.parser.markerblocks.providers.AtxHeaderProvider(boolean)
constructor parameterboolean
removedAtxHeaderProvider
now always requires at least one space between#
and its content as specified by the CommonMark spec.
Database Tools and SQL Plugin 2022.1
com.intellij.database.datagrid.DataProducer.processRequest(DataRequest)
method parameter type changed fromDataRequest
toGridDataRequest
GridDataRequest
is a part of new API for async loading of table data. It's not possible to keep old method with default implementation becauseDataProducer
will no longer have dependency onDataRequest
. Plugins need to be recompiled to maintain bytecode compatibility.com.intellij.database.datagrid.DataRequest.RawQueryRequest.afterLastRowAdded(DataRequest.Context, int)
method parameter type changed fromDataRequest.Context
toGridDataRequest.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<DataConsumer.Row>)
method parameter type changed fromDataRequest.Context
toGridDataRequest.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<DataConsumer.Row>)
method parameter type changed fromList<DataConsumer.Row>
toList<? 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 removedMethod was removed because we refactor table editor API. It will not depend on Dbms anymore. Please use
ObjectFormatter.objectToString
instead.
Thanks for your feedback!