51 Commits

Author SHA1 Message Date
Daniil Ovchinnikov
823e985f18 API dumps: re-generate dumps
GitOrigin-RevId: b5cec844cbfe3313723404f7a85b590c25350b41
2024-10-04 21:20:21 +00:00
Vladimir Krivosheev
a9e7930abe bazel - build lang-impl
GitOrigin-RevId: c4c4dce20bd6e4046644f95f6e7b3f437c51668d
2024-09-27 13:47:17 +00:00
Daniil Ovchinnikov
fec8c0f7ad IJPL-453 add and use assertErrorLogged because assertThrows does not work anymore
GitOrigin-RevId: 958cc887d7fee9ed3fd19eff7655ca30b75ee6eb
2024-09-25 19:42:36 +00:00
Vladimir Krivosheev
a1210118c0 bazel - fix JPMS, exports and internal
GitOrigin-RevId: 3dc80a9ee01e1900c0cebc24b2d08f04f93ddeff
2024-09-25 19:05:37 +00:00
Vladimir Krivosheev
4eb9b78b78 use bazel to build platform-impl
GitOrigin-RevId: b5bbc75323a08c7674777e512dcfd988ceb4461f
2024-09-22 17:01:28 +00:00
Vladimir Krivosheev
834bd75254 run jps-to-bazel by Bazel, compile platform using Bazel
GitOrigin-RevId: 3774d5adc404b02036f70b7cc35c9e60fdb5d84c
2024-09-21 00:54:17 +00:00
Artem.Bukhonov
b95156e1dd RDCT-1642 Reuse withStoredTemporaryContext in ServiceInstanceInitializer.createInstance()
GitOrigin-RevId: 3c77b18e629e5943526a35190bedb87858961910
2024-09-04 21:27:15 +00:00
Daniil Ovchinnikov
bb350f9546 IJPL-160526 make service registration resilient, log instead of throwing
GitOrigin-RevId: 5c43e5681b2aa90914ee64c93fdfe2d4c2125d64
2024-09-02 23:26:07 +00:00
Daniil Ovchinnikov
4566535f4c InstanceContainerTest: cover more cases
GitOrigin-RevId: 5d5e66ee89cec2a238fa2cf62e5babc1aff9bdae
2024-09-02 23:26:07 +00:00
Konstantin Nisht
27aea8f03f [platform] IJPL-158752: Annotate custom elements with IntelliJContextElement
GitOrigin-RevId: 6cdd7a239fd6fe271daa58d7d7463be7effba141
2024-08-08 17:14:45 +00:00
Konstantin Nisht
2bb2a5606f [platform] Do not leak the context of outer component managers into inner initializers
GitOrigin-RevId: c39ba64170a06cade3ae837c2a1106578ef1b345
2024-07-24 16:41:57 +00:00
Daniil Ovchinnikov
0b7cabf35e simplify InstanceContainerImpl.getInstanceHolder(java.lang.Class<?>, boolean)
GitOrigin-RevId: fb4a2c9fad85998ade7921a5f4206be2a68902c8
2024-07-04 18:04:41 +00:00
Daniil Ovchinnikov
e4813b382a fix InstanceContainerImpl.toString
GitOrigin-RevId: b1f9fe66ed12c3d3ba762c4d0d00f4388aaaced0
2024-07-04 18:04:41 +00:00
Daniil Ovchinnikov
e6a09b33b9 IJPL-157548 clean container cache on plugin unloading
GitOrigin-RevId: 771e8d6753f55540e93be222c91dd679106d0398
2024-07-04 18:04:41 +00:00
Daniil Ovchinnikov
63058d231c IJPL-149498 rename namedChildScope -> childScope
GitOrigin-RevId: 8eb7b8706902a812aa9e6267e73b9884a9e127fe
2024-05-08 19:45:10 +00:00
Daniil Ovchinnikov
c5dd365ae8 InstanceAlreadyRegisteredException: include which instance was trying to register over which in message
GitOrigin-RevId: 5dfef0a17cf666825130e41c6e77e45712bbfd90
2024-04-16 12:00:20 +00:00
Vladimir Krivosheev
df955dfadd findConstructor - do not eat error
otherwise, we got unclear errors like:

```
Caused by: com.intellij.platform.instanceContainer.instantiation.InstantiationException: Class 'class com.intellij.util.xml.impl.DomManagerImpl' does not define any of supported signatures '[(Project)void, (Project,CoroutineScope)void, (CoroutineScope)void, ()void]'
```

