mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
[webhelp] Change H1 to H2
This commit is contained in:
parent
097a81b5dd
commit
e5ecb6f04d
@ -2,7 +2,7 @@
|
||||
[](https://twitter.com/JBPlatform/)
|
||||
[](https://plugins.jetbrains.com/slack)
|
||||
|
||||
# IntelliJ Platform SDK Documentation
|
||||
## IntelliJ Platform SDK Documentation
|
||||
|
||||
Welcome to the repository for [IntelliJ Platform SDK Documentation](https://www.jetbrains.org/intellij/sdk/docs/) site.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Summary
|
||||
## Summary
|
||||
|
||||
* [Introduction](intro/welcome.md)
|
||||
* [The IntelliJ Platform](intro/intellij_platform.md)
|
||||
|
@ -5,7 +5,7 @@ title: Run Configurations
|
||||
|
||||
*Run Configurations* allow users to run a certain type of external processes from within the IDE, e.g. a script, an application, a server, etc. You can provide UI for the user to specify execution options, as well as an option to create a run configuration based on a specific location in the source code.
|
||||
|
||||
# Architectural Overview
|
||||
## Architectural Overview
|
||||
|
||||
Classes used to manipulate run configurations can be split into the following groups:
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Working with PlantUML
|
||||
## Working with PlantUML
|
||||
These are temporary instructions, pending a move of more [diagrams and utilities](https://github.com/JetBrains/intellij-community/tree/master/platform/docs) from the IntelliJ Platform codebase.
|
||||
|
||||
* If you are unfamiliar with PlantUML, review the [quick start](https://plantuml.com/starting) instructions.
|
||||
|
@ -6,9 +6,9 @@ This page lists notable additions and updates to the SDK documentation and code
|
||||
|
||||
See [Recently Updated](/recently_updated.md) ([RSS](https://github.com/JetBrains/intellij-sdk-docs/commits/master.atom)) for a detailed changelog.
|
||||
|
||||
# 2020
|
||||
## 2020
|
||||
|
||||
## June
|
||||
### June
|
||||
|
||||
Dynamic Plugins update
|
||||
: Added new sections _Code_ and _Troubleshooting_ to [Dynamic Plugins](/basics/plugin_structure/dynamic_plugins.md).
|
||||
@ -19,7 +19,7 @@ GitHub IntelliJ Platform Plugin Template
|
||||
Disposer & Disposable
|
||||
: Added [reference](/basics/disposers.md) discussing resource cleanup/management.
|
||||
|
||||
## May
|
||||
### May
|
||||
|
||||
Settings (Preferences)
|
||||
: Added [guide](/reference_guide/settings_guide.md) and [tutorial](/tutorials/settings_tutorial.md) on integrating with IDE Settings dialog.
|
||||
@ -27,17 +27,17 @@ Settings (Preferences)
|
||||
UI Inspector
|
||||
: Inspect Swing components and associated data (like `AnAction` for menu item) using [UI Inspector](/reference_guide/internal_actions/internal_ui_inspector.md).
|
||||
|
||||
## March
|
||||
### March
|
||||
|
||||
JCEF Support (_Experimental Feature_)
|
||||
: Allows [embedding](/reference_guide/jcef.md) Chromium-based browser in the IDE.
|
||||
|
||||
## February
|
||||
### February
|
||||
|
||||
All Code Samples converted to Gradle
|
||||
: [All samples](https://github.com/JetBrains/intellij-sdk-docs/tree/master/code_samples) now use the [recommended solution](/tutorials/build_system.md) of setting up plugin projects.
|
||||
|
||||
## January
|
||||
### January
|
||||
|
||||
Custom Language Support Tutorial converted to Gradle
|
||||
: The [corresponding tutorial](/tutorials/custom_language_support_tutorial.md) and [Testing a Custom Language Plugin](/tutorials/writing_tests_for_plugins.md) have been updated and enhanced as well.
|
||||
@ -45,9 +45,9 @@ Custom Language Support Tutorial converted to Gradle
|
||||
Targeting specific IDEs
|
||||
: [Part VIII - Product Specific](/basics/getting_started/plugin_compatibility.md) has been expanded massively, now also covering each IDE with its own dedicated page.
|
||||
|
||||
# 2019
|
||||
## 2019
|
||||
|
||||
## December
|
||||
### December
|
||||
|
||||
Dynamic Plugins support
|
||||
: Added starting point [Dynamic Plugins](/basics/plugin_structure/dynamic_plugins.md) for migrating plugins (IntelliJ Platform 2020.1 and later).
|
||||
@ -55,17 +55,17 @@ Dynamic Plugins support
|
||||
Plugin Components migration
|
||||
: Components being a legacy feature, the [updated page](/basics/plugin_structure/plugin_components.md) describes migrating them to modern replacement API.
|
||||
|
||||
## October
|
||||
### October
|
||||
|
||||
Part X - Plugin Repository moved
|
||||
: All contents have been moved to [JetBrains Marketplace](https://plugins.jetbrains.com/docs/marketplace/about-marketplace.html) documentation.
|
||||
|
||||
## July
|
||||
### July
|
||||
|
||||
New page: Optimizing Performance
|
||||
: [How to improve performance](/reference_guide/performance/performance.md) working with PSI, indexing, and avoiding UI freezes.
|
||||
|
||||
## May
|
||||
### May
|
||||
|
||||
New Page: Kotlin UI DSL
|
||||
: [Describes preferred way](/user_interface_components/kotlin_ui_dsl.md) of building UI/dialogs for IntelliJ Platform 2019.2 and later.
|
@ -9,17 +9,17 @@ See the note on how to document new problems on the main page reference_guide/ap
|
||||
|
||||
Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on how to verify compatibility.
|
||||
|
||||
# 2016.3
|
||||
## 2016.3
|
||||
|
||||
## Changes in IntelliJ Platform 2016.3
|
||||
### Changes in IntelliJ Platform 2016.3
|
||||
|
||||
[`com.intellij.openapi.application.ApplicationListener.afterWriteActionFinished`](upsource:///platform/core-api/src/com/intellij/openapi/application/ApplicationListener.java?nav=1481:1505:focused&line=45) abstract method added
|
||||
: Implement this method or extend [`com.intellij.openapi.application.ApplicationAdapter`](upsource:////platform/core-api/src/com/intellij/openapi/application/ApplicationAdapter.java) class instead of implementing the interface.
|
||||
|
||||
|
||||
# 2016.2
|
||||
## 2016.2
|
||||
|
||||
## Changes in IntelliJ Platform 2016.2
|
||||
### Changes in IntelliJ Platform 2016.2
|
||||
|
||||
`com.intellij.util.net.HttpConfigurable.PROXY_LOGIN` field removed
|
||||
: Use [`com.intellij.util.net.HttpConfigurable.getProxyLogin()`](upsource:///platform/platform-api/src/com/intellij/util/net/HttpConfigurable.java) instead.
|
||||
|
@ -11,9 +11,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
|
||||
> **NOTE** Changes from API marked with `org.jetbrains.annotations.ApiStatus.@Experimental/ScheduledForRemoval` are not listed here, as incompatible changes are to be expected.
|
||||
|
||||
# 2017.3
|
||||
## 2017.3
|
||||
|
||||
## Changes in IntelliJ Platform 2017.3
|
||||
### Changes in IntelliJ Platform 2017.3
|
||||
|
||||
`com.intellij.internal.statistic.AbstractApplicationUsagesCollector` class removed
|
||||
: This class isn't supposed to be used in regular plugins. Override `com.intellij.internal.statistic.AbstractProjectsUsagesCollector` instead if you're developing an IDE with its own statistics services.
|
||||
@ -36,7 +36,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator.addLibraryDependency` abstract method added
|
||||
: You need to implement this method and add the logic for updating the configuration in your build system.
|
||||
|
||||
## Changes in DataGrip and Database Tools Plugin 2017.3
|
||||
### Changes in DataGrip and Database Tools Plugin 2017.3
|
||||
|
||||
`com.intellij.database.dataSource.DataSourceManager` class removed
|
||||
: Use `com.intellij.database.psi.DbPsiFacade` instead.
|
||||
@ -53,7 +53,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.database.view.DatabaseView.getTreeBuilder` method removed
|
||||
: Use `LangDataKeys.PSI_ELEMENT_ARRAY.get(event)` to get Database view selection.
|
||||
|
||||
## Changes in PhpStorm and PHP Plugin 2017.3
|
||||
### Changes in PhpStorm and PHP Plugin 2017.3
|
||||
|
||||
`com.jetbrains.php.lang.psi.elements.Function.getReturnType()` method return type changed from `PsiElement` to `PhpReturnType`
|
||||
: Before method had been returning a `com.jetbrains.php.lang.psi.elements.ClassReference`. Now method returns `com.jetbrains.php.lang.psi.elements.PhpReturnType`. Method `ReturnType.getClassReference()` can be used if you need just a `ClassReference`. If you need to get the `PhpType`, use `com.jetbrains.php.lang.psi.elements.Function.getReturnType.getType()` method instead.
|
@ -15,9 +15,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
|
||||
> **NOTE** Changes from API marked with `org.jetbrains.annotations.ApiStatus.@Experimental/ScheduledForRemoval` are not listed here, as incompatible changes are to be expected.
|
||||
|
||||
# 2018.3
|
||||
## 2018.3
|
||||
|
||||
## Changes in IntelliJ Platform 2018.3
|
||||
### Changes in IntelliJ Platform 2018.3
|
||||
|
||||
`com.intellij.openapi.externalSystem.action.ExternalSystemAction.isEnabled` method `AnActionEvent` parameter marked `@NotNull`
|
||||
: This may break source-compatibility with inheritors written in Kotlin if they declare parameter type as nullable.
|
||||
@ -44,9 +44,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
: Use `com.intellij.psi.meta.PsiMetaData.getDependencies` instead.
|
||||
|
||||
|
||||
# 2018.2
|
||||
## 2018.2
|
||||
|
||||
## Changes in IntelliJ Platform 2018.2
|
||||
### Changes in IntelliJ Platform 2018.2
|
||||
|
||||
`com.intellij.util.Query.forEach` method parameter type changed from `Processor<Result>` to `Processor<? super Result>`
|
||||
: Update `Query` implementations accordingly.
|
||||
@ -73,9 +73,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
: Update `InterpreterFactory` implementations accordingly.
|
||||
|
||||
|
||||
# 2018.1
|
||||
## 2018.1
|
||||
|
||||
## Changes in IntelliJ Platform 2018.1
|
||||
### Changes in IntelliJ Platform 2018.1
|
||||
|
||||
`com.google.common.base.Objects.ToStringHelper` class removed
|
||||
: Use `com.google.common.base.MoreObjects.ToStringHelper` instead.
|
||||
@ -95,7 +95,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.ide.structureView.newStructureView.StructureViewComponent.getTreeBuilder` method removed
|
||||
: Use `queueUpdate` and `getTree` instead.
|
||||
|
||||
## Changes in PhpStorm and PHP Plugin 2018.1
|
||||
### Changes in PhpStorm and PHP Plugin 2018.1
|
||||
|
||||
`com.jetbrains.php.lang.documentation.phpdoc.parser.PhpDocElementTypes.DOC_COMMENT` field type changed from `com.intellij.psi.tree.ILazyParseableElementType` to `com.jetbrains.php.lang.documentation.phpdoc.psi.stubs.PhpDocCommentElementType`
|
||||
: In most of the cases, it's enough to recompile the code. It may also be needed to check that the code doesn't rely on the field's type.
|
||||
|
@ -64,9 +64,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
|
||||
> **NOTE** Changes from API marked with `org.jetbrains.annotations.ApiStatus.@Experimental/ScheduledForRemoval` are not listed here, as incompatible changes are to be expected.
|
||||
|
||||
# 2019.3
|
||||
## 2019.3
|
||||
|
||||
## Changes in IntelliJ Platform 2019.3
|
||||
### Changes in IntelliJ Platform 2019.3
|
||||
|
||||
`com.intellij.codeInsight.TailType.getLocalCodeStyleSettings(Editor, int)` method removed
|
||||
: Use `com.intellij.psi.codeStyle.CommonCodeStyleSettings.getLocalCodeStyleSettings(Editor, int)` instead.
|
||||
@ -107,7 +107,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.remoteServer.configuration.deployment.DeploymentConfigurationManager.createAndRunConfiguration(ServerType, RemoteServer)` method removed
|
||||
: Use `DeploymentConfigurationManager.createAndRunConfiguration(ServerType, RemoteServer, DeploymentSourceType)` instead.
|
||||
|
||||
### VCS
|
||||
#### VCS
|
||||
`com.intellij.openapi.vcs.changes.ui.ChangesListView.UNVERSIONED_FILES_DATA_KEY` field removed
|
||||
: Use `com.intellij.openapi.vcs.changes.ui.ChangesListView.UNVERSIONED_FILE_PATHS_DATA_KEY` instead.
|
||||
|
||||
@ -123,7 +123,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.openapi.vcs.VcsVFSListener.myExceptions` field removed
|
||||
: Use `com.intellij.openapi.vcs.VcsVFSListener.myProcessor.acquireExceptions()` or `com.intellij.openapi.vcs.VcsVFSListener.myProcessor.addException(VcsException exception)` instead.
|
||||
|
||||
### Test Framework
|
||||
#### Test Framework
|
||||
`com.intellij.testFramework.PlatformTestUtil.registerExtension(ExtensionsArea, T, Disposable)` method removed
|
||||
: Use `com.intellij.testFramework.ServiceContainerUtil#registerExtension(BaseExtensionPointName, T, Disposable)` instead.
|
||||
|
||||
@ -133,17 +133,17 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor.getModuleType()` method removed
|
||||
: Use `com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor.getModuleTypeId()` instead (see `com.intellij.openapi.module.ModuleTypeId`).
|
||||
|
||||
## Changes in Java Plugin 2019.3
|
||||
### Changes in Java Plugin 2019.3
|
||||
|
||||
`com.intellij.codeInspection.magicConstant.MagicCompletionContributor.getAllowedValues(PsiElement)` method return type changed from `com.intellij.codeInspection.magicConstant.MagicConstantInspection.AllowedValues` to `com.intellij.codeInspection.magicConstant.MagicConstantUtils.AllowedValues`
|
||||
: Use new type instead.
|
||||
|
||||
## Changes in Groovy Plugin 2019.3
|
||||
### Changes in Groovy Plugin 2019.3
|
||||
|
||||
`org.jetbrains.plugins.groovy.extensions.GroovyScriptTypeDetector(GroovyScriptType, String[])` constructor removed
|
||||
: Use constructor `GroovyScriptTypeDetector(GroovyScriptType)` instead, and `com.intellij.fileType` to register additional extensions.
|
||||
|
||||
## Changes in Cucumber Plugin 2019.3
|
||||
### Changes in Cucumber Plugin 2019.3
|
||||
|
||||
`org.jetbrains.plugins.cucumber.javascript.CucumberJavaScriptStepDefinitionCreator#createStepDefinition(GherkinStep, PsiFile)` method removed
|
||||
: Use `org.jetbrains.plugins.cucumber.javascript.CucumberJavaScriptStepDefinitionCreator#createStepDefinition(GherkinStep, PsiFile, boolean)` instead.
|
||||
@ -157,7 +157,7 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`org.jetbrains.plugins.cucumber.CucumberJvmExtensionPoint#getGlues()` method removed
|
||||
: Java specific method was moved to CucumberJava implementation.
|
||||
|
||||
## Changes in DataGrip and Database Tools Plugin 2019.3
|
||||
### Changes in DataGrip and Database Tools Plugin 2019.3
|
||||
|
||||
`com.intellij.sql.dialects.mssql.MssqlDialect` class renamed to `com.intellij.sql.dialects.mssql.MsDialect`
|
||||
: Do not use SQL dialect classes directly.
|
||||
@ -168,12 +168,12 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
`com.intellij.sql.dialects.postgres.PostgresDialect` class renamed to `com.intellij.sql.dialects.postgres.PgDialect`
|
||||
: Do not use SQL dialect classes directly.
|
||||
|
||||
## Changes in RubyMine and Ruby Plugin 2019.3
|
||||
### Changes in RubyMine and Ruby Plugin 2019.3
|
||||
|
||||
`org.jetbrains.plugins.ruby.ruby.codeInsight.types.RubyTypeProvider.createTypeBySymbolFromProviders(Symbol symbol, Context context)` method parameter `Context` removed
|
||||
: This was done as part of [`RUBY-24760`](https://youtrack.jetbrains.com/issue/RUBY-24760) in order to move to new Context-less approach.
|
||||
|
||||
## Changes in PyCharm and Python Plugin 2019.3
|
||||
### Changes in PyCharm and Python Plugin 2019.3
|
||||
|
||||
`com.jetbrains.python.inspections.PythonVisitorFilter` class moved to package `com.jetbrains.python.psi`
|
||||
|
||||
@ -196,9 +196,9 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
: Use `com.jetbrains.python.PyPsiBundle` instead.
|
||||
|
||||
|
||||
# 2019.2
|
||||
## 2019.2
|
||||
|
||||
## Changes in IntelliJ Platform 2019.2
|
||||
### Changes in IntelliJ Platform 2019.2
|
||||
Constructor injection referring to extension points not supported
|
||||
: Obtain reference to extension points via `(Project)ExtensionPointName.findExtension()` in your constructor instead.
|
||||
|
||||
@ -249,9 +249,9 @@ Recompile your code to pick up the new signature.
|
||||
: Implement method in `RestartableLexer` implementations.
|
||||
|
||||
|
||||
# 2019.1
|
||||
## 2019.1
|
||||
|
||||
## Changes in IntelliJ Platform 2019.1
|
||||
### Changes in IntelliJ Platform 2019.1
|
||||
|
||||
`kotlinx.coroutines.experimental` package removed
|
||||
: Bundled Kotlin library is updated to 1.3 so the plugins must [migrate](https://blog.jetbrains.com/kotlin/2018/09/kotlin-1-3-rc-is-here-migrate-your-coroutines/) to the stable versions of coroutines.
|
||||
@ -274,12 +274,12 @@ Recompile your code to pick up the new signature.
|
||||
`com.intellij.openapi.util.KeyedExtensionCollector.getExtensions()` method marked final
|
||||
: Remove custom implementation.
|
||||
|
||||
## Changes in DataGrip and Database Tools Plugin 2019.1
|
||||
### Changes in DataGrip and Database Tools Plugin 2019.1
|
||||
|
||||
`com.intellij.sql.psi.SqlTokens.SQL_IDENT` field type changed from `com.intellij.sql.psi.impl.SqlTokenType` to `com.intellij.sql.psi.SqlTokenType`
|
||||
: In most of the cases, it's enough to recompile the code. It may also be needed to check that the code doesn't rely on the field's type.
|
||||
|
||||
## Changes in Kotlin Plugin API 1.3
|
||||
### Changes in Kotlin Plugin API 1.3
|
||||
|
||||
`org.jetbrains.kotlin.KtNodeTypes.BOOLEAN_CONSTANT` field type changed from `org.jetbrains.kotlin.KtNodeType` to `com.intellij.psi.tree.IElementType`
|
||||
: Field type has been generalized. In most of the cases, it's enough to recompile the code of the plugin.
|
||||
|
@ -64,17 +64,17 @@ Please see [Incompatible API Changes](/reference_guide/api_changes_list.md) on h
|
||||
|
||||
> **NOTE** Changes from API marked with `org.jetbrains.annotations.ApiStatus.@Experimental/ScheduledForRemoval` are not listed here, as incompatible changes are to be expected.
|
||||
|
||||
# 2020.3
|
||||
## 2020.3
|
||||
|
||||
## Changes in IntelliJ Platform 2020.3
|
||||
### Changes in IntelliJ Platform 2020.3
|
||||
|
||||
`com.intellij.openapi.application.NonBlockingReadAction.finishOnUiThread` method parameter type changed from ``Consumer<T>`` to ``Consumer<? super T>``
|
||||
: This may break source-compatibility with inheritors written in Kotlin.
|
||||
|
||||
|
||||
# 2020.2
|
||||
## 2020.2
|
||||
|
||||
## Changes in IntelliJ Platform 2020.2
|
||||
### Changes in IntelliJ Platform 2020.2
|
||||
|
||||
Support for JavaFX deprecated
|
||||
: Plugins should migrate to [JCEF](/reference_guide/jcef.md). Alternatively, add an explicit dependency on [JavaFX Runtime for Plugins](https://plugins.jetbrains.com/plugin/14250-javafx-runtime-for-plugins).
|
||||
@ -143,7 +143,7 @@ Support for JavaFX deprecated
|
||||
: Please remove plugin code supporting Java 13 language level features. IntelliJ IDEA supports preview features of the latest Java release as well as one upcoming release (if available).
|
||||
|
||||
|
||||
### VCS
|
||||
#### VCS
|
||||
|
||||
`com.intellij.diff.util.DiffUserDataKeysEx.REVISION_INFO` field removed
|
||||
: Use `com.intellij.diff.DiffVcsDataKeys.REVISION_INFO` instead.
|
||||
@ -151,7 +151,7 @@ Support for JavaFX deprecated
|
||||
`com.intellij.codeInsight.actions.FormatChangedTextUtil.getChangedElements(Project, Change[], Function)` method removed
|
||||
: Use `com.intellij.codeInsight.actions.VcsFacadeImpl.getVcsInstance().getChangedElements(...)` instead.
|
||||
|
||||
## Changes in GitHub Plugin 2020.2
|
||||
### Changes in GitHub Plugin 2020.2
|
||||
|
||||
`org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue(ProgressManager)` constructor removed
|
||||
: Required for more tight control of task scheduling. Use `org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue.Companion#create(ProgressManager, (ProgressIndicator) -> T)` instead of subclassing
|
||||
@ -165,13 +165,13 @@ Support for JavaFX deprecated
|
||||
`org.jetbrains.plugins.github.util.GithubGitHelper.getPossibleRemoteUrlCoordinates()` method removed
|
||||
: Use `org.jetbrains.plugins.github.util.GHProjectRepositoriesManager.getKnownRepositories()` instead
|
||||
|
||||
## Changes in Groovy Plugin 2020.2
|
||||
### Changes in Groovy Plugin 2020.2
|
||||
|
||||
`org.jetbrains.plugins.groovy.formatter.AlignmentProvider.addPair` method parameter type changed from `Boolean` to `boolean`
|
||||
: Please adjust/recompile the code.
|
||||
|
||||
|
||||
## Changes in Java EE Plugins 2020.2
|
||||
### Changes in Java EE Plugins 2020.2
|
||||
|
||||
Java EE plugins split
|
||||
: Plugin `com.intellij.javaee` _Java EE: EJB, JPA, Servlets_ has been split to:
|
||||
@ -182,22 +182,22 @@ Java EE plugins split
|
||||
- `com.intellij.javaee.web` _Java EE: Web/Servlets_
|
||||
|
||||
|
||||
## Changes in JavaScript Plugin 2020.2
|
||||
### Changes in JavaScript Plugin 2020.2
|
||||
|
||||
`com.intellij.lang.javascript.linter.jslint` package removed
|
||||
: JSLint functionality has been unbundled and moved to a separate plugin. [Issue](https://youtrack.jetbrains.com/issue/WEB-44511)
|
||||
|
||||
|
||||
## Changes in PhpStorm and PHP Plugin 2020.2
|
||||
### Changes in PhpStorm and PHP Plugin 2020.2
|
||||
|
||||
Added Union Types Support
|
||||
: Please see [PhpStorm Breaking Changes](/products/phpstorm/php_open_api_breaking_changes.md).
|
||||
|
||||
|
||||
|
||||
# 2020.1
|
||||
## 2020.1
|
||||
|
||||
## Changes in IntelliJ Platform 2020.1
|
||||
### Changes in IntelliJ Platform 2020.1
|
||||
|
||||
`com.intellij.compiler.ant` package removed
|
||||
: 'Generate Ant build' functionality is removed from the IDE. Delete the code extending this or replace it with a dependency on the `generate-ant` plugin.
|
||||
@ -267,7 +267,7 @@ Images module functionality (package `org.intellij.images.*`) extracted to plugi
|
||||
}
|
||||
```
|
||||
|
||||
## Changes in Python Plugin 2020.1
|
||||
### Changes in Python Plugin 2020.1
|
||||
|
||||
`com.jetbrains.python.psi.PyCallExpression.PyMarkedCallee` class removed
|
||||
: Use `com.jetbrains.python.psi.types.PyCallableType` instead.
|
||||
|
@ -3,9 +3,9 @@ title: Notable Changes in IntelliJ Platform and Plugins API 2018.*
|
||||
---
|
||||
<!-- Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
# 2018.3
|
||||
## 2018.3
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2018.3
|
||||
### Notable Changes in IntelliJ Platform 2018.3
|
||||
|
||||
ASM Library 7.0
|
||||
: Updated to 7.0 [Issue](https://youtrack.jetbrains.com/issue/IDEA-191331).
|
||||
@ -16,9 +16,9 @@ Extendable Registry keys
|
||||
Editor: content between text lines
|
||||
: Ability to add arbitrary content (preview, debugger information, etc.). [Issue](https://youtrack.jetbrains.com/issue/IDEA-183815)
|
||||
|
||||
# 2018.2
|
||||
## 2018.2
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2018.2
|
||||
### Notable Changes in IntelliJ Platform 2018.2
|
||||
|
||||
_Run Anything_ (**Double CTRL**)
|
||||
: Allows executing predefined activities using a popup with smart completion, e.g. [Gradle Tasks](https://www.jetbrains.com/help/idea/gradle.html#gradle_tasks), executing Run Configurations, ... see [`RunAnythingProvider`](upsource:///platform/lang-impl/src/com/intellij/ide/actions/runAnything/activity/RunAnythingProvider.java)
|
||||
|
@ -3,9 +3,9 @@ title: Notable Changes in IntelliJ Platform and Plugins API 2019.*
|
||||
---
|
||||
<!-- Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
# 2019.3
|
||||
## 2019.3
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2019.3
|
||||
### Notable Changes in IntelliJ Platform 2019.3
|
||||
|
||||
`PlatformTestCase` renamed to `HeavyPlatformTestCase`
|
||||
: Now reflects its "heavy test" characteristics (see [Light and Heavy Tests](/basics/testing_plugins/light_and_heavy_tests.md)).
|
||||
@ -25,16 +25,16 @@ Symbol completion in plain text editor (VCS Commit Message)
|
||||
User-customizable date/time formatting
|
||||
: Use `com.intellij.util.text.JBDateFormat#getFormatter()` to use configured format from `Settings | Appearance & Behavior | System Settings | Date Formats`.
|
||||
|
||||
## Notable Changes in IntelliJ IDEA
|
||||
### Notable Changes in IntelliJ IDEA
|
||||
|
||||
Unbundled plugins
|
||||
: Several plugins (Heroku integration, RubyMotion support, Java Applets Support) for no longer actively maintained technology have been moved to a [separate repository](https://github.com/JetBrains/intellij-obsolete-plugins/).
|
||||
If your plugin depends on them, users will need to install them from the [JetBrains Plugins Repository](https://plugins.jetbrains.com).
|
||||
|
||||
|
||||
# 2019.2
|
||||
## 2019.2
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2019.2
|
||||
### Notable Changes in IntelliJ Platform 2019.2
|
||||
|
||||
Quickfixes for file-level notifications
|
||||
: Consistent with other quickfixes, the menu now shows names of fixes, not names of problems themselves. [Issue](https://youtrack.jetbrains.com/issue/IDEA-216731)
|
||||
@ -76,7 +76,7 @@ New API for Editor Inlay Hints
|
||||
: Returns dedicated message when invalid SDK path was chosen (e.g., JRE instead of JDK).
|
||||
|
||||
|
||||
## Notable Changes in IntelliJ IDEA
|
||||
### Notable Changes in IntelliJ IDEA
|
||||
|
||||
Java functionality extracted as plugin
|
||||
: If your plugin depends on Java, it must be specified now, please see [blog post](https://blog.jetbrains.com/platform/2019/06/java-functionality-extracted-as-a-plugin/) for details.
|
||||
@ -86,9 +86,9 @@ Unbundled plugins
|
||||
|
||||
|
||||
|
||||
# 2019.1
|
||||
## 2019.1
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2019.1
|
||||
### Notable Changes in IntelliJ Platform 2019.1
|
||||
|
||||
`com.intellij.testFramework.InspectionTestCase` changed to light test
|
||||
: Use dedicated `ProjectDescriptor` or rollback project setup changes in `tearDown()` (see [Light and Heavy Tests](/basics/testing_plugins/light_and_heavy_tests.md)).
|
||||
|
@ -5,9 +5,9 @@ title: Notable Changes in IntelliJ Platform and Plugins API 2020.*
|
||||
|
||||
We've published our roadmap for the IntelliJ Platform for 2020: [Part I](https://blog.jetbrains.com/idea/2019/12/intellij-platform-roadmap-for-2020/) [Part II](https://blog.jetbrains.com/idea/2020/01/intellij-based-ide-features-roadmap-for-2020/)
|
||||
|
||||
# 2020.2
|
||||
## 2020.2
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2020.2
|
||||
### Notable Changes in IntelliJ Platform 2020.2
|
||||
|
||||
Constructor Injection in `Configurable` forbidden
|
||||
: Please obtain necessary components only when needed (logged as ERROR now).
|
||||
@ -52,9 +52,9 @@ Adopting builder-style API of the new `AnnotationHolder.newAnnotation()` API.
|
||||
ASM Library 8.0.1
|
||||
: Updated from 7.0.1.
|
||||
|
||||
# 2020.1
|
||||
## 2020.1
|
||||
|
||||
## Notable Changes in IntelliJ Platform 2020.1
|
||||
### Notable Changes in IntelliJ Platform 2020.1
|
||||
Dynamic Plugins
|
||||
: [Compatible plugins](/basics/plugin_structure/dynamic_plugins.md) can be installed, updated and uninstalled without requiring IDE restart.
|
||||
|
||||
@ -86,7 +86,7 @@ To support **Open or Import**, a plugin must provide [`ProjectOpenProcessor`](up
|
||||
If there are several matching processors, a simple choice dialog is shown.
|
||||
If additional manual configuration is necessary, a modal dialog can be shown in `doOpenProject()` - however, it is highly recommended performing all setup automatically (like Maven and Gradle plugins do).
|
||||
|
||||
## Notable Changes in IntelliJ IDEA
|
||||
### Notable Changes in IntelliJ IDEA
|
||||
|
||||
EOL for JetBrains TFS Plugin
|
||||
: Please use [Azure DevOps](https://plugins.jetbrains.com/plugin/7981-azure-devops) plugin instead, see [blog post](https://blog.jetbrains.com/idea/2020/01/end-of-support-for-tfs-2014-and-older/) for more details.
|
||||
|
@ -3,14 +3,8 @@ title: External System Integration
|
||||
---
|
||||
<!-- Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
# Purpose
|
||||
|
||||
This page provides high-level overview of *External System* sub-system.
|
||||
|
||||
# Rationale
|
||||
|
||||
There are multiple project management systems ([Apache Maven](https://maven.apache.org/), [Gradle](https://www.gradle.org/), [sbt](https://www.scala-sbt.org/) etc) and it's good to support them at the IDE. Luckily, they all provide a similar set of facilities from the integration point of view:
|
||||
|
||||
* build IDE project from external system config (`pom.xml`, `build.gradle` etc);
|
||||
* provide a list of available tasks;
|
||||
* allow to execute a particular task;
|
||||
@ -18,9 +12,9 @@ There are multiple project management systems ([Apache Maven](https://maven.apac
|
||||
|
||||
That means that we can separate external system-specific logic and general IDE processing. *'External system'* sub-system provides simple API for wrapping external system and extensible IDE-specific processing logic.
|
||||
|
||||
# Project Management
|
||||
## Project Management
|
||||
|
||||
## Project Data Domain
|
||||
### Project Data Domain
|
||||
|
||||
**General**
|
||||
External system wrapper is required to be able to build project info on the basis of the given external system config. That information is built using in terms of [`DataNode`](upsource:///platform/external-system-api/src/com/intellij/openapi/externalSystem/model/DataNode.java), [`Key`](upsource:///platform/external-system-api/src/com/intellij/openapi/externalSystem/model/Key.java) and [`ExternalEntityData`](upsource:///platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/ExternalEntityData.java).
|
||||
@ -37,7 +31,7 @@ For example, simple one-module project might look as below:
|
||||
**Consequence**
|
||||
The IDE provides a set of built-in *Key*s and *ExternalEntityData*s but any external system integration or third-party plugin developer might enhance project data by defining her own *Key* and *ExternalEntityData* and storing them at a child of appropriate *DataNode*.
|
||||
|
||||
## Managing Project Data
|
||||
### Managing Project Data
|
||||
|
||||
We need to process project data is built on external system config basis. Here comes [`ProjectDataService`](upsource:///platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/manage/ProjectDataService.java). It is a strategy which knows how to manage particular *ExternalEntityData*. For example, when we want to import a project from external model, we can start by the top level *DataNode* which references project info and then import its data using corresponding service.
|
||||
|
||||
@ -45,7 +39,7 @@ Custom services can be defined via *'externalProjectDataService'* extension.
|
||||
|
||||
The good thing is that we can separate project parsing and management here. That means that a set of *DataNode*, *Key* and *ProjectDataServices* can be introduced for particular technology and then every external system integration can build corresponding data if necessary using it.
|
||||
|
||||
## Importing from External Model
|
||||
### Importing from External Model
|
||||
|
||||
IntelliJ platform provides standard API for that. Namely, [`ProjectImportBuilder`](upsource:///java/idea-ui/src/com/intellij/projectImport/ProjectImportBuilder.java) and [`ProjectImportProvider`](upsource:///java/idea-ui/src/com/intellij/projectImport/ProjectImportProvider.java). There are two classes built on *template method* pattern - [`AbstractExternalProjectImportBuilder`](upsource:///java/idea-ui/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java) and [`AbstractExternalProjectImportProvider`](upsource:///java/idea-ui/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportProvider.java). Concrete implementations are registered in `plugin.xml`.
|
||||
|
||||
@ -80,7 +74,7 @@ Then register the instance with `ExternalSystemProjectTracker` to start tracking
|
||||
Since 2020.1, the icon for reload notification can be specified per external system. Implement `ExternalSystemIconProvider` and register via `com.intellij.externalIconProvider` extension point in `plugin.xml`. Alternatively, set `reloadIcon` field external system implements `ExternalSystemIconProvider` directly.
|
||||
|
||||
|
||||
# Settings
|
||||
## Settings
|
||||
|
||||
The general idea is that all external system settings controls are represented by implementations of [`ExternalSystemSettingsControl`](upsource:///platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemSettingsControl.java) interface. There are also external system project-local settings and global external system settings. So, basically particular external system settings UI looks as below:
|
||||
|
||||
|
@ -9,15 +9,15 @@ A popular plugin using Spring API is [hybris integration](https://plugins.jetbra
|
||||
|
||||
To develop plugins you will need to use _IntelliJ IDEA Ultimate Edition_ version 13.1 or higher.
|
||||
|
||||
### Setting up IntelliJ Platform SDK
|
||||
## Setting up IntelliJ Platform SDK
|
||||
|
||||
> **NOTE** This applies to [Plugin DevKit](/basics/getting_started/using_dev_kit.md) projects only. For [Gradle](/tutorials/build_system.md) projects, simply add dependency to bundled Spring plugin `com.intellij.spring`.
|
||||
|
||||
##### New SDK
|
||||
### New SDK
|
||||
Please create an IntelliJ Platform SDK to include all minimum required files.
|
||||
Then add `$IDEA_HOME$/plugins/Spring/lib/spring.jar` to its _classpath_ (_not_ to your plugin module's dependencies).
|
||||
|
||||
##### Existing SDK
|
||||
### Existing SDK
|
||||
Follow these steps to modify existing IntelliJ Platform SDK:
|
||||
|
||||
* add to _classpath_ (_not_ to your plugin module's dependencies)
|
||||
@ -61,62 +61,62 @@ _2016.2_ See `com.intellij.spring.SpringLibraryUtil` to obtain information about
|
||||
|
||||
### Spring Model
|
||||
|
||||
##### Obtain Spring Model by File, PsiElement, ...
|
||||
#### Obtain Spring Model by File, PsiElement, ...
|
||||
See `SpringManager#getSpringModel(s)...` and `com.intellij.spring.model.utils.SpringModelUtils`.
|
||||
|
||||
##### Contribute Implicit Model
|
||||
#### Contribute Implicit Model
|
||||
See `com.intellij.spring.SpringModelProvider` to provide implicit filesets (e.g. provided by another framework in specific configuration file).
|
||||
|
||||
_Version 15_
|
||||
See `com.intellij.spring.facet.SpringAutodetectedFileSet` for a convenient base class. Please note that autodetected filesets cannot be edited/modified by users in Spring facet.
|
||||
|
||||
##### Customize Implicit Models Configuration
|
||||
#### Customize Implicit Models Configuration
|
||||
_2017.1_ See `com.intellij.spring.facet.SpringFileSetEditorCustomization` to customize presentation and/or add extra settings/actions for specific autodetected filesets.
|
||||
|
||||
##### Contribute Implicit Beans
|
||||
#### Contribute Implicit Beans
|
||||
See `com.intellij.spring.model.jam.CustomComponentsDiscoverer` or `com.intellij.spring.model.SpringImplicitBeansProviderBase` to provide implicit (framework-specific) beans (e.g. "servletContext" by Spring MVC).
|
||||
|
||||
_Version 15_
|
||||
`CustomComponentsDiscoverer` has been split into `com.intellij.spring.model.custom.CustomLocalComponentsDiscoverer` and `com.intellij.spring.model.custom.CustomModuleComponentsDiscoverer` respectively.
|
||||
|
||||
##### Contribute Custom Bean Scope
|
||||
#### Contribute Custom Bean Scope
|
||||
_Version 14_
|
||||
See `com.intellij.spring.model.scope.SpringCustomBeanScope` to provide custom (e.g. framework specific) bean scopes.
|
||||
|
||||
##### Obtain/Create Spring Profiles
|
||||
#### Obtain/Create Spring Profiles
|
||||
_Version 14.1_
|
||||
`com.intellij.spring.profiles.SpringProfilesFactory`
|
||||
|
||||
### Beans
|
||||
|
||||
##### Search for Bean by Name
|
||||
#### Search for Bean by Name
|
||||
`com.intellij.spring.CommonSpringModel#findBeanByName`
|
||||
|
||||
_Version 14_: `com.intellij.spring.model.utils.SpringModelSearchers#findBean`
|
||||
|
||||
##### Search for Beans by Type
|
||||
#### Search for Beans by Type
|
||||
Choose one of `com.intellij.spring.CommonSpringModel#findBeansByPsiClassXXX` variants (please note deprecated methods).
|
||||
|
||||
_Version 14_: `com.intellij.spring.model.utils.SpringModelSearchers#findBeans`
|
||||
|
||||
_Version 16_: note deprecation of `SpringModelSearchParameters.BeanClass#withInheritors(GlobalSearchScope)`
|
||||
|
||||
##### Find out if Bean with Given Name/Type Exists
|
||||
#### Find out if Bean with Given Name/Type Exists
|
||||
_Version 14_: `com.intellij.spring.model.utils.SpringModelSearchers#doesBeanExist` (please note deprecated methods)
|
||||
|
||||
##### Mark Bean as Infrastructure Bean
|
||||
#### Mark Bean as Infrastructure Bean
|
||||
_Version 14_: implement `SpringInfrastructureBean`, such beans obtain special icon and can be filtered in various places in UI.
|
||||
|
||||
### XML Configuration
|
||||
All support for XML-based Spring configuration files is provided via [DOM-API](xml_dom_api.md).
|
||||
|
||||
##### Add Support for Additional Spring Namespace
|
||||
#### Add Support for Additional Spring Namespace
|
||||
See EP `com.intellij.spring.dom.SpringCustomNamespaces`, registered namespace-key must match the one registered with your DOM elements via `@Namespace`.
|
||||
Register available elements via standard `DomExtender<Beans>` EP or `com.intellij.spring.dom.SpringCustomNamespaces#registerExtensions` (Version 14).
|
||||
|
||||
Please pay attention to `getModelVersion` and `getStubVersion` (see javadoc).
|
||||
|
||||
##### Add Reference to Spring Bean in DomElement
|
||||
#### Add Reference to Spring Bean in DomElement
|
||||
Use the following template:
|
||||
|
||||
```java
|
||||
@ -128,7 +128,7 @@ GenericAttributeValue<SpringBeanPointer> getMyAttributeName();
|
||||
|
||||
### Code Configuration
|
||||
|
||||
##### Add Reference to Spring Bean in JamElement
|
||||
#### Add Reference to Spring Bean in JamElement
|
||||
_Version 14_
|
||||
|
||||
```java
|
||||
@ -137,7 +137,7 @@ JamStringAttributeMeta.Single<SpringBeanPointer> ATTRIBUTE_META =
|
||||
new SpringBeanReferenceJamConverter("fqn.to.required.class"));
|
||||
```
|
||||
|
||||
##### @AliasFor
|
||||
#### @AliasFor
|
||||
_Version 16_
|
||||
See `com.intellij.spring.model.aliasFor.SpringAliasForUtils` to obtain corresponding `@AliasFor` JAM.
|
||||
|
||||
@ -147,21 +147,21 @@ See `com.intellij.spring.spi.SpringSpiManager`.
|
||||
|
||||
### IDE Features
|
||||
|
||||
##### Add Inspections to Spring Validator
|
||||
#### Add Inspections to Spring Validator
|
||||
Add additional inspections (e.g. for custom namespace) to Spring Validator (*Settings|Compiler|Validation*) via EP `com.intellij.spring.SpringInspectionsRegistry$Contributor`.
|
||||
|
||||
##### Add Additional Files to Spring Validator
|
||||
#### Add Additional Files to Spring Validator
|
||||
_Version 14.1_
|
||||
Additional files to be processed by inspections registered with Spring Validator (e.g. specific `.properties` configuration files) can be registered via `com.intellij.spring.SpringInspectionsRegistry$AdditionalFilesContributor`
|
||||
|
||||
##### Configure Spring Support for Other Frameworks
|
||||
#### Configure Spring Support for Other Frameworks
|
||||
Use `com.intellij.spring.facet.SpringConfigurator` to provide "automatic" configuration when Spring facet is added via framework wizard.
|
||||
|
||||
##### UI/Presentation
|
||||
#### UI/Presentation
|
||||
Please do not reference bean icons from `SpringApiIcons` directly, but use `SpringPresentationProvider` to re-use unified icon/bean name. See `SpringBeansPsiElementCellRenderer` for popup/list renderer.
|
||||
|
||||
|
||||
# Spring Boot
|
||||
## Spring Boot
|
||||
_2018.1_
|
||||
|
||||
Spring Boot API allows to extend/access Spring Boot specific support in the IDE.
|
||||
|
@ -3,21 +3,21 @@ title: Messaging Infrastructure
|
||||
---
|
||||
<!-- Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -->
|
||||
|
||||
# Purpose
|
||||
## Purpose
|
||||
|
||||
The purpose of this document is to introduce the messaging infrastructure available in the IntelliJ Platform to developers and plugin writers. It is intended to answer why, when and how to use it.
|
||||
|
||||
# Rationale
|
||||
## Rationale
|
||||
|
||||
So, what is messaging in the IntelliJ Platform and why do we need it? Basically, its implementation of
|
||||
[Observer pattern](https://en.wikipedia.org/wiki/Observer_pattern)
|
||||
that provides additional features like _broadcasting on hierarchy_ and special _nested events_ processing (_nested event_ here is a situation when new event is fired (directly or indirectly) from the callback of another event).
|
||||
|
||||
# Design
|
||||
## Design
|
||||
|
||||
Here are the main components of the messaging API.
|
||||
|
||||
## Topic
|
||||
### Topic
|
||||
|
||||
This class serves as an endpoint at the messaging infrastructure. I.e. clients are allowed to subscribe to the topic within particular bus and to send messages to particular topic within particular bus.
|
||||
|
||||
@ -28,13 +28,13 @@ This class serves as an endpoint at the messaging infrastructure. I.e. clients a
|
||||
* *listener class* that is a business interface for particular topic.
|
||||
Subscribers register implementation of this interface at the messaging infrastructure and publishers may later retrieve object that conforms (IS-A) to it and call any method defined there. Messaging infrastructure takes care on dispatching that to all subscribers of the topic, i.e. the same method with the same arguments will be called on the registered callbacks;
|
||||
|
||||
## Message Bus
|
||||
### Message Bus
|
||||
|
||||
Is the core of the messaging system. Is used at the following scenarios:
|
||||
|
||||

|
||||
|
||||
## Connection
|
||||
### Connection
|
||||
|
||||
Manages all subscriptions for particular client within particular bus.
|
||||
|
||||
@ -52,7 +52,7 @@ Also it can be plugged to standard semi-automatic disposing
|
||||
[`Disposable`](upsource:///platform/util/src/com/intellij/openapi/Disposable.java)
|
||||
);
|
||||
|
||||
## Putting Altogether
|
||||
### Putting Altogether
|
||||
|
||||
*Defining business interface and topic*
|
||||
|
||||
@ -119,7 +119,7 @@ public void doChange(Context context) {
|
||||
etc.
|
||||
So, it's possible to subscribe to them in order to receive information about the processing;
|
||||
|
||||
# Broadcasting
|
||||
## Broadcasting
|
||||
|
||||
Message buses can be organised into hierarchies. Moreover, the *IntelliJ Platform* has them already:
|
||||
|
||||
@ -157,7 +157,7 @@ Broadcast configuration is defined per-topic. Following options are available:
|
||||
|
||||
* _TO\_PARENT_;
|
||||
|
||||
# Nested Messages
|
||||
## Nested Messages
|
||||
|
||||
_Nested message_ is a message sent (directly or indirectly) during another message processing.
|
||||
The IntelliJ Platform's Messaging infrastructure guarantees that all messages sent to particular topic will be delivered at the sending order.
|
||||
@ -180,9 +180,9 @@ Let's see what happens if someone sends a message to the target topic:
|
||||
|
||||
* _handler1_ receives _message2_;
|
||||
|
||||
# Tips'n'tricks
|
||||
## Tips'n'tricks
|
||||
|
||||
## Relief Listeners Management
|
||||
### Relief Listeners Management
|
||||
|
||||
Messaging infrastructure is very light-weight, so, it's possible to reuse it at local sub-systems in order to relief
|
||||
[Observers](https://en.wikipedia.org/wiki/Observer_pattern) construction. Let's see what is necessary to do then:
|
||||
@ -201,7 +201,7 @@ Let's compare that with a manual implementation:
|
||||
|
||||
4. Manually iterate all listeners and call target callback in all places where new event is fired;
|
||||
|
||||
## Avoid Shared Data Modification from Subscribers
|
||||
### Avoid Shared Data Modification from Subscribers
|
||||
|
||||
We had a problem in a situation when two subscribers tried to modify the same document
|
||||
([IDEA-71701](https://youtrack.jetbrains.com/issue/IDEA-71701)).
|
||||
|
Loading…
x
Reference in New Issue
Block a user