diff --git a/pom.xml b/pom.xml
index 39ed7e6a7..34768b83c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -692,7 +692,6 @@
85
93
- .*.checkstyle.AnnotationUtility6060
.*.Checker7984
.*.ConfigurationLoader8679
.*.ConfigurationLoader\$.*6584
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/AnnotationUtility.java b/src/main/java/com/puppycrawl/tools/checkstyle/AnnotationUtility.java
index 59f5d0aa6..7cf5ca61b 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/AnnotationUtility.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/AnnotationUtility.java
@@ -22,6 +22,7 @@ package com.puppycrawl.tools.checkstyle;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.FullIdent;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
+
import org.apache.commons.lang3.StringUtils;
/**
@@ -30,6 +31,12 @@ import org.apache.commons.lang3.StringUtils;
* @author Travis Schneeberger
*/
public final class AnnotationUtility {
+
+ /**
+ * Common message
+ */
+ private static final String THE_AST_IS_NULL = "the ast is null";
+
/**
* private utility constructor.
* @throws UnsupportedOperationException if called
@@ -58,11 +65,12 @@ public final class AnnotationUtility {
* @param ast the current node
* @param annotation the annotation name to check for
* @return true if contains the annotation
- * @throws NullPointerException if the ast or
- * annotation is null
*/
public static boolean containsAnnotation(final DetailAST ast,
String annotation) {
+ if (ast == null) {
+ throw new IllegalArgumentException(THE_AST_IS_NULL);
+ }
return AnnotationUtility.getAnnotation(ast, annotation) != null;
}
@@ -72,9 +80,11 @@ public final class AnnotationUtility {
*
* @param ast the current node
* @return true if contains an annotation
- * @throws NullPointerException if the ast is null
*/
public static boolean containsAnnotation(final DetailAST ast) {
+ if (ast == null) {
+ throw new IllegalArgumentException(THE_AST_IS_NULL);
+ }
final DetailAST holder = AnnotationUtility.getAnnotationHolder(ast);
return holder != null && holder.branchContains(TokenTypes.ANNOTATION);
}
@@ -86,11 +96,10 @@ public final class AnnotationUtility {
*
* @param ast the current node
* @return the Annotation Holder
- * @throws NullPointerException if the ast is null
*/
public static DetailAST getAnnotationHolder(DetailAST ast) {
if (ast == null) {
- throw new IllegalArgumentException("the ast is null");
+ throw new IllegalArgumentException(THE_AST_IS_NULL);
}
final DetailAST annotationHolder;
@@ -127,13 +136,11 @@ public final class AnnotationUtility {
* @param ast the current node
* @param annotation the annotation name to check for
* @return the AST representing that annotation
- * @throws NullPointerException if the ast or
- * annotation is null
*/
public static DetailAST getAnnotation(final DetailAST ast,
String annotation) {
if (ast == null) {
- throw new IllegalArgumentException("the ast is null");
+ throw new IllegalArgumentException(THE_AST_IS_NULL);
}
if (annotation == null) {
@@ -141,8 +148,8 @@ public final class AnnotationUtility {
}
if (StringUtils.isBlank(annotation)) {
- throw new IllegalArgumentException("the annotation"
- + "is empty or spaces");
+ throw new IllegalArgumentException(
+ "the annotation is empty or spaces");
}
final DetailAST holder = AnnotationUtility.getAnnotationHolder(ast);
@@ -162,42 +169,4 @@ public final class AnnotationUtility {
return null;
}
- /**
- * Checks to see what the passed in AST (representing
- * an annotation) is annotating.
- *
- * @param ast the AST representing an annotation.
- * @return the AST the annotation is annotating.
- * @throws NullPointerException if the ast is null
- * @throws IllegalArgumentException if the ast is not
- * an {@link TokenTypes#ANNOTATION}
- */
- public static DetailAST annotatingWhat(DetailAST ast) {
- if (ast == null) {
- throw new IllegalArgumentException("the ast is null");
- }
-
- if (ast.getType() != TokenTypes.ANNOTATION) {
- throw new IllegalArgumentException(
- "The ast is not an annotation. AST: " + ast);
- }
-
- return ast.getParent().getParent();
- }
-
- /**
- * Checks to see if the passed in AST (representing
- * an annotation) is annotating the passed in type.
- * @param ast the AST representing an annotation
- * @param tokenType the passed in type
- * @return true if the annotation is annotating a type
- * equal to the passed in type
- * @throws NullPointerException if the ast is null
- * @throws IllegalArgumentException if the ast is not
- * an {@link TokenTypes#ANNOTATION}
- */
- public static boolean isAnnotatingType(DetailAST ast, int tokenType) {
- final DetailAST astNode = AnnotationUtility.annotatingWhat(ast);
- return astNode.getType() == tokenType;
- }
}
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/AnnotationUtilityTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/AnnotationUtilityTest.java
new file mode 100644
index 000000000..311dd7f20
--- /dev/null
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/AnnotationUtilityTest.java
@@ -0,0 +1,140 @@
+////////////////////////////////////////////////////////////////////////////////
+// checkstyle: Checks Java source code for adherence to a set of rules.
+// Copyright (C) 2001-2015 the original author or authors.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+////////////////////////////////////////////////////////////////////////////////
+
+package com.puppycrawl.tools.checkstyle;
+
+import static com.puppycrawl.tools.checkstyle.TestUtils.assertUtilsClassHasPrivateConstructor;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
+
+public class AnnotationUtilityTest {
+
+ @Test
+ public void testIsProperUtilsClass() throws ReflectiveOperationException {
+ try {
+ assertUtilsClassHasPrivateConstructor(AnnotationUtility.class);
+ }
+ catch (InvocationTargetException ex) {
+ Assert.assertTrue("do not instantiate.".equals(ex.getCause().getMessage()));
+ }
+ }
+
+ @Test
+ public void testContainsAnnotationNull() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.containsAnnotation(null);
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the ast is null".equals(ex.getMessage()));
+ }
+ }
+
+ @Test
+ public void testContainsAnnotationNull2() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.containsAnnotation(null, "");
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the ast is null".equals(ex.getMessage()));
+ }
+ }
+
+ @Test
+ public void testContainsAnnotationFalse() throws ReflectiveOperationException {
+ DetailAST ast = new DetailAST();
+ ast.setType(1);
+ Assert.assertFalse(AnnotationUtility.containsAnnotation(ast));
+ }
+
+ @Test
+ public void testContainsAnnotationFalse2() throws ReflectiveOperationException {
+ DetailAST ast = new DetailAST();
+ ast.setType(1);
+ DetailAST ast2 = new DetailAST();
+ ast2.setType(TokenTypes.MODIFIERS);
+ ast.addChild(ast2);
+ Assert.assertFalse(AnnotationUtility.containsAnnotation(ast));
+ }
+
+ @Test
+ public void testContainsAnnotationTrue() throws ReflectiveOperationException {
+ DetailAST ast = new DetailAST();
+ ast.setType(1);
+ DetailAST ast2 = new DetailAST();
+ ast2.setType(TokenTypes.MODIFIERS);
+ ast.addChild(ast2);
+ DetailAST ast3 = new DetailAST();
+ ast3.setType(TokenTypes.ANNOTATION);
+ ast2.addChild(ast3);
+ Assert.assertTrue(AnnotationUtility.containsAnnotation(ast));
+ }
+
+ @Test
+ public void testAnnotationHolderNull() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.getAnnotationHolder(null);
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the ast is null".equals(ex.getMessage()));
+ }
+ }
+
+ @Test
+ public void testAnnotationNull() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.getAnnotation(null, null);
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the ast is null".equals(ex.getMessage()));
+ }
+ }
+
+ @Test
+ public void testAnnotationNull2() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.getAnnotation(new DetailAST(), null);
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the annotation is null".equals(ex.getMessage()));
+ }
+ }
+
+ @Test
+ public void testAnnotationEmpty() throws ReflectiveOperationException {
+ try {
+ AnnotationUtility.getAnnotation(new DetailAST(), "");
+ Assert.fail();
+ }
+ catch (IllegalArgumentException ex) {
+ Assert.assertTrue("the annotation is empty or spaces"
+ .equals(ex.getMessage()));
+ }
+ }
+}