GitOrigin-RevId: 2c42dd3c990121fd21b26c348a85537587503928
2024-04-10 18:12:00 +00:00
Daniil Ovchinnikov
748008ae87 ApiCheckTest: use api-dump.txt instead of apiDump.txt
GitOrigin-RevId: d195bea932a0a26d192aea94c4f551c166ab3d1f
2024-04-08 16:18:00 +00:00
Daniil Ovchinnikov
ba0cff5179 IJPL-516 cache instances by Class as a key
The entry point is still `String` -> `InstanceHolder` map.
Once an instance is requested by `Class`, it's cached in a separate map,
which allows to leverage faster `Object`'s `equals` and `hashCode`.

The cache was originally removed in 7e8387fa11b5a6008264e18d9f1bd04fd67a45df.

GitOrigin-RevId: d24e4a7bba364f88bb591faa41ce0d5798aec50b
2024-01-26 18:38:16 +00:00
Daniil Ovchinnikov
aea932dfb5 dump API of intellij.platform.instanceContainer
GitOrigin-RevId: 65473e087304fa644c5e90a93d34fa8f30653074
2024-01-26 16:00:57 +00:00
Sergey Pak
785b36061d process only non-light services during settings migration (related to IDEA-343362)
GitOrigin-RevId: 6f1d214838a98292db406ea4c9666bd7c93499cc
2024-01-21 23:33:45 +00:00
Daniil Ovchinnikov
0ef9cc4d76 intellij.platform.util.coroutines: don't export from intellij.platform.util
GitOrigin-RevId: ad2881c844d9f1496464b166cee8a3f8ab0f79e7
2023-12-13 13:21:33 +00:00
Vladimir Lagunov
ed1c578f8e Cleanup: Inline and remove deprecated com.intellij.util.attachAsChildTo
GitOrigin-RevId: 943ddfd1cf9d62f28a3a82d16d6e36eab25c7da5
2023-11-25 01:50:52 +00:00
Vladimir Lagunov
9bf287cd4c Cleanup: Inline and remove deprecated com.intellij.util.namedChildScope
GitOrigin-RevId: e17c839d5d4944d8d511265424c34637d8d366a1
2023-11-25 01:50:52 +00:00
Vladimir Krivosheev
dddc3a2ebe IJ-CR-119007 mark InstantiationException as internal, fix import
GitOrigin-RevId: 19ff0e5fc794510b9bdcd376a6ddebe6cca1e82f
2023-11-14 19:03:17 +01:00
Vladimir Krivosheev
555e0a3368 IJPL-335 disable full-blown constructor injection by default
GitOrigin-RevId: 34cda3c9867d8d3cc55c86cfa72f74331e347cd0
2023-11-14 08:30:18 +01:00
Daniil Ovchinnikov
0035cf7070 IJPL-160 use intersection container & plugin scopes as parent of a light service
GitOrigin-RevId: 0fe171f208a6dac3a6acbd9ce5e3ee2a24f568bd
2023-11-01 22:43:48 +00:00
Daniil Ovchinnikov
d31159687d IJPL-160 allow nullable registration scope in ScopeHolder.intersectScope
GitOrigin-RevId: 721fab8a0ddad208e4e2450d87cf60437db519e0
2023-11-01 22:43:44 +00:00
Daniil Ovchinnikov
7a8c2214de IJPL-160 initialize services in NonCancellable context
GitOrigin-RevId: 6c88a5b0ea9f98182d799b70078f9bc1fce9172f
2023-11-01 12:00:50 +00:00
Daniil Ovchinnikov
efa29f2d0a IJPL-160 extract InstanceContainerImpl.use
GitOrigin-RevId: bad5bf576fbc62cc52b37f6f341f5262223b80d2
2023-11-01 12:00:48 +00:00
Daniil Ovchinnikov
16c9d01043 IDEA-336125 use LOG.trace in InstanceRegistrarImpl
Trace because debug is actually turned on in tests, and it may cause the degradation.

