intellij-sdk-code-samples/reference_guide/api_changes_list_2023.md
Ivan Semenov 72b5c10c37
Collaboration tools changes 233 (#1138)
Document breaking changes in collab tool for 233
2023-10-25 17:59:53 +02:00

24 KiB

Incompatible Changes in IntelliJ Platform and Plugins API 2023.*

List of known Breaking API Changes in 2023.*

2023.3

IntelliJ Platform 2023.3

Threading Model changes
Please see updated .
Removal of commons-lang2 and commons-collections libraries
commons-lang2 library is going to be removed, a temporary compatibility layer (marked with @Deprecated(forRemoval = true) to highlight usages) is bundled. Please consider migrating to either commons-lang3 or commons-text libraries and bundle them with your plugin. Library commons-collections is going to be removed.
JsonPath library unbundled
Bundle it explicitly with your plugin.
com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.isAvailable method Editor parameter marked @NotNull
This may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.
com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.invoke method Editor parameter marked @NotNull
This may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.
com.intellij.openapi.actionSystem.ex.ActionUtil.showDumbModeWarning(Project, AnActionEvent[]) method removed
Use showDumbModeWarning(@Nullable Project project, @NotNull AnAction action, AnActionEvent @NotNull ... events) instead
com.intellij.profiler.eventtrace package removed
Update code usages.

Collaboration Tools Module 2023.3

com.intellij.collaboration.ui.codereview.action.CodeReviewCheckoutRemoteBranchAction class removed
Action moved to a view model
com.intellij.collaboration.ui.codereview.details.CodeReviewDetailsBranchComponentFactory.create(CoroutineScope, CodeReviewBranchesViewModel, AnAction, DataContext) method removed
Action moved to a view model
com.intellij.collaboration.ui.codereview.diff.viewer.DiffEditorUtilKt class removed
Moved to com.intellij.collaboration.ui.codereview.editor.EditorComponentInlaysUtilKt.controlInlaysIn
com.intellij.collaboration.ui.toolwindow.ReviewListTabComponentDescriptor class removed
Descriptor removed in favour of tab type com.intellij.collaboration.ui.toolwindow.ReviewTab
com.intellij.collaboration.ui.toolwindow.ReviewTabsController class removed
Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowDataKeys.getREVIEW_TABS_CONTROLLER() method removed
Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectContext class removed
Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowViewModel.getProjectVm() method return type changed from SharedFlow to SharedFlow
Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createReviewListComponent(CoroutineScope, PVM) abstract method added
Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createTabComponent(CoroutineScope, PVM, TVM) abstract method added
Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowTabsManagerKt.manageReviewToolwindowTabs(CoroutineScope, ToolWindow, ReviewToolwindowViewModel, ReviewTabsController, ReviewTabsComponentFactory, String) method removed
Added a tab viewmodel type
com.intellij.collaboration.ui.codereview.timeline.TimelineDiffComponentFactory.createDiffComponent(Project, EditorFactory, PatchHunk, Pair, Pair) method removed
Coroutine scope was added to track editor lifetime
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModelBase class removed
Incorrect EDT-reliant implementation removed

Java Plugin 2023.3

com.siyeh.ipp.base.Intention class removed
As a part of migration to new experimental ModCommand API, the class was removed completely. It's a part of implementation module and was never intended to be inherited by external plugins. Consider implementing LocalInspectionTool directly.
com.intellij.codeInsight.TailTypes class renamed to com.intellij.codeInsight.JavaTailTypes
Update code usages.

JavaScript Plugin 2023.3

com.intellij.lang.javascript.buildTools.npm.PackageJsonUtil.createPackageJson(PsiDirectory, boolean) method removed
Use com.intellij.lang.javascript.buildTools.npm.PackageJsonFileTemplate.create(PsiDirectory, boolean, Consumer<PsiFile>) instead.

External System Run Configuration 2023.3

Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.completionInfo replaced by suspend function CompletionTableInfo.collectCompletionInfo
Implement the new function to support async completion collecting.
Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.tableCompletionInfo replaced by suspend function CompletionTableInfo.collectTableCompletionInfo
Implement the new function to support async completion collecting.
Function com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField.getCompletionVariants replaced by property TextCompletionField.completionCollector
Implement the new function to support async completion collecting.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsFragmentsContainer class renamed to com.intellij.openapi.externalSystem.service.execution.configuration.fragments.SettingsEditorFragmentContainer
Use new run configuration fragment builders.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsEditorLabeledComponent class moved to package com.intellij.openapi.externalSystem.service.execution.configuration.fragments
Use the new run configuration fragment builders.
Parameter type of fragment builder functions from ExternalSystemRunConfigurationUtil file changed from C to (Disposable) -> C
Use the new run configuration fragment builders.
Fragment builder functions from ExternalSystemRunConfigurationUtil file moved to SettingsEditorFragmentBuilders and ExternalSystemRunConfigurationFragmentBuilders files
Use the new run configuration fragment builders.

Kotlin Plugin 2023.3

org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Companion class renamed to org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Handler
In order to not load additional code eagerly on action instantiation.

Markdown Plugin 2023.3

org.intellij.plugins.markdown.editor.images package removed
Use org.intellij.plugins.markdown.images from intellij.markdown.images module.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlBlockWithImage(Project, MarkdownImageData) method removed
Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlBlockWithImage instead.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlImageTag(Project, MarkdownImageData) method removed
Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlImageTag instead.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createImage(Project, String, String, String) method removed
Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createImage.
action.org.intellij.plugins.markdown.ui.actions.styling.InsertImageAction.insert.popup.text property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.browse.image.title property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.convert.to.html.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.description.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.height.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.path.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.screen.reader.text.panel.title property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.title.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.configure.image.dialog.width.label property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.
markdown.insert.image.dialog.title property removed from resource bundle messages.MarkdownBundle
Use org.intellij.plugins.markdown.images.MarkdownImagesBundle instead.

Python Plugin 2023.3

org.jetbrains.plugins.notebooks.jupyter.variables package removed
It is now part of separate Jupyter plugin.

Database Plugin 2023.3

com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>) method removed
Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

