Skip to content

Commit c2b8459

Browse files
committed
Add cache of current config for perf (#679)
1 parent e10d08a commit c2b8459

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/main/java/org/infernus/idea/checkstyle/config/PluginConfigurationManager.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)