From 03c8a0a7ee9fa35ce22491785c9630c2eb698471 Mon Sep 17 00:00:00 2001 From: Oliver Burn Date: Wed, 25 Sep 2002 12:24:50 +0000 Subject: [PATCH] Refactoring the way the Checker is configured. Not happy with the current approach - it was hack. Changing to be that the Configuration will eventually contain the CheckConfiguration objects. Also adding support setting the properties on created checks. I am adding this using the Jakarta Commons library as it makes it very easy. Oh - I am now back online - no thanks to Sprint blocking my ISP for a couple of days. I may have lost a couple of emails. :-( --- build.xml | 2 + lib/commons-beanutils.jar | Bin 0 -> 81170 bytes .../tools/checkstyle/CheckConfiguration.java | 14 ++++++- .../puppycrawl/tools/checkstyle/Checker.java | 37 +++++------------- .../tools/checkstyle/Configuration.java | 8 ---- .../com/puppycrawl/tools/checkstyle/Defn.java | 3 -- .../tools/checkstyle/BaseCheckTestCase.java | 3 +- .../tools/checkstyle/CheckerTest.java | 7 +++- 8 files changed, 32 insertions(+), 42 deletions(-) create mode 100644 lib/commons-beanutils.jar diff --git a/build.xml b/build.xml index 6d51d2190..d4dd1a031 100644 --- a/build.xml +++ b/build.xml @@ -11,6 +11,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/lib/commons-beanutils.jar b/lib/commons-beanutils.jar new file mode 100644 index 0000000000000000000000000000000000000000..150e4be9a5a52f0200f1d18e7d6e8a4d87707a9c GIT binary patch literal 81170 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%0AlH)L8H{C#Swaq; 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 literal 0 HcmV?d00001 diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/CheckConfiguration.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/CheckConfiguration.java index 8f316451c..8dfb72a72 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/CheckConfiguration.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/CheckConfiguration.java @@ -25,6 +25,10 @@ import java.util.HashSet; import java.util.Map; import java.util.HashMap; import java.util.StringTokenizer; +import java.util.Iterator; +import java.lang.reflect.InvocationTargetException; + +import org.apache.commons.beanutils.PropertyUtils; /** * Represents the configuration for a check. @@ -98,11 +102,19 @@ class CheckConfiguration */ Check createInstance(ClassLoader aLoader) throws ClassNotFoundException, InstantiationException, - IllegalAccessException + IllegalAccessException, InvocationTargetException, + NoSuchMethodException { final Class clazz = Class.forName(mClassname, true, aLoader); final Check check = (Check) clazz.newInstance(); // TODO: need to set the properties + // Loop setting the properties + final Iterator keyIt = mProperties.keySet().iterator(); + while (keyIt.hasNext()) { + final String key = (String) keyIt.next(); + final String value = (String) mProperties.get(key); + PropertyUtils.setSimpleProperty(check, key, value); + } return check; } } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java index f5145bef3..8933ca3a4 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java @@ -30,7 +30,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.Locale; -import java.util.Set; +import java.lang.reflect.InvocationTargetException; import org.apache.regexp.RESyntaxException; import org.xml.sax.SAXException; @@ -155,9 +155,9 @@ public class Checker public Checker(Configuration aConfig, CheckConfiguration[] aConfigs) throws ClassNotFoundException, InstantiationException, - IllegalAccessException + IllegalAccessException, InvocationTargetException, + NoSuchMethodException { - // TODO: document to make testing easier mConfig = aConfig; mCache = new PropertyCacheFile(aConfig); LocalizedMessage.setLocale(new Locale(mConfig.getLocaleLanguage(), @@ -180,35 +180,16 @@ public class Checker */ public Checker(Configuration aConfig) throws RESyntaxException, IOException, - ParserConfigurationException, SAXException, ClassNotFoundException, InstantiationException, IllegalAccessException + ParserConfigurationException, SAXException, + ClassNotFoundException, InstantiationException, + IllegalAccessException, InvocationTargetException, + NoSuchMethodException { - // TODO: remove the dead code and make use the other constuctor - mConfig = aConfig; + // TODO: delete this method eventually + this(aConfig, new CheckConfiguration[0]); mConfig.loadFiles(); - mCache = new PropertyCacheFile(aConfig); final Verifier v = new Verifier(aConfig); VerifierSingleton.setInstance(v); - LocalizedMessage.setLocale(new Locale(mConfig.getLocaleLanguage(), - mConfig.getLocaleCountry())); - mMessages = new LocalizedMessages(mConfig.getTabWidth()); - // Load the check configurations - final ConfigurationLoader loader = new ConfigurationLoader(); - final Set configFiles = mConfig.getCheckConfigFiles(); - // TODO: check for null - for (Iterator it = configFiles.iterator(); it.hasNext();) { - final String fname = (String) it.next(); - loader.parseFile(fname); - } - - // Initialise the treewalker - // TODO: improve the error handing - mWalker = new TreeWalker(mMessages); - final CheckConfiguration[] configs = loader.getConfigs(); - for (int i = 0; i < configs.length; i++) { - final CheckConfiguration config = configs[i]; - mWalker.registerCheck( - config.createInstance(mConfig.getClassLoader()), config); - } } /** Cleans up the object **/ diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Configuration.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Configuration.java index 9fdd971ca..20604d48a 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Configuration.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Configuration.java @@ -118,8 +118,6 @@ public class Configuration /** map of Set properties **/ private final Map mStringSetProps = new HashMap(); { - // TODO: need to remove this next line - setStringSetProperty(Defn.CHECK_CONFIG_FILES_PROP, ""); setStringSetProperty(Defn.ILLEGAL_IMPORTS_PROP, ILLEGAL_IMPORTS); setStringSetProperty(Defn.ILLEGAL_INSTANTIATIONS_PROP, ILLEGAL_INSTANTIATIONS); @@ -622,12 +620,6 @@ public class Configuration return getStringSetProperty(Defn.ILLEGAL_INSTANTIATIONS_PROP); } - /** @return Set of check configuration files */ - Set getCheckConfigFiles() - { - return getStringSetProperty(Defn.CHECK_CONFIG_FILES_PROP); - } - /** @return pattern to exclude from line lengh checking **/ String getIgnoreLineLengthPat() { diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Defn.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Defn.java index a78cf6a17..126953d1e 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Defn.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Defn.java @@ -29,8 +29,6 @@ public interface Defn /** name of resource bundle for Checkstyle */ String CHECKSTYLE_BUNDLE = "com.puppycrawl.tools.checkstyle.messages"; - /** property name for the configuration files */ - String CHECK_CONFIG_FILES_PROP = "checkstyle.check.configs"; /** property name for the to-do pattern **/ String TODO_PATTERN_PROP = "checkstyle.pattern.todo"; /** property name for the parameter pattern **/ @@ -216,7 +214,6 @@ public interface Defn **/ String[] ALL_STRING_SET_PROPS = new String[] { - CHECK_CONFIG_FILES_PROP, ILLEGAL_IMPORTS_PROP, ILLEGAL_INSTANTIATIONS_PROP, }; diff --git a/src/tests/com/puppycrawl/tools/checkstyle/BaseCheckTestCase.java b/src/tests/com/puppycrawl/tools/checkstyle/BaseCheckTestCase.java index 2ca7fb3a2..24766f073 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/BaseCheckTestCase.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/BaseCheckTestCase.java @@ -22,6 +22,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Properties; +import java.lang.reflect.InvocationTargetException; import junit.framework.TestCase; import com.puppycrawl.tools.checkstyle.api.DetailAST; @@ -60,7 +61,7 @@ public class BaseCheckTestCase protected Checker createChecker(CheckConfiguration aCheckConfig) throws RESyntaxException, FileNotFoundException, IOException, ParserConfigurationException, SAXException, ClassNotFoundException, - InstantiationException, IllegalAccessException + InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { final Checker c = new Checker(new Configuration(mProps, mStream), new CheckConfiguration[] {aCheckConfig}); diff --git a/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java b/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java index 7a070e85b..b6fe3cc05 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java @@ -16,6 +16,7 @@ import java.io.LineNumberReader; import java.io.InputStreamReader; import java.util.Locale; import java.util.Properties; +import java.lang.reflect.InvocationTargetException; public class CheckerTest extends TestCase @@ -69,7 +70,11 @@ public class CheckerTest } protected Checker createChecker() - throws RESyntaxException, FileNotFoundException, IOException, ParserConfigurationException, SAXException, ClassNotFoundException, InstantiationException, IllegalAccessException + throws RESyntaxException, FileNotFoundException, IOException, + ParserConfigurationException, SAXException, + ClassNotFoundException, InstantiationException, + IllegalAccessException, InvocationTargetException, + NoSuchMethodException { final Configuration config = new Configuration(mProps, mStream); final Checker c = new Checker(config);