2023.2

IntelliJ Platform 2023.2

com.intellij.openapi.actionSystem.AnActionEvent.getInputEvent() method return type changed from InputEvent to @Nullable InputEvent
This may break source-compatibility with inheritors written in Kotlin.
Specify displayName/key for Configurable
To improve performance, provide either attribute for com.intellij.applicationConfigurable or com.intellij.projectConfigurable extension point (see ).
com.intellij.remote.RemoteProcess.setWindowSize(int, int) abstract method added
Should implement this method.

Database Plugin 2023.2

com.intellij.database.dataSource.DataSourceStorageCore class removed
Use com.intellij.database.dataSource.DataSourceStorage instead.
com.intellij.database.dataSource.DataSourceStorageUtil class removed
Use com.intellij.database.dataSource.DataSourceStorage instead.
com.intellij.database.dataSource.DataSourceStorageCore$Listener class renamed to com.intellij.database.dataSource.DataSourceStorage$Listener
Core class removed from hierarchy.
com.intellij.database.datagrid.CoreGrid(ModelIndex<Row>, ModelIndex<Column>) method parameter type changed from ModelIndex<Row> to int
ModelIndex class is used to reference data in the table model. Row indexes in the table model start with 0, even when the table is scrolled to page N>1. Parameter type was changed to int to indicate that it is an absolute index in the DB table.
com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>) abstract method added
Only recompilation is needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.

Maven Plugin 2023.2

org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenConsole, MavenProgressIndicator) method removed
Use resolveProject(Collection, MavenExplicitProfiles, ProgressIndicator, MavenSyncConsole, MavenConsole, MavenWorkspaceMap, boolean) instead.
org.jetbrains.idea.maven.server.MavenEmbedderWrapper.execute(VirtualFile, Collection, Collection, List) method removed
Use executeGoal(Collection, String, MavenProgressIndicator, MavenConsole) instead.

Apache Velocity Plugin 2023.2

com.intellij.velocity.psi.VtlVariable.getPsiType() method return type changed from com.intellij.psi.PsiType to com.intellij.velocity.psi.VtlVariableType
Use com.intellij.velocity.java.reference.VtlPsiType to wrap Java types to return result from implementations.

JSON Path Plugin 2023.2

Moved package com.intellij.jsonpath
It is now part of separate JSONPath plugin. Add dependency on com.intellij.jsonpath to use its API.

2023.1

IntelliJ Platform 2023.1

