1919import java .util .concurrent .locks .Lock ;
2020import java .util .concurrent .locks .ReentrantLock ;
2121
22+ import com .intellij .ide .plugins .IdeaPluginDescriptor ;
23+ import com .intellij .ide .plugins .PluginManagerCore ;
2224import com .intellij .ide .util .PropertiesComponent ;
25+ import com .intellij .openapi .application .ApplicationInfo ;
2326import com .intellij .openapi .application .ApplicationManager ;
2427import com .intellij .openapi .components .ProjectComponent ;
2528import com .intellij .openapi .diagnostic .Logger ;
29+ import com .intellij .openapi .extensions .PluginId ;
2630import com .intellij .openapi .project .Project ;
2731import com .intellij .psi .codeStyle .CodeStyleManager ;
32+ import com .intellij .serviceContainer .PlatformComponentManagerImpl ;
2833import org .picocontainer .MutablePicoContainer ;
2934
3035import io .spring .format .formatter .intellij .codestyle .SpringCodeStyleManager ;
@@ -90,12 +95,12 @@ private void update(State state) {
9095 }
9196 if (state == State .ACTIVE && !(manager instanceof SpringCodeStyleManager )) {
9297 logger .debug ("Enabling SpringCodeStyleManager" );
93- reregisterComponent (new SpringCodeStyleManager (manager ));
98+ registerCodeStyleManager (new SpringCodeStyleManager (manager ));
9499 this .properties .setValue (ACTIVE_PROPERTY , true );
95100 }
96101 if (state == State .NOT_ACTIVE && (manager instanceof SpringCodeStyleManager )) {
97102 logger .debug ("Disabling SpringCodeStyleManager" );
98- reregisterComponent (((SpringCodeStyleManager ) manager ).getDelegate ());
103+ registerCodeStyleManager (((SpringCodeStyleManager ) manager ).getDelegate ());
99104 this .properties .setValue (ACTIVE_PROPERTY , false );
100105 }
101106 ApplicationManager .getApplication ().invokeLater (() -> this .statusIndicator .update (state ));
@@ -105,10 +110,17 @@ private void update(State state) {
105110 }
106111 }
107112
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+ }
112124 }
113125
114126}
0 commit comments