19
19
import java .util .concurrent .locks .Lock ;
20
20
import java .util .concurrent .locks .ReentrantLock ;
21
21
22
+ import com .intellij .ide .plugins .IdeaPluginDescriptor ;
23
+ import com .intellij .ide .plugins .PluginManagerCore ;
22
24
import com .intellij .ide .util .PropertiesComponent ;
25
+ import com .intellij .openapi .application .ApplicationInfo ;
23
26
import com .intellij .openapi .application .ApplicationManager ;
24
27
import com .intellij .openapi .components .ProjectComponent ;
25
28
import com .intellij .openapi .diagnostic .Logger ;
29
+ import com .intellij .openapi .extensions .PluginId ;
26
30
import com .intellij .openapi .project .Project ;
27
31
import com .intellij .psi .codeStyle .CodeStyleManager ;
32
+ import com .intellij .serviceContainer .PlatformComponentManagerImpl ;
28
33
import org .picocontainer .MutablePicoContainer ;
29
34
30
35
import io .spring .format .formatter .intellij .codestyle .SpringCodeStyleManager ;
@@ -90,12 +95,12 @@ private void update(State state) {
90
95
}
91
96
if (state == State .ACTIVE && !(manager instanceof SpringCodeStyleManager )) {
92
97
logger .debug ("Enabling SpringCodeStyleManager" );
93
- reregisterComponent (new SpringCodeStyleManager (manager ));
98
+ registerCodeStyleManager (new SpringCodeStyleManager (manager ));
94
99
this .properties .setValue (ACTIVE_PROPERTY , true );
95
100
}
96
101
if (state == State .NOT_ACTIVE && (manager instanceof SpringCodeStyleManager )) {
97
102
logger .debug ("Disabling SpringCodeStyleManager" );
98
- reregisterComponent (((SpringCodeStyleManager ) manager ).getDelegate ());
103
+ registerCodeStyleManager (((SpringCodeStyleManager ) manager ).getDelegate ());
99
104
this .properties .setValue (ACTIVE_PROPERTY , false );
100
105
}
101
106
ApplicationManager .getApplication ().invokeLater (() -> this .statusIndicator .update (state ));
@@ -105,10 +110,17 @@ private void update(State state) {
105
110
}
106
111
}
107
112
108
- private void reregisterComponent (CodeStyleManager manager ) {
109
- MutablePicoContainer container = (MutablePicoContainer ) this .project .getPicoContainer ();
110
- container .unregisterComponent (CODE_STYLE_MANAGER_KEY );
111
- container .registerComponentInstance (CODE_STYLE_MANAGER_KEY , manager );
113
+ private void registerCodeStyleManager (CodeStyleManager manager ) {
114
+ if (ApplicationInfo .getInstance ().getBuild ().getBaselineVersion () >= 193 ) {
115
+ PlatformComponentManagerImpl platformComponentManager = (PlatformComponentManagerImpl ) this .project ;
116
+ IdeaPluginDescriptor plugin = PluginManagerCore .getPlugin (PluginId .getId ("spring-javaformat" ));
117
+ platformComponentManager .registerServiceInstance (CodeStyleManager .class , manager , plugin );
118
+ }
119
+ else {
120
+ MutablePicoContainer container = (MutablePicoContainer ) this .project .getPicoContainer ();
121
+ container .unregisterComponent (CODE_STYLE_MANAGER_KEY );
122
+ container .registerComponentInstance (CODE_STYLE_MANAGER_KEY , manager );
123
+ }
112
124
}
113
125
114
126
}
0 commit comments