Apache Batik library unbundled
Please bundle and use echosvg library instead.
com.intellij.grazie.text.RuleGroup.Companion.getLITERALS() method removed
Replaced by constant field LITERALS.
com.intellij.ui.treeStructure.SimpleNode.doUpdate() method removed
It was replaced by doUpdate(PresentationData) which should now only modify the state of its parameter.
com.intellij.ide.ui.laf.darcula.ui.DarculaProgressBarUI.getFinishedColor() method removed
Use getFinishedColor(JComponent c) overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String) method removed
Use setNameAndTooltip(PresentationData, String, String) overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, String) method removed
Use setNameAndTooltip(PresentationData, String, String, String) overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, SimpleTextAttributes) method removed
Use setNameAndTooltip(PresentationData, String, String, SimpleTextAttributes) overload instead.
com.intellij.ssh.config.unified.SshConfigManager.register(boolean, String, String, String, String, AuthType, String, String, boolean, boolean, String, String) method parameter String removed
Local port is the part of the tunnel configuration, not SSH settings.
com.intellij.openapi.fileEditor.impl.HTMLEditorProvider.Companion.getAFFINITY_KEY() method removed
It was an accidentally exposed internal API. Please use HTMLEditorProvider.openEditor() methods, or implement your own file editor provider.
com.intellij.execution.RunnerAndConfigurationSettings.setFocusToolWindowBeforeRun(boolean) abstract method added
The interface is not intended to be implemented in external plugins.
com.intellij.execution.RunnerAndConfigurationSettings.getFocusToolWindowBeforeRun() abstract method added
The interface is not intended to be implemented in external plugins.

Database Plugin 2023.1

com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor class moved to package com.intellij.database.dataSource.url
The inner interface was moved to upper level.
com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor class moved to package com.intellij.database.dataSource.url.ui
UI extracted from TypesRegistry to TypesRegistryUi. Use com.intellij.database.urlParamEditorProvider extension point to register parameter descriptor, use com.intellij.database.urlParamEditorUiProvider extension point to register parameter editor descriptor.
com.intellij.database.datagrid.DataGrid.setAnonymousColumnName(String) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewAdditionalRowsCount(int) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewAllowMultilineColumnLabels(boolean) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewPaintHorizontalLines(boolean) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewShowRowNumbers(boolean) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewTransparentHeaderBackground(boolean) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.setResultViewVisibleRowCount(int) method removed
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.countSortedColumns() abstract method added
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.getAppearance() abstract method added
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.getHoveredRowBackground() abstract method added
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.datagrid.DataGrid.getStripeRowBackground() abstract method added
Only recompilation needed for classes that implement DataGrid and delegate calls to an actual DataGrid implementation.
com.intellij.database.plan.ExplainPlanProvider.createRawExplainTask(LocalDataSource dataSource, boolean analyze) abstract method added
Should implement this method.

JavaScript Plugin 2023.1

com.intellij.lang.javascript.JavascriptParserDefinition.createFile(FileViewProvider) method return type changed from com.intellij.lang.javascript.psi.JSFile to com.intellij.psi.PsiFile
Required to support Astro file format.

JavaScript Debugger Plugin 2023.1

org.jetbrains.wip.WipVm.initDomains() method return type changed from void to org.jetbrains.concurrency.Promise<*>
initDomains() is now awaitable to make WIP/CDP domains-dependent initialization logic possible.
org.jetbrains.wip.WipVm.ready() method return type changed from void to org.jetbrains.concurrency.Promise<*>
ready() is now awaitable to make WIP/CDP connection-dependent initialization logic possible.

JetBrains Gateway Plugin 2023.1

com.jetbrains.gateway.ssh.HighLevelHostAccessor.isPathPresentOnRemote(String, FileSystemItem) method parameter type changed from String to com.jetbrains.gateway.ssh.deploy.RemotePath
Using strings instead of paths breaks a lot of things when doing cross-platform development, and is generally not a good idea. Use com.jetbrains.gateway.ssh.HighLevelHostAccessor.makeRemotePath to prepare a path to pass into any of the methods requiring it.

PHP Plugin 2023.1

com.jetbrains.php.config.library.PhpIncludePathManager.getRoots() method removed
This class no longer handles all paths configured in non-runtime com.jetbrains.php.config.library.PhpLibraryRootProvider. Paths configured in Include Path Settings are available with PhpIncludePathManager.getIncludePaths(). All additional paths to use as roots for resolving via PhpIncludePathManager.getAllIncludedRoots().