diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java
index 55c7e5a4a5..5b9237f6cb 100644
--- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java
+++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/preferences/impl/PreferencesManagerImpl.java
@@ -42,6 +42,7 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -151,11 +152,7 @@ class PreferencesManagerImpl implements IPreferencesManager {
* @see net.sourceforge.pmd.runtime.preferences.IPreferencesManager#setRuleSet(net.sourceforge.pmd.RuleSet)
*/
public void setRuleSet(RuleSet newRuleSet) {
- Set newRules = getNewRules(newRuleSet);
- if (!newRules.isEmpty()) {
- addNewRulesToConfiguredProjects(newRules);
- }
-
+ updateConfiguredProjects(newRuleSet);
ruleSet = newRuleSet;
storeRuleSetInStateLocation(ruleSet);
}
@@ -356,12 +353,13 @@ class PreferencesManagerImpl implements IPreferencesManager {
}
/**
- * Add new rules to already configured projects
+ * Add new rules to already configured projects, and update the exclude/include patterns
*/
- private void addNewRulesToConfiguredProjects(Set addedRules) {
- log.debug("Add new rules to configured projects");
+ private void updateConfiguredProjects(RuleSet updatedRuleSet) {
+ log.debug("Updating configured projects");
RuleSet addedRuleSet = new RuleSet();
- Iterator ruleIterator = addedRules.iterator();
+ Set newRules = getNewRules(updatedRuleSet);
+ Iterator ruleIterator = newRules.iterator();
while (ruleIterator.hasNext()) {
Rule rule = (Rule) ruleIterator.next();
addedRuleSet.addRule(rule);
@@ -377,6 +375,9 @@ class PreferencesManagerImpl implements IPreferencesManager {
RuleSet projectRuleSet = properties.getProjectRuleSet();
if (projectRuleSet != null) {
projectRuleSet.addRuleSet(addedRuleSet);
+ projectRuleSet.setExcludePatterns(new ArrayList(updatedRuleSet.getExcludePatterns()));
+ projectRuleSet.setIncludePatterns(new ArrayList(updatedRuleSet.getIncludePatterns()));
+ properties.setProjectRuleSet(projectRuleSet);
properties.sync();
}
} catch (PropertiesException e) {
diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java
index 4f1e9c6377..612c7b3fa2 100644
--- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java
+++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesManagerImpl.java
@@ -318,13 +318,16 @@ public class ProjectPropertiesManagerImpl implements IProjectPropertiesManager {
bean.setIncludeDerivedFiles(projectProperties.isIncludeDerivedFiles());
if (!projectProperties.isRuleSetStoredInProject()) {
+ final RuleSet ruleSet = projectProperties.getProjectRuleSet();
final List rules = new ArrayList();
- final Iterator i = projectProperties.getProjectRuleSet().getRules().iterator();
+ final Iterator i = ruleSet.getRules().iterator();
while (i.hasNext()) {
final Rule rule = (Rule) i.next();
rules.add(new RuleSpecTO(rule.getName(), rule.getRuleSetName())); // NOPMD:AvoidInstantiatingObjectInLoop
}
bean.setRules((RuleSpecTO[]) rules.toArray(new RuleSpecTO[rules.size()]));
+ bean.setExcludePatterns((String[])ruleSet.getExcludePatterns().toArray(new String[ruleSet.getExcludePatterns().size()]));
+ bean.setIncludePatterns((String[])ruleSet.getIncludePatterns().toArray(new String[ruleSet.getIncludePatterns().size()]));
}
return bean;
diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java
index 5d51aeec68..a9b7232cd6 100644
--- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java
+++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/ProjectPropertiesTO.java
@@ -63,6 +63,8 @@ package net.sourceforge.pmd.runtime.properties.impl;
*/
public class ProjectPropertiesTO {
private RuleSpecTO[] rules;
+ private String[] excludePatterns;
+ private String[] includePatterns;
private String workingSetName;
private boolean ruleSetStoredInProject;
private String ruleSetFile;
@@ -86,6 +88,40 @@ public class ProjectPropertiesTO {
}
/**
+ * @return an array of String objects for exclude patterns
+ * for the current project.
+ */
+ public String[] getExcludePatterns() {
+ return excludePatterns;
+ }
+
+ /**
+ * Set the exclude patterns for a project
+ * @param excludePatterns an array of String objects for exclude patterns
+ * for the current project.
+ */
+ public void setExcludePatterns(String[] excludePatterns) {
+ this.excludePatterns = excludePatterns;
+ }
+
+ /**
+ * @return an array of String objects for include patterns
+ * for the current project.
+ */
+ public String[] getIncludePatterns() {
+ return includePatterns;
+ }
+
+ /**
+ * Set the include patterns for a project
+ * @param includePatterns an array of String objects for include patterns
+ * for the current project.
+ */
+ public void setIncludePatterns(String[] includePatterns) {
+ this.includePatterns = includePatterns;
+ }
+
+ /**
* @return ruleSetStoredInProject tells whether the project use a ruleset
* stored in the project or the global plugin ruleset.
*/
diff --git a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml
index c1b9f47be6..f4b5240308 100644
--- a/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml
+++ b/pmd-eclipse-plugin/pmd-eclipse-runtime/src/net/sourceforge/pmd/runtime/properties/impl/mapping.xml
@@ -27,6 +27,22 @@
+
+
+
+
+
+
+
+