builder =
@@ -71,6 +75,12 @@ public final class Utils {
TOKEN_NAME_TO_VALUE = builder.build();
TOKEN_VALUE_TO_NAME = tempTokenValueToName;
+
+ final Integer[] ids = TOKEN_NAME_TO_VALUE.values().toArray(new Integer[0]);
+ TOKEN_IDS = new int[ids.length];
+ for (int i = 0; i < ids.length; i++) {
+ TOKEN_IDS[i] = ids[i].intValue();
+ }
}
@@ -78,6 +88,16 @@ public final class Utils {
private Utils() {
}
+ /**
+ * Get all token IDs that are available in TokenTypes.
+ * @return array of token IDs
+ */
+ public static int[] getAllTokenIds() {
+ final int[] safeCopy = new int[TOKEN_IDS.length];
+ System.arraycopy(TOKEN_IDS, 0, safeCopy, 0, TOKEN_IDS.length);
+ return safeCopy;
+ }
+
/**
* Returns whether the file extension matches what we are meant to
* process.
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenCheck.java
index 006ccd9a4..b63d921c3 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenCheck.java
@@ -23,7 +23,6 @@ import com.puppycrawl.tools.checkstyle.Utils;
import com.puppycrawl.tools.checkstyle.api.Check;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
-import java.util.Set;
/**
*
@@ -70,20 +69,12 @@ public class IllegalTokenCheck
@Override
public int[] getAcceptableTokens() {
- // Any tokens set by property 'tokens' are acceptable
- int[] tokensToCopy = getDefaultTokens();
- final Set tokenNames = getTokenNames();
- if (!tokenNames.isEmpty()) {
- tokensToCopy = new int[tokenNames.size()];
- int i = 0;
- for (String name : tokenNames) {
- tokensToCopy[i] = Utils.getTokenId(name);
- i++;
- }
- }
- final int[] copy = new int[tokensToCopy.length];
- System.arraycopy(tokensToCopy, 0, copy, 0, tokensToCopy.length);
- return copy;
+ return Utils.getAllTokenIds();
+ }
+
+ @Override
+ public int[] getRequiredTokens() {
+ return new int[0];
}
@Override
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
index 53fc5ff25..a99ea00c2 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
@@ -19,11 +19,11 @@
package com.puppycrawl.tools.checkstyle.checks.coding;
+import java.util.regex.Pattern;
+
import com.puppycrawl.tools.checkstyle.Utils;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.checks.AbstractFormatCheck;
-import java.util.Set;
-import java.util.regex.Pattern;
/**
*
@@ -79,15 +79,12 @@ public class IllegalTokenTextCheck
@Override
public int[] getAcceptableTokens() {
- // Any tokens set by property 'tokens' are acceptable
- final Set tokenNames = getTokenNames();
- final int[] result = new int[tokenNames.size()];
- int i = 0;
- for (final String name : tokenNames) {
- result[i] = Utils.getTokenId(name);
- i++;
- }
- return result;
+ return Utils.getAllTokenIds();
+ }
+
+ @Override
+ public int[] getRequiredTokens() {
+ return new int[0];
}
@Override
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
index 736c4517f..84b7448e0 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
@@ -21,6 +21,8 @@ package com.puppycrawl.tools.checkstyle.checks.coding;
import static com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextCheck.MSG_KEY;
+import java.text.MessageFormat;
+
import org.junit.Assert;
import org.junit.Test;
@@ -36,6 +38,7 @@ public class IllegalTokenTextCheckTest
createCheckConfig(IllegalTokenTextCheck.class);
checkConfig.addAttribute("tokens", "STRING_LITERAL");
checkConfig.addAttribute("format", "a href");
+ checkConfig.addAttribute("ignoreCase", "false");
final String[] expected = {
"24:28: " + getCheckMessage(MSG_KEY, "a href"),
};
@@ -57,6 +60,37 @@ public class IllegalTokenTextCheckTest
verify(checkConfig, getPath("InputIllegalTokens.java"), expected);
}
+ @Test
+ public void testCustomMessage()
+ throws Exception {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(IllegalTokenTextCheck.class);
+ checkConfig.addAttribute("tokens", "STRING_LITERAL");
+ checkConfig.addAttribute("format", "a href");
+
+ String customMessage = "My custom message";
+ checkConfig.addAttribute("message", customMessage);
+ final String[] expected = {
+ "24:28: " + MessageFormat.format(customMessage, "a href"),
+ };
+ verify(checkConfig, getPath("InputIllegalTokens.java"), expected);
+ }
+
+ @Test
+ public void testNullCustomMessage()
+ throws Exception {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(IllegalTokenTextCheck.class);
+ checkConfig.addAttribute("tokens", "STRING_LITERAL");
+ checkConfig.addAttribute("format", "a href");
+
+ checkConfig.addAttribute("message", null);
+ final String[] expected = {
+ "24:28: " + getCheckMessage(MSG_KEY, "a href"),
+ };
+ verify(checkConfig, getPath("InputIllegalTokens.java"), expected);
+ }
+
@Test
public void testTokensNotNull() {
IllegalTokenTextCheck check = new IllegalTokenTextCheck();