From efebb1ef6b23b69b236d2efcebde411c917629e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Mart=C3=ADn=20Sotuyo=20Dodero?= <jmsotuyo@monits.com>
Date: Thu, 8 Dec 2016 18:04:37 -0300
Subject: [PATCH] Unify AvoidConstantsInterface and ConstantsInInterface

 - We stick to ConstantsInInterface since it covers all scenarios the other one did,
    and allows greater configuration.
 - The existing test cases were already covered, so we can safely drop them.
---
 .../pmd/RuleSetFactoryCompatibility.java      |  3 ++
 .../main/resources/rulesets/java/design.xml   | 36 -------------------
 .../java/rule/design/DesignRulesTest.java     |  1 -
 .../design/xml/AvoidConstantsInterface.xml    | 27 --------------
 4 files changed, 3 insertions(+), 64 deletions(-)
 delete mode 100644 pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/AvoidConstantsInterface.xml

diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java
index 3d89c3bb32..ce3a04b8e8 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactoryCompatibility.java
@@ -61,6 +61,9 @@ public class RuleSetFactoryCompatibility {
         addFilterRuleMoved("java", "basic", "unnecessary", "UselessOperationOnImmutable");
         addFilterRuleMoved("java", "basic", "unnecessary", "UnusedNullCheckInEquals");
         addFilterRuleMoved("java", "basic", "unnecessary", "UselessParentheses");
+        
+        // PMD 5.6.0
+        addFilterRuleRenamed("java", "design", "AvoidConstantsInterface", "ConstantsInInterface");
     }
 
     void addFilterRuleRenamed(String language, String ruleset, String oldName, String newName) {
diff --git a/pmd-java/src/main/resources/rulesets/java/design.xml b/pmd-java/src/main/resources/rulesets/java/design.xml
index 82ca3a6e1a..bbd03b854e 100644
--- a/pmd-java/src/main/resources/rulesets/java/design.xml
+++ b/pmd-java/src/main/resources/rulesets/java/design.xml
@@ -1431,42 +1431,6 @@ public Foo() {
       </example>
     </rule>
 
-<rule name="AvoidConstantsInterface"
-   		language="java"
-      since="3.5"
-      message="An Interface should be used only to model a behaviour; consider converting this to a class."
-      class="net.sourceforge.pmd.lang.rule.XPathRule"
-      externalInfoUrl="${pmd.website.baseurl}/rules/java/design.html#AvoidConstantsInterface">
-      <description>
-An interface should be used only to characterize the external behaviour of an
-implementing class: using an interface as a container of constants is a poor 
-usage pattern and not recommended.
-      </description>
-      <priority>3</priority>
-      <properties>
-        <property name="xpath">
-        <value>
-    <![CDATA[
-//ClassOrInterfaceDeclaration[@Interface="true"]
-    [
-     count(.//MethodDeclaration)=0
-     and
-     count(.//FieldDeclaration)>0
-    ]
-    ]]>
-        </value>
-        </property>
-      </properties>
-      <example>
-    <![CDATA[
-public interface ConstantsInterface {
-   public static final int CONSTANT1=0;
-   public static final String CONSTANT2="1";
-}
-    ]]>
-      </example>
-    </rule>
-
   <rule name="UnsynchronizedStaticDateFormatter"
       since="3.6"
       message="Static DateFormatter objects should be accessed in a synchronized manner"
diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java
index 872c9e31a8..32574ff23f 100644
--- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java
+++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/DesignRulesTest.java
@@ -19,7 +19,6 @@ public class DesignRulesTest extends SimpleAggregatorTst {
         addRule(RULESET, "AbstractClassWithoutAnyMethod");
         addRule(RULESET, "AccessorClassGeneration");
         addRule(RULESET, "AssignmentToNonFinalStatic");
-        addRule(RULESET, "AvoidConstantsInterface");
         addRule(RULESET, "AvoidDeeplyNestedIfStmts");
         addRule(RULESET, "AvoidInstanceofChecksInCatchClause");
         addRule(RULESET, "AvoidProtectedFieldInFinalClass");
diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/AvoidConstantsInterface.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/AvoidConstantsInterface.xml
deleted file mode 100644
index 6a8874b672..0000000000
--- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/design/xml/AvoidConstantsInterface.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<test-data>
-    <test-code>
-        <description><![CDATA[
-clear rule violation
-     ]]></description>
-        <expected-problems>1</expected-problems>
-        <code><![CDATA[
-public interface Foo {
- public static final int FOO = 2;
- public static final String BAR = "bar";
-}
-     ]]></code>
-    </test-code>
-    <test-code>
-        <description><![CDATA[
-ok
-     ]]></description>
-        <expected-problems>0</expected-problems>
-        <code><![CDATA[
-public interface Foo {
- public static final int FOO = 2;
- public void buz();
-}
-     ]]></code>
-    </test-code>
-</test-data>