Skip to content

Commit a9fb274

Browse files
committed
#1248 global rule management persistence broken
1 parent d49940a commit a9fb274

File tree

4 files changed

+37
-20
lines changed

4 files changed

+37
-20
lines changed

ReleaseNotes.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ Eclipse Update Site: <https://sourceforge.net/projects/pmd/files/pmd-eclipse/upd
77
## ????: 4.0.6.v????
88

99
* Updated PMD to 5.2.3 ([pull request #4](https://github.com/pmd/pmd-eclipse-plugin/pull/4))
10-
* Some performance improvments when using a BUNCH of projects with pmd settings ([pull request #3](https://github.com/pmd/pmd-eclipse-plugin/pull/3))
10+
* Some performance improvements when using a BUNCH of projects with pmd settings ([pull request #3](https://github.com/pmd/pmd-eclipse-plugin/pull/3))
11+
* Fixed global rule management persistence broken ([bug #1248](https://sourceforge.net/p/pmd/bugs/1248))
1112

1213

1314
## 05-November-2014: 4.0.5.v20141105-1906

net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/ui/preferences/br/PMDPreferencePage2.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package net.sourceforge.pmd.eclipse.ui.preferences.br;
22

33
import java.lang.reflect.InvocationTargetException;
4+
import java.util.Collections;
5+
import java.util.HashSet;
46
import java.util.List;
7+
import java.util.Set;
58

69
import net.sourceforge.pmd.PropertyDescriptor;
710
import net.sourceforge.pmd.PropertySource;
@@ -511,14 +514,19 @@ private void saveUIState() {
511514
PreferenceUIStore.instance.save();
512515
}
513516

514-
515517
private void storeActiveRules() {
516518

517519
List<Rule> chosenRules = tableManager.activeRules();
520+
Set<String> activeRules = new HashSet<String>();
518521
for (Rule rule : chosenRules) {
519-
preferences.isActive(rule.getName(), true);
522+
activeRules.add(rule.getName());
520523
}
521524

525+
// first remove all inactive rules
526+
preferences.setInactiveRuleNames(new HashSet<String>());
527+
// then override the active rules
528+
preferences.setActiveRuleNames(activeRules);
529+
522530
// System.out.println("Active rules: " + preferences.getActiveRuleNames());
523531
}
524532

net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.io.IOException;
77
import java.io.OutputStream;
88
import java.util.ArrayList;
9+
import java.util.Collection;
10+
import java.util.HashSet;
911
import java.util.Iterator;
1012
import java.util.List;
1113
import java.util.Set;
@@ -289,15 +291,21 @@ protected void removeSelectedItems() {
289291
int removeCount = ruleSelection.removeAllFrom(ruleSet);
290292
if (removeCount == 0) return;
291293

292-
removed(ruleSelection.allRules());
293-
294+
List<Rule> removedRules = ruleSelection.allRules();
295+
for (Rule r : removedRules) {
296+
preferences.isActive(r.getName(), false);
297+
}
298+
removed(removedRules);
299+
294300
setModified();
295301

296302
try {
297303
refresh();
298304
} catch (Throwable t) {
299305
treeViewer.setSelection(null);
300306
}
307+
308+
updateCheckControls();
301309
}
302310

303311
/**
@@ -936,11 +944,20 @@ private SelectionStats selectionRatioIn(Rule[] rules) {
936944
}
937945

938946
protected void setAllItemsActive() {
939-
for (Rule rule : ruleSet.getRules()) {
940-
isActive(rule.getName(), true);
941-
}
947+
Collection<Rule> rules = ruleSet.getRules();
948+
Rule[] rulesArray = rules.toArray(new Rule[rules.size()]);
949+
950+
Set<String> activeRules = new HashSet<String>();
951+
for (int i = 0; i < rulesArray.length; i++) {
952+
activeRules.add(rulesArray[i].getName());
953+
}
954+
955+
// remove first all inactive rules
956+
preferences.setInactiveRuleNames(new HashSet<String>());
957+
// then set all active rules
958+
preferences.setActiveRuleNames(activeRules);
942959

943-
treeViewer().setCheckedElements(ruleSet.getRules().toArray());
960+
treeViewer().setCheckedElements(rulesArray);
944961

945962
updateCheckControls();
946963
setModified();

net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/ui/views/rules/RuleEditorView.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.sourceforge.pmd.eclipse.ui.views.rules;
22

3+
import java.util.HashSet;
34
import java.util.List;
5+
import java.util.Set;
46

57
import net.sourceforge.pmd.PropertyDescriptor;
68
import net.sourceforge.pmd.PropertySource;
@@ -285,17 +287,6 @@ private void saveUIState() {
285287
PreferenceUIStore.instance.save();
286288
}
287289

288-
289-
private void storeActiveRules() {
290-
291-
List<Rule> chosenRules = tableManager.activeRules();
292-
for (Rule rule : chosenRules) {
293-
preferences.isActive(rule.getName(), true);
294-
}
295-
296-
System.out.println("Active rules: " + preferences.getActiveRuleNames());
297-
}
298-
299290
/**
300291
* Update the configured rule set
301292
* Update also all configured projects

0 commit comments

Comments
 (0)