net.sourceforge.pmd
Class RuleSetFactory

java.lang.Object
  extended bynet.sourceforge.pmd.RuleSetFactory

public class RuleSetFactory
extends java.lang.Object


Field Summary
private  java.lang.ClassLoader classLoader
           
 
Constructor Summary
RuleSetFactory()
           
 
Method Summary
 RuleSet createRuleSet(java.io.InputStream inputStream)
          Create a ruleset from an inputsteam.
 RuleSet createRuleSet(java.io.InputStream inputStream, java.lang.ClassLoader classLoader)
          Create a ruleset from an input stream with a specified class loader
 RuleSet createRuleSet(java.lang.String name)
          Creates a ruleset.
 RuleSet createRuleSet(java.lang.String name, java.lang.ClassLoader classLoader)
          Create a ruleset from a name or from a list of name
 java.lang.ClassLoader getClassLoader()
          Return the class loader used to load ruleset resources and rules
 java.util.Iterator getRegisteredRuleSets()
          Returns an Iterator of RuleSet objects loaded from descriptions from the "rulesets.properties" resource or from the "rulesets.filenames" property.
private  void parseDescriptionNode(Rule rule, org.w3c.dom.Node descriptionNode)
          Process a rule descrtiprion node
private  void parseDescriptionNode(RuleSet ruleSet, org.w3c.dom.Node descriptionNode)
          Parse a ruleset description node
private  void parseExampleNode(Rule rule, org.w3c.dom.Node exampleNode)
          Process a rule example node
private  void parseExternallyDefinedRuleNode(RuleSet ruleSet, org.w3c.dom.Node ruleNode)
          Process a reference to a rule
private  void parseInternallyDefinedRuleNode(RuleSet ruleSet, org.w3c.dom.Node ruleNode)
          Process a rule definition node
private  void parsePriorityNode(Rule rule, org.w3c.dom.Node priorityNode)
          Parse a priority node
private  void parsePropertiesNode(Rule rule, org.w3c.dom.Node propertiesNode)
          Parse a properties node
private  void parsePropertyNode(Rule rule, org.w3c.dom.Node propertyNode)
          Parse a property node
private  void parseRuleNode(RuleSet ruleSet, org.w3c.dom.Node ruleNode)
          Parse a rule node
private  void parseRuleNodeWithExclude(RuleSet ruleSet, org.w3c.dom.Element ruleElement, java.lang.String ref)
          Parse a reference rule node with excludes
private  void parseRuleNodeWithSimpleReference(RuleSet ruleSet, java.lang.String ref)
          Parse a rule node with a simple reference
private  java.lang.String parseValueNode(org.w3c.dom.Node valueNode)
          Parse a value node
 void setClassLoader(java.lang.ClassLoader loader)
          Sets the class loader used to load ruleset resources and rules
private  java.io.InputStream tryToGetStreamTo(java.lang.String name, java.lang.ClassLoader loader)
          Try to load a resource with the specified class loader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

classLoader

private java.lang.ClassLoader classLoader
Constructor Detail

RuleSetFactory

public RuleSetFactory()
Method Detail

getRegisteredRuleSets

public java.util.Iterator getRegisteredRuleSets()
                                         throws RuleSetNotFoundException
Returns an Iterator of RuleSet objects loaded from descriptions from the "rulesets.properties" resource or from the "rulesets.filenames" property.

Returns:
an iterator on RuleSet objects
Throws:
RuleSetNotFoundException

createRuleSet

public RuleSet createRuleSet(java.lang.String name,
                             java.lang.ClassLoader classLoader)
                      throws RuleSetNotFoundException
Create a ruleset from a name or from a list of name

Parameters:
name - name of rule set file loaded as a resource
classLoader - the classloader used to load the ruleset and subsequent rules
Returns:
the new ruleset
Throws:
RuleSetNotFoundException

createRuleSet

public RuleSet createRuleSet(java.lang.String name)
                      throws RuleSetNotFoundException
Creates a ruleset. If passed a comma-delimited string (rulesets/basic.xml,rulesets/unusedcode.xml) it will parse that string and create a new ruleset for each item in the list. Same as createRuleSet(name, ruleSetFactory.getClassLoader()).

Throws:
RuleSetNotFoundException

createRuleSet

public RuleSet createRuleSet(java.io.InputStream inputStream)
Create a ruleset from an inputsteam. Same as createRuleSet(inputStream, ruleSetFactory.getClassLoader()).

Parameters:
inputStream - an input stream that contains a ruleset descripion
Returns:
a new ruleset

