From 69ccfd3fa90239f676941f098176d5b2e8b72869 Mon Sep 17 00:00:00 2001 From: rnveach Date: Tue, 10 Nov 2015 13:29:07 -0500 Subject: [PATCH] Issue #2451: removed excess hierarchy from SeparatorWrapCheck --- .../checks/whitespace/SeparatorWrapCheck.java | 28 +++++++++++++------ .../whitespace/SeparatorWrapCheckTest.java | 10 +++++++ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheck.java index 037195b6a..4a2c1eff5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheck.java @@ -19,11 +19,14 @@ package com.puppycrawl.tools.checkstyle.checks.whitespace; +import java.util.Locale; + +import org.apache.commons.beanutils.ConversionException; import org.apache.commons.lang3.ArrayUtils; +import com.puppycrawl.tools.checkstyle.api.Check; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; -import com.puppycrawl.tools.checkstyle.checks.AbstractOptionCheck; /** *

@@ -80,7 +83,7 @@ import com.puppycrawl.tools.checkstyle.checks.AbstractOptionCheck; * @author maxvetrenko */ public class SeparatorWrapCheck - extends AbstractOptionCheck { + extends Check { /** * A key is pointing to the warning message text in "messages.properties" @@ -94,11 +97,21 @@ public class SeparatorWrapCheck */ public static final String LINE_NEW = "line.new"; + /** The policy to enforce. */ + private WrapOption option = WrapOption.EOL; + /** - * Sets the comma wrap option to end of the line. + * Set the option to enforce. + * @param optionStr string to decode option from + * @throws ConversionException if unable to decode */ - public SeparatorWrapCheck() { - super(WrapOption.EOL, WrapOption.class); + public void setOption(String optionStr) { + try { + option = WrapOption.valueOf(optionStr.trim().toUpperCase(Locale.ENGLISH)); + } + catch (IllegalArgumentException iae) { + throw new ConversionException("unable to parse " + optionStr, iae); + } } @Override @@ -139,13 +152,12 @@ public class SeparatorWrapCheck currentLine.substring(colNo + text.length()).trim(); final String substringBeforeToken = currentLine.substring(0, colNo).trim(); - final WrapOption wSp = getAbstractOption(); - if (wSp == WrapOption.EOL + if (option == WrapOption.EOL && substringBeforeToken.isEmpty()) { log(lineNo, colNo, LINE_PREVIOUS, text); } - else if (wSp == WrapOption.NL + else if (option == WrapOption.NL && substringAfterToken.isEmpty()) { log(lineNo, colNo, LINE_NEW, text); } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheckTest.java index 1a1e55c24..4e654e8c5 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/SeparatorWrapCheckTest.java @@ -25,12 +25,14 @@ import static com.puppycrawl.tools.checkstyle.checks.whitespace.SeparatorWrapChe import java.io.File; import java.io.IOException; +import org.apache.commons.lang3.ArrayUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.api.CheckstyleException; import com.puppycrawl.tools.checkstyle.api.TokenTypes; public class SeparatorWrapCheckTest @@ -79,4 +81,12 @@ public class SeparatorWrapCheckTest }; Assert.assertArrayEquals(expected, actual); } + + @Test(expected = CheckstyleException.class) + public void testInvalidOption() throws Exception { + checkConfig.addAttribute("option", "invalid_option"); + final String[] expected = ArrayUtils.EMPTY_STRING_ARRAY; + + verify(checkConfig, getPath("InputSeparatorWrap.java"), expected); + } }