GitOrigin-RevId: 7a0a79ef0ad2571b97786a4c2720f6d3750356d5
2023-10-31 12:21:42 +00:00
Daniil Ovchinnikov
8821b25ded IJPL-160 don't log warnings during service registration which happen because of xinclude in XMLs
GitOrigin-RevId: 1cf367fa22b9c75f7986e83a5bdc1e8885792587
2023-10-31 00:42:59 +00:00
Daniil Ovchinnikov
5069eb8448 IJPL-160 clarify docs
GitOrigin-RevId: 38011e9b915f2aff42e08f51846b5298ccc678a8
2023-10-30 20:36:29 +00:00
Vladimir Krivosheev
f46fef5a1d IJPL-160 avoid invokeWithArguments if no args
GitOrigin-RevId: ad7fccf394a13d05051a1be4eed651a749c3d398
2023-10-29 23:09:45 +00:00
Vladimir Krivosheev
a00a29112f IJPL-160 reduce GC - do not create an empty array list if no parameters
GitOrigin-RevId: 9820d148b8a4a68f391f9d0029fc6d0bc832eb9b
2023-10-29 20:11:11 +00:00
Vladimir Krivosheev
45c4c1cf40 IJPL-160 constructor injection: log error if constructor injection is used
GitOrigin-RevId: baf2c055a8dfb9c506b608bf9e84e946f8e8b216
2023-10-29 20:10:47 +00:00
Vladimir Krivosheev
793a44aaab IJPL-310 drop constructor injection support for extensions
GitOrigin-RevId: ebcce85461d3c673398eef21b47c389a0334d3a1
2023-10-29 20:10:30 +00:00
Vadim Salavatov
88e848a924 IDEA-336143 IJPL-160 fix unloading of dynamic service instances
GitOrigin-RevId: 38a601d323e54ac450fe9336f4c60e5424d03dde
2023-10-26 20:41:59 +00:00
Daniil Ovchinnikov
5a87be8d04 IJPL-160 add brief module documentation with links to main classes
GitOrigin-RevId: c9c9d12c8575296edbd1048fccf2fc38fe9139b7
2023-10-20 21:43:51 +00:00
Daniil Ovchinnikov
4b84037753 IJPL-160 use lazy LOG.trace
GitOrigin-RevId: e71747bc94a73c2e98d6e3fc92fffd2cbc5aa201
2023-10-20 21:43:50 +00:00
Daniil Ovchinnikov
7801a2e515 IJPL-160 document instantiate
GitOrigin-RevId: c20f2da243faaabedb345dacaa727a8c33b7ea29
2023-10-20 21:43:49 +00:00
Daniil Ovchinnikov
9cca506b01 IJPL-160 document DependencyResolver.resolveDependency
GitOrigin-RevId: c38ca2a456ff57b9823fc9dba409bf3359b04147
2023-10-20 21:43:48 +00:00
Daniil Ovchinnikov
54e9886a86 IJPL-160 rename ConstructorAndParameterType -> UnsatisfiedConstructorParameterType
GitOrigin-RevId: fdd373534c0c7aa37554334109e269f556106531
2023-10-20 21:43:46 +00:00
Daniil Ovchinnikov
328667b566 IJPL-160 simplify instantiation, don't create unnecessary coroutine for each instance
GitOrigin-RevId: 9b2059844090360f9cc239d7e51d1fd8e3d23ce4
2023-10-20 18:31:53 +00:00
Daniil Ovchinnikov
faa3d8f88c IJPL-160 publish waiter before launching the coroutine
To make it available for cycle check in case when service is requested in the same thread.

GitOrigin-RevId: 1f68562502cac0180ee60f0ed6aaa3e0446a8cc2
2023-10-20 18:31:50 +00:00
Daniil Ovchinnikov
d92f9c12d4 IJPL-160 use caller context during service initialization
This solves the following problem:
- modal progress is started;
- service is requested while modal progress is shown;
- service initialization uses `invokeAndWait` is constructor or `loadState`;
- `invokeAndWait` cannot complete because it happens in context of container, which does not have the modality state.

This change purposefully leaks caller context into initialization coroutine to mimic old behavior.
This leak can be removed once `invokeAndWait` is forbidden during initialization.

GitOrigin-RevId: 1216a445d74c9dafc553b0b7b86bf736625aaf74
2023-10-20 18:31:46 +00:00
Daniil Ovchinnikov
c17384080b IJPL-160 rename InstanceHolder.getInstanceInCallerDispatcher -> getInstanceInCallerContext
GitOrigin-RevId: 3e44b591a907c19494a83df0995e41cd70b496ee
2023-10-19 13:36:15 +00:00
Daniil Ovchinnikov
bcca0ece8e IJPL-160 pass parent scope and additional context and let ComponentManagerImpl create its own scope by itself
GitOrigin-RevId: 21f4f2060157f78e2d194855619b104e575e7897
2023-10-11 00:19:51 +00:00
Daniil Ovchinnikov
e11dec83ba IJPL-160 add and implement InstanceContainer
GitOrigin-RevId: 960637258638195c7cd4ae551f3bed7a81da8c80
2023-10-05 22:12:38 +00:00
Daniil Ovchinnikov
cc92b41758 IJPL-160 use named scope for debug-ability in ScopeHolder
GitOrigin-RevId: 0785ecb28210f8415c5b556de69dab1473fb912c
2023-10-04 18:22:19 +00:00