createRuleSet

public RuleSet createRuleSet(java.io.InputStream inputStream,
                             java.lang.ClassLoader classLoader)
Create a ruleset from an input stream with a specified class loader

Parameters:
inputStream - an input stream that contains a ruleset descripion
classLoader - a class loader used to load rule classes
Returns:
a new ruleset

getClassLoader

public java.lang.ClassLoader getClassLoader()
Return the class loader used to load ruleset resources and rules

Returns:

setClassLoader

public void setClassLoader(java.lang.ClassLoader loader)
Sets the class loader used to load ruleset resources and rules

Parameters:
loader - a class loader

tryToGetStreamTo

private java.io.InputStream tryToGetStreamTo(java.lang.String name,
                                             java.lang.ClassLoader loader)
                                      throws RuleSetNotFoundException
Try to load a resource with the specified class loader

Parameters:
name - a resource name (contains a ruleset description)
loader - a class loader used to load that rule set description
Returns:
an inputstream to that resource
Throws:
RuleSetNotFoundException

parseDescriptionNode

private void parseDescriptionNode(RuleSet ruleSet,
                                  org.w3c.dom.Node descriptionNode)
Parse a ruleset description node

Parameters:
ruleSet - the ruleset being constructed
descriptionNode - must be a description element node

parseRuleNode

private void parseRuleNode(RuleSet ruleSet,
                           org.w3c.dom.Node ruleNode)
                    throws java.lang.ClassNotFoundException,
                           java.lang.InstantiationException,
                           java.lang.IllegalAccessException,
                           RuleSetNotFoundException
Parse a rule node

Parameters:
ruleSet - the ruleset being constructed
Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
RuleSetNotFoundException

parseInternallyDefinedRuleNode

private void parseInternallyDefinedRuleNode(RuleSet ruleSet,
                                            org.w3c.dom.Node ruleNode)
                                     throws java.lang.ClassNotFoundException,
                                            java.lang.InstantiationException,
                                            java.lang.IllegalAccessException
Process a rule definition node

Parameters:
ruleSet - the ruleset being constructed
ruleNode - must be a rule element node
Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException

parseExternallyDefinedRuleNode

private void parseExternallyDefinedRuleNode(RuleSet ruleSet,
                                            org.w3c.dom.Node ruleNode)
                                     throws RuleSetNotFoundException
Process a reference to a rule

Parameters:
ruleSet - the ruleset being constructucted
ruleNode - must be a ruke element node
Throws:
RuleSetNotFoundException

parseRuleNodeWithSimpleReference

private void parseRuleNodeWithSimpleReference(RuleSet ruleSet,
                                              java.lang.String ref)
                                       throws RuleSetNotFoundException
Parse a rule node with a simple reference

Parameters:
ruleSet - the ruleset being constructed
ref - a reference to a rule
Throws:
RuleSetNotFoundException

parseRuleNodeWithExclude

private void parseRuleNodeWithExclude(RuleSet ruleSet,
                                      org.w3c.dom.Element ruleElement,
                                      java.lang.String ref)
                               throws RuleSetNotFoundException
Parse a reference rule node with excludes

Parameters:
ruleSet - the ruleset being constructed
ruleElement - must be a rule element
ref - the ruleset reference
Throws:
RuleSetNotFoundException

parseDescriptionNode

private void parseDescriptionNode(Rule rule,
                                  org.w3c.dom.Node descriptionNode)
Process a rule descrtiprion node

Parameters:
rule - the rule being constructed
descriptionNode - must be a description element node

parseExampleNode

private void parseExampleNode(Rule rule,
                              org.w3c.dom.Node exampleNode)
Process a rule example node

Parameters:
rule - the rule being constructed
exampleNode - must be a example element node

parsePriorityNode

private void parsePriorityNode(Rule rule,
                               org.w3c.dom.Node priorityNode)
Parse a priority node

Parameters:
rule - the rule being constructed
priorityNode - must be a priority element

parsePropertiesNode

private void parsePropertiesNode(Rule rule,
                                 org.w3c.dom.Node propertiesNode)
Parse a properties node

Parameters:
rule - the rule being constructed
propertiesNode - must be a properties element node

parsePropertyNode

private void parsePropertyNode(Rule rule,
                               org.w3c.dom.Node propertyNode)
Parse a property node

Parameters:
rule - the rule being constructed
propertyNode - must be a property element node

parseValueNode

private java.lang.String parseValueNode(org.w3c.dom.Node valueNode)
Parse a value node

Parameters:
valueNode - must be a value element node
Returns:
the value