@@ -14,6 +14,8 @@ public class PluginConfigurationManager {
1414
1515 private final Project project ;
1616
17+ private volatile PluginConfiguration cachedConfiguration ;
18+
1719 public PluginConfigurationManager (@ NotNull final Project project ) {
1820 this .project = project ;
1921 }
@@ -32,21 +34,27 @@ private void fireConfigurationChanged() {
3234 }
3335 }
3436
35- public void disableActiveConfiguration () {
37+ public synchronized void disableActiveConfiguration () {
3638 setCurrent (PluginConfigurationBuilder .from (getCurrent ())
3739 .withActiveLocationIds (new TreeSet <>())
3840 .build (), true );
3941 }
4042
4143 @ NotNull
42- public PluginConfiguration getCurrent () {
43- final PluginConfigurationBuilder defaultConfig = PluginConfigurationBuilder .defaultConfiguration (project );
44- return projectConfigurationState ()
45- .populate (defaultConfig )
44+ public synchronized PluginConfiguration getCurrent () {
45+ if (cachedConfiguration != null ) {
46+ return cachedConfiguration ;
47+ }
48+
49+ cachedConfiguration = projectConfigurationState ()
50+ .populate (PluginConfigurationBuilder .defaultConfiguration (project ))
4651 .build ();
52+ return cachedConfiguration ;
4753 }
4854
49- public void setCurrent (@ NotNull final PluginConfiguration updatedConfiguration , final boolean fireEvents ) {
55+ public synchronized void setCurrent (@ NotNull final PluginConfiguration updatedConfiguration , final boolean fireEvents ) {
56+ cachedConfiguration = null ;
57+
5058 projectConfigurationState ().setCurrentConfig (updatedConfiguration );
5159 if (fireEvents ) {
5260 fireConfigurationChanged ();
0 commit comments