You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/05/12 20:03:33 UTC

svn commit: r1102402 [1/20] - in /commons/sandbox/digester3/trunk/src: main/java/org/apache/commons/digester3/ main/java/org/apache/commons/digester3/annotations/ main/java/org/apache/commons/digester3/annotations/handlers/ main/java/org/apache/commons...

Author: simonetripodi
Date: Thu May 12 18:03:26 2011
New Revision: 1102402

URL: http://svn.apache.org/viewvc?rev=1102402&view=rev
Log:
code reformatted using the Apache Maven code style

Modified:
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallMethodRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallParamRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/Digester.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ExtendedBaseRules.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/FactoryCreateRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/NodeCreateRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreateRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectCreationFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/ObjectParamRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/PathCallParamRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RegexMatcher.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RegexRules.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/Rule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RuleSet.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RuleSetBase.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/Rules.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/RulesBase.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetNestedPropertiesRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetNextRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetPropertiesRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetPropertyRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetRootRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SetTopRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/SimpleRegexMatcher.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/StackAction.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/Substitutor.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/WithDefaultsRulesWrapper.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/AnnotationRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/CreationRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterLoader.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterLoaderBuilder.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterLoaderHandler.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterLoadingException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/DigesterRuleList.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationRuleProviderFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/FromAnnotationsRuleSet.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/handlers/DefaultLoaderHandler.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/handlers/MethodHandler.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/handlers/SetPropertiesLoaderHandler.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/handlers/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/AbstractAnnotatedElementPrivilegedAction.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/DefaultAnnotationRuleProviderFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/DefaultDigesterLoaderHandlerFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/GetDeclaredFieldsPrivilegedAction.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/GetDeclaredMethodsPrivilegedAction.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/RuleSetCache.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/internal/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/AttributeCallParamRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/BeanPropertySetterRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/CallMethodRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/CallParamRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/FactoryCreateRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/ObjectCreateRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/PathCallParamRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/SetNextRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/SetPropertiesRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/SetRootRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/SetTopRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/StackCallParamRuleProvider.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/providers/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/reflect/MethodArgument.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/reflect/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/AttributeCallParam.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/BeanPropertySetter.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/CallMethod.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/CallParam.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/FactoryCreate.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/ObjectCreate.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/PathCallParam.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/SetNext.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/SetProperty.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/SetRoot.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/SetTop.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/StackCallParam.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/rules/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/spi/AnnotationRuleProviderFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/spi/DigesterLoaderHandlerFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/spi/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/utils/AnnotationUtils.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/annotations/utils/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/Declaration.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/InitializableRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/LogUtils.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginAssertionFailure.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginConfigurationException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginContext.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginCreateRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginDeclarationRule.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginInvalidInputException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginManager.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/PluginRules.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/RuleFinder.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/RuleLoader.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/RulesFactory.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromClass.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltClass.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltMethod.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromDfltResource.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromFile.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromMethod.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderFromResource.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/FinderSetProperties.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromClass.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderFromStream.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/LoaderSetProperties.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/plugins/strategies/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/substitution/MultiVariableExpander.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/substitution/VariableAttributes.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/substitution/VariableExpander.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/substitution/VariableSubstitutor.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/substitution/package-info.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/CircularIncludeException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/DigesterLoader.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/DigesterLoadingException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/DigesterRuleParser.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/DigesterRulesSource.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSet.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/XmlLoadException.java
    commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/package-info.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/Address.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/AlphaBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/BeanPropertySetterRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/BetaBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/Box.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/CallMethodRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/DigesterTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/EBRTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/Employee.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/LocationTrackerTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/Nameable.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/NamedBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/NamespaceSnapshotTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/NamespacedBox.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/NodeCreateRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/ObjectCreationFactoryTestImpl.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/ObjectParamRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/OtherTestObjectCreationFactory.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/OverlappingCallMethodRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/ParamBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/PrimitiveBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/RegexRulesTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/RuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/RulesBaseTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/SetNestedPropertiesRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/SetPropertiesRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/SetPropertyRuleTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/SimpleTestBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/TestBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/TestEntityResolution.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/TestFactoryCreate.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/TestRule.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/TestRuleSet.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/URLTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/WDRulesWrapperTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/XIncludeTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/XMLSchemaTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Channel.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Image.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Item.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/RssTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/servletbean/ServletBean.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/servletbean/ServletBeanTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/Container.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/ContainerCustomRules.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/DumperRule.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/ObjectTestImpl.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/Slider.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestConfigurablePluginAttributes.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestDeclaration.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestDefaultPlugin.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestDelegate.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestInline.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestLocalRules.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestRecursion.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestRuleInfo.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TestXmlRuleInfo.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TextLabel.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TextLabel2.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/TextLabel2RuleInfo.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/Utils.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/plugins/Widget.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/substitution/VariableExpansionTestCase.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/CallParamTestObject.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/DigesterLoaderRulesTest.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/DigesterLoaderTest.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/DigesterPatternStackTest.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/DigesterRulesSourceTestImpl.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/FromXmlRuleSetTest.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/IncludeTest.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/ObjectTestImpl.java
    commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/xmlrules/ThrowExceptionCreationFactory.java

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java?rev=1102402&r1=1102401&r2=1102402&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractObjectCreationFactory.java Thu May 12 18:03:26 2011
@@ -17,63 +17,59 @@
  */
 package org.apache.commons.digester3;
 
-
 import org.xml.sax.Attributes;
 
-
 /**
- * <p>Abstract base class for <code>ObjectCreationFactory</code>
- * implementations.</p>
+ * <p>
+ * Abstract base class for <code>ObjectCreationFactory</code> implementations.
+ * </p>
  */
-abstract public class AbstractObjectCreationFactory implements ObjectCreationFactory {
-
+abstract public class AbstractObjectCreationFactory
+    implements ObjectCreationFactory
+{
 
     // ----------------------------------------------------- Instance Variables
 
-
     /**
-     * The associated <code>Digester</code> instance that was set up by
-     * {@link FactoryCreateRule} upon initialization.
+     * The associated <code>Digester</code> instance that was set up by {@link FactoryCreateRule} upon initialization.
      */
     protected Digester digester = null;
 
-
     // --------------------------------------------------------- Public Methods
 
-
     /**
-     * <p>Factory method called by {@link FactoryCreateRule} to supply an
-     * object based on the element's attributes.
-     *
+     * <p>
+     * Factory method called by {@link FactoryCreateRule} to supply an object based on the element's attributes.
+     * 
      * @param attributes the element's attributes
-     *
      * @throws Exception any exception thrown will be propagated upwards
      */
-    public abstract Object createObject(Attributes attributes) throws Exception;
-
+    public abstract Object createObject( Attributes attributes )
+        throws Exception;
 
     /**
-     * <p>Returns the {@link Digester} that was set by the
-     * {@link FactoryCreateRule} upon initialization.
+     * <p>
+     * Returns the {@link Digester} that was set by the {@link FactoryCreateRule} upon initialization.
      */
-    public Digester getDigester() {
+    public Digester getDigester()
+    {
 
-        return (this.digester);
+        return ( this.digester );
 
     }
 
-
     /**
-     * <p>Set the {@link Digester} to allow the implementation to do logging,
-     * classloading based on the digester's classloader, etc.
-     *
+     * <p>
+     * Set the {@link Digester} to allow the implementation to do logging, classloading based on the digester's
+     * classloader, etc.
+     * 
      * @param digester parent Digester object
      */
-    public void setDigester(Digester digester) {
+    public void setDigester( Digester digester )
+    {
 
         this.digester = digester;
 
     }
 
-
 }

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java?rev=1102402&r1=1102401&r2=1102402&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/AbstractRulesImpl.java Thu May 12 18:03:26 2011
@@ -16,152 +16,145 @@
  * limitations under the License.
  */
 
-
 package org.apache.commons.digester3;
 
-
 import java.util.List;
 
-
 /**
- * <p><code>AbstractRuleImpl</code> provides basic services for <code>Rules</code> implementations.
- * Extending this class should make it easier to create a <code>Rules</code> implementation.</p>
+ * <p>
+ * <code>AbstractRuleImpl</code> provides basic services for <code>Rules</code> implementations. Extending this class
+ * should make it easier to create a <code>Rules</code> implementation.
+ * </p>
+ * <p>
+ * <code>AbstractRuleImpl</code> manages the <code>Digester</code> and <code>namespaceUri</code> properties. If the
+ * subclass overrides {@link #registerRule} (rather than {@link #add}), then the <code>Digester</code> and
+ * <code>namespaceURI</code> of the <code>Rule</code> will be set correctly before it is passed to
+ * <code>registerRule</code>. The subclass can then perform whatever it needs to do to register the rule.
+ * </p>
  * 
- * <p><code>AbstractRuleImpl</code> manages the <code>Digester</code> 
- * and <code>namespaceUri</code> properties.
- * If the subclass overrides {@link #registerRule} (rather than {@link #add}),
- * then the <code>Digester</code> and <code>namespaceURI</code> of the <code>Rule</code>
- * will be set correctly before it is passed to <code>registerRule</code>.
- * The subclass can then perform whatever it needs to do to register the rule.</p>
- *
  * @since 1.5
  */
 
-abstract public class AbstractRulesImpl implements Rules {
+abstract public class AbstractRulesImpl
+    implements Rules
+{
 
     // ------------------------------------------------------------- Fields
-    
+
     /** Digester using this <code>Rules</code> implementation */
     private Digester digester;
+
     /** Namespace uri to assoicate with subsequent <code>Rule</code>'s */
     private String namespaceURI;
-    
+
     // ------------------------------------------------------------- Properties
 
     /**
-     * Return the Digester instance with which this Rules instance is
-     * associated.
+     * Return the Digester instance with which this Rules instance is associated.
      */
-    public Digester getDigester() {
+    public Digester getDigester()
+    {
         return digester;
     }
 
     /**
      * Set the Digester instance with which this Rules instance is associated.
-     *
+     * 
      * @param digester The newly associated Digester instance
      */
-    public void setDigester(Digester digester) {
+    public void setDigester( Digester digester )
+    {
         this.digester = digester;
     }
 
     /**
-     * Return the namespace URI that will be applied to all subsequently
-     * added <code>Rule</code> objects.
+     * Return the namespace URI that will be applied to all subsequently added <code>Rule</code> objects.
      */
-    public String getNamespaceURI() {
+    public String getNamespaceURI()
+    {
         return namespaceURI;
     }
 
     /**
-     * Set the namespace URI that will be applied to all subsequently
-     * added <code>Rule</code> objects.
-     *
-     * @param namespaceURI Namespace URI that must match on all
-     *  subsequently added rules, or <code>null</code> for matching
-     *  regardless of the current namespace URI
+     * Set the namespace URI that will be applied to all subsequently added <code>Rule</code> objects.
+     * 
+     * @param namespaceURI Namespace URI that must match on all subsequently added rules, or <code>null</code> for
+     *            matching regardless of the current namespace URI
      */
-    public void setNamespaceURI(String namespaceURI) {
+    public void setNamespaceURI( String namespaceURI )
+    {
         this.namespaceURI = namespaceURI;
     }
 
     // --------------------------------------------------------- Public Methods
 
     /**
-     * Registers a new Rule instance matching the specified pattern.
-     * This implementation sets the <code>Digester</code> and the
-     * <code>namespaceURI</code> on the <code>Rule</code> before calling {@link #registerRule}.
-     *
+     * Registers a new Rule instance matching the specified pattern. This implementation sets the <code>Digester</code>
+     * and the <code>namespaceURI</code> on the <code>Rule</code> before calling {@link #registerRule}.
+     * 
      * @param pattern Nesting pattern to be matched for this Rule
      * @param rule Rule instance to be registered
      */
-    public void add(String pattern, Rule rule) {
+    public void add( String pattern, Rule rule )
+    {
         // set up rule
-        if (this.digester != null) {
-            rule.setDigester(this.digester);
+        if ( this.digester != null )
+        {
+            rule.setDigester( this.digester );
         }
-        
-        if (this.namespaceURI != null) {
-            rule.setNamespaceURI(this.namespaceURI);
+
+        if ( this.namespaceURI != null )
+        {
+            rule.setNamespaceURI( this.namespaceURI );
         }
-        
-        registerRule(pattern, rule);
-        
-    }
-    
-    /** 
-     * Register rule at given pattern.
-     * The the Digester and namespaceURI properties of the given <code>Rule</code>
-     * can be assumed to have been set properly before this method is called.
-     *
+
+        registerRule( pattern, rule );
+
+    }
+
+    /**
+     * Register rule at given pattern. The the Digester and namespaceURI properties of the given <code>Rule</code> can
+     * be assumed to have been set properly before this method is called.
+     * 
      * @param pattern Nesting pattern to be matched for this Rule
      * @param rule Rule instance to be registered
-     */ 
-    abstract protected void registerRule(String pattern, Rule rule);
+     */
+    abstract protected void registerRule( String pattern, Rule rule );
 
     /**
      * Clear all existing Rule instance registrations.
      */
     abstract public void clear();
 
-
     /**
-     * Return a List of all registered Rule instances that match the specified
-     * nesting pattern, or a zero-length List if there are no matches.  If more
-     * than one Rule instance matches, they <strong>must</strong> be returned
-     * in the order originally registered through the <code>add()</code>
-     * method.
-     *
+     * Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if
+     * there are no matches. If more than one Rule instance matches, they <strong>must</strong> be returned in the order
+     * originally registered through the <code>add()</code> method.
+     * 
      * @param pattern Nesting pattern to be matched
-     *
      * @deprecated Call match(namespaceURI,pattern) instead.
      */
     @Deprecated
-    public List<Rule> match(String pattern) {
-        return match(namespaceURI, pattern);
+    public List<Rule> match( String pattern )
+    {
+        return match( namespaceURI, pattern );
     }
 
-
     /**
-     * Return a List of all registered Rule instances that match the specified
-     * nesting pattern, or a zero-length List if there are no matches.  If more
-     * than one Rule instance matches, they <strong>must</strong> be returned
-     * in the order originally registered through the <code>add()</code>
-     * method.
-     *
-     * @param namespaceURI Namespace URI for which to select matching rules,
-     *  or <code>null</code> to match regardless of namespace URI
+     * Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if
+     * there are no matches. If more than one Rule instance matches, they <strong>must</strong> be returned in the order
+     * originally registered through the <code>add()</code> method.
+     * 
+     * @param namespaceURI Namespace URI for which to select matching rules, or <code>null</code> to match regardless of
+     *            namespace URI
      * @param pattern Nesting pattern to be matched
      */
-    abstract public List<Rule> match(String namespaceURI, String pattern);
-
+    abstract public List<Rule> match( String namespaceURI, String pattern );
 
     /**
-     * Return a List of all registered Rule instances, or a zero-length List
-     * if there are no registered Rule instances.  If more than one Rule
-     * instance has been registered, they <strong>must</strong> be returned
-     * in the order originally registered through the <code>add()</code>
-     * method.
+     * Return a List of all registered Rule instances, or a zero-length List if there are no registered Rule instances.
+     * If more than one Rule instance has been registered, they <strong>must</strong> be returned in the order
+     * originally registered through the <code>add()</code> method.
      */
     abstract public List<Rule> rules();
 

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java?rev=1102402&r1=1102401&r2=1102402&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/BeanPropertySetterRule.java Thu May 12 18:03:26 2011
@@ -16,10 +16,8 @@
  * limitations under the License.
  */
 
-
 package org.apache.commons.digester3;
 
-
 import java.beans.PropertyDescriptor;
 
 import org.apache.commons.beanutils.BeanUtils;
@@ -27,109 +25,111 @@ import org.apache.commons.beanutils.Dyna
 import org.apache.commons.beanutils.DynaProperty;
 import org.apache.commons.beanutils.PropertyUtils;
 
-
 /**
- * <p> Rule implements sets a bean property on the top object
- * to the body text.</p>
- *
- * <p> The property set:</p>
- * <ul><li>can be specified when the rule is created</li>
- * <li>or can match the current element when the rule is called.</li></ul>
- *
- * <p> Using the second method and the {@link ExtendedBaseRules} child match
- * pattern, all the child elements can be automatically mapped to properties
- * on the parent object.</p>
+ * <p>
+ * Rule implements sets a bean property on the top object to the body text.
+ * </p>
+ * <p>
+ * The property set:
+ * </p>
+ * <ul>
+ * <li>can be specified when the rule is created</li>
+ * <li>or can match the current element when the rule is called.</li>
+ * </ul>
+ * <p>
+ * Using the second method and the {@link ExtendedBaseRules} child match pattern, all the child elements can be
+ * automatically mapped to properties on the parent object.
+ * </p>
  */
 
-public class BeanPropertySetterRule extends Rule {
-
+public class BeanPropertySetterRule
+    extends Rule
+{
 
     // ----------------------------------------------------------- Constructors
 
     /**
-     * <p>Construct rule that sets the given property from the body text.</p>
-     *
+     * <p>
+     * Construct rule that sets the given property from the body text.
+     * </p>
+     * 
      * @param propertyName name of property to set
      */
-    public BeanPropertySetterRule(String propertyName) {
+    public BeanPropertySetterRule( String propertyName )
+    {
 
         this.propertyName = propertyName;
 
     }
 
     /**
-     * <p>Construct rule that automatically sets a property from the body text.
-     *
-     * <p> This construct creates a rule that sets the property
-     * on the top object named the same as the current element.
+     * <p>
+     * Construct rule that automatically sets a property from the body text.
+     * <p>
+     * This construct creates a rule that sets the property on the top object named the same as the current element.
      */
-    public BeanPropertySetterRule() {
+    public BeanPropertySetterRule()
+    {
 
-        this((String)null);
+        this( (String) null );
 
     }
-    
-    // ----------------------------------------------------- Instance Variables
 
+    // ----------------------------------------------------- Instance Variables
 
     /**
      * Set this property on the top object.
      */
     protected String propertyName = null;
 
-
     /**
      * The body text used to set the property.
      */
     protected String bodyText = null;
 
-
     // --------------------------------------------------------- Public Methods
 
-
     /**
      * Process the body text of this element.
-     *
-     * @param namespace the namespace URI of the matching element, or an 
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just 
-     *   the element name otherwise
+     * 
+     * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *            aware or the element has no namespace
+     * @param name the local name if the parser is namespace aware, or just the element name otherwise
      * @param text The text of the body of this element
      */
     @Override
-    public void body(String namespace, String name, String text)
-        throws Exception {
+    public void body( String namespace, String name, String text )
+        throws Exception
+    {
 
         // log some debugging information
-        if (getDigester().getLogger().isDebugEnabled()) {
-            getDigester().getLogger().debug("[BeanPropertySetterRule]{" +
-                    getDigester().getMatch() + "} Called with text '" + text + "'");
+        if ( getDigester().getLogger().isDebugEnabled() )
+        {
+            getDigester().getLogger().debug( "[BeanPropertySetterRule]{" + getDigester().getMatch()
+                                                 + "} Called with text '" + text + "'" );
         }
 
         bodyText = text.trim();
 
     }
 
-
     /**
      * Process the end of this element.
-     *
-     * @param namespace the namespace URI of the matching element, or an 
-     *   empty string if the parser is not namespace aware or the element has
-     *   no namespace
-     * @param name the local name if the parser is namespace aware, or just 
-     *   the element name otherwise
-     *
-     * @exception NoSuchMethodException if the bean does not
-     *  have a writeable property of the specified name
+     * 
+     * @param namespace the namespace URI of the matching element, or an empty string if the parser is not namespace
+     *            aware or the element has no namespace
+     * @param name the local name if the parser is namespace aware, or just the element name otherwise
+     * @exception NoSuchMethodException if the bean does not have a writeable property of the specified name
      */
     @Override
-    public void end(String namespace, String name) throws Exception {
+    public void end( String namespace, String name )
+        throws Exception
+    {
 
         String property = propertyName;
 
-        if (property == null) {
+        if ( property == null )
+        {
             // If we don't have a specific property name,
             // use the element name.
             property = name;
@@ -139,58 +139,61 @@ public class BeanPropertySetterRule exte
         Object top = getDigester().peek();
 
         // log some debugging information
-        if (getDigester().getLogger().isDebugEnabled()) {
-            getDigester().getLogger().debug("[BeanPropertySetterRule]{" + getDigester().getMatch() +
-                    "} Set " + top.getClass().getName() + " property " +
-                               property + " with text " + bodyText);
+        if ( getDigester().getLogger().isDebugEnabled() )
+        {
+            getDigester().getLogger().debug( "[BeanPropertySetterRule]{" + getDigester().getMatch() + "} Set "
+                                                 + top.getClass().getName() + " property " + property + " with text "
+                                                 + bodyText );
         }
 
         // Force an exception if the property does not exist
         // (BeanUtils.setProperty() silently returns in this case)
-        if (top instanceof DynaBean) {
-            DynaProperty desc =
-                ((DynaBean) top).getDynaClass().getDynaProperty(property);
-            if (desc == null) {
-                throw new NoSuchMethodException
-                    ("Bean has no property named " + property);
+        if ( top instanceof DynaBean )
+        {
+            DynaProperty desc = ( (DynaBean) top ).getDynaClass().getDynaProperty( property );
+            if ( desc == null )
+            {
+                throw new NoSuchMethodException( "Bean has no property named " + property );
             }
-        } else /* this is a standard JavaBean */ {
-            PropertyDescriptor desc =
-                PropertyUtils.getPropertyDescriptor(top, property);
-            if (desc == null) {
-                throw new NoSuchMethodException
-                    ("Bean has no property named " + property);
+        }
+        else
+        /* this is a standard JavaBean */{
+            PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor( top, property );
+            if ( desc == null )
+            {
+                throw new NoSuchMethodException( "Bean has no property named " + property );
             }
         }
 
         // Set the property (with conversion as necessary)
-        BeanUtils.setProperty(top, property, bodyText);
+        BeanUtils.setProperty( top, property, bodyText );
 
     }
 
-
     /**
      * Clean up after parsing is complete.
      */
     @Override
-    public void finish() throws Exception {
+    public void finish()
+        throws Exception
+    {
 
         bodyText = null;
 
     }
 
-
     /**
      * Render a printable version of this Rule.
      */
     @Override
-    public String toString() {
+    public String toString()
+    {
 
-        StringBuilder sb = new StringBuilder("BeanPropertySetterRule[");
-        sb.append("propertyName=");
-        sb.append(propertyName);
-        sb.append("]");
-        return (sb.toString());
+        StringBuilder sb = new StringBuilder( "BeanPropertySetterRule[" );
+        sb.append( "propertyName=" );
+        sb.append( propertyName );
+        sb.append( "]" );
+        return ( sb.toString() );
 
     }
 

Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallMethodRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallMethodRule.java?rev=1102402&r1=1102401&r2=1102402&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallMethodRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallMethodRule.java Thu May 12 18:03:26 2011
@@ -16,124 +16,109 @@
  * limitations under the License.
  */
 
-
 package org.apache.commons.digester3;
 
-
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.beanutils.MethodUtils;
 import org.xml.sax.Attributes;
 
-
 /**
- * <p>Rule implementation that calls a method on an object on the stack
- * (normally the top/parent object), passing arguments collected from 
- * subsequent <code>CallParamRule</code> rules or from the body of this
- * element. </p>
- *
- * <p>By using {@link #CallMethodRule(String methodName)} 
- * a method call can be made to a method which accepts no
- * arguments.</p>
- *
- * <p>Incompatible method parameter types are converted 
- * using <code>org.apache.commons.beanutils.ConvertUtils</code>.
+ * <p>
+ * Rule implementation that calls a method on an object on the stack (normally the top/parent object), passing arguments
+ * collected from subsequent <code>CallParamRule</code> rules or from the body of this element.
+ * </p>
+ * <p>
+ * By using {@link #CallMethodRule(String methodName)} a method call can be made to a method which accepts no arguments.
+ * </p>
+ * <p>
+ * Incompatible method parameter types are converted using <code>org.apache.commons.beanutils.ConvertUtils</code>.
+ * </p>
+ * <p>
+ * This rule now uses {@link MethodUtils#invokeMethod} by default. This increases the kinds of methods successfully and
+ * allows primitives to be matched by passing in wrapper classes. There are rare cases when
+ * {@link MethodUtils#invokeExactMethod} (the old default) is required. This method is much stricter in it's reflection.
+ * Setting the <code>UseExactMatch</code> to true reverts to the use of this method.
+ * </p>
+ * <p>
+ * Note that the target method is invoked when the <i>end</i> of the tag the CallMethodRule fired on is encountered,
+ * <i>not</i> when the last parameter becomes available. This implies that rules which fire on tags nested within the
+ * one associated with the CallMethodRule will fire before the CallMethodRule invokes the target method. This behaviour
+ * is not configurable.
+ * </p>
+ * <p>
+ * Note also that if a CallMethodRule is expecting exactly one parameter and that parameter is not available (eg
+ * CallParamRule is used with an attribute name but the attribute does not exist) then the method will not be invoked.
+ * If a CallMethodRule is expecting more than one parameter, then it is always invoked, regardless of whether the
+ * parameters were available or not; missing parameters are converted to the appropriate target type by calling
+ * ConvertUtils.convert. Note that the default ConvertUtils converters for the String type returns a null when passed a
+ * null, meaning that CallMethodRule will passed null for all String parameters for which there is no parameter info
+ * available from the XML. However parameters of type Float and Integer will be passed a real object containing a zero
+ * value as that is the output of the default ConvertUtils converters for those types when passed a null. You can
+ * register custom converters to change this behaviour; see the beautils library documentation for more info.
+ * </p>
+ * <p>
+ * Note that when a constructor is used with paramCount=0, indicating that the body of the element is to be passed to
+ * the target method, an empty element will cause an <i>empty string</i> to be passed to the target method, not null.
+ * And if automatic type conversion is being applied (ie if the target function takes something other than a string as a
+ * parameter) then the conversion will fail if the converter class does not accept an empty string as valid input.
+ * </p>
+ * <p>
+ * CallMethodRule has a design flaw which can cause it to fail under certain rule configurations. All CallMethodRule
+ * instances share a single parameter stack, and all CallParamRule instances simply store their data into the
+ * parameter-info structure that is on the top of the stack. This means that two CallMethodRule instances cannot be
+ * associated with the same pattern without getting scrambled parameter data. This same issue also applies when a
+ * CallMethodRule matches some element X, a different CallMethodRule matches a child element Y and some of the
+ * CallParamRules associated with the first CallMethodRule match element Y or one of its child elements. This issue has
+ * been present since the very first release of Digester. Note, however, that this configuration of CallMethodRule
+ * instances is not commonly required.
  * </p>
- *
- * <p>This rule now uses {@link MethodUtils#invokeMethod} by default.
- * This increases the kinds of methods successfully and allows primitives
- * to be matched by passing in wrapper classes.
- * There are rare cases when {@link MethodUtils#invokeExactMethod} 
- * (the old default) is required.
- * This method is much stricter in it's reflection.
- * Setting the <code>UseExactMatch</code> to true reverts to the use of this 
- * method.</p>
- *
- * <p>Note that the target method is invoked when the  <i>end</i> of
- * the tag the CallMethodRule fired on is encountered, <i>not</i> when the
- * last parameter becomes available. This implies that rules which fire on
- * tags nested within the one associated with the CallMethodRule will 
- * fire before the CallMethodRule invokes the target method. This behaviour is
- * not configurable. </p>
- *
- * <p>Note also that if a CallMethodRule is expecting exactly one parameter
- * and that parameter is not available (eg CallParamRule is used with an
- * attribute name but the attribute does not exist) then the method will
- * not be invoked. If a CallMethodRule is expecting more than one parameter,
- * then it is always invoked, regardless of whether the parameters were
- * available or not; missing parameters are converted to the appropriate target
- * type by calling ConvertUtils.convert. Note that the default ConvertUtils
- * converters for the String type returns a null when passed a null, meaning
- * that CallMethodRule will passed null for all String parameters for which
- * there is no parameter info available from the XML. However parameters of
- * type Float and Integer will be passed a real object containing a zero value
- * as that is the output of the default ConvertUtils converters for those
- * types when passed a null. You can register custom converters to change
- * this behaviour; see the beautils library documentation for more info.</p>
- *
- * <p>Note that when a constructor is used with paramCount=0, indicating that
- * the body of the element is to be passed to the target method, an empty 
- * element will cause an <i>empty string</i> to be passed to the target method,
- * not null. And if automatic type conversion is being applied (ie if the 
- * target function takes something other than a string as a parameter) then 
- * the conversion will fail if the converter class does not accept an empty 
- * string as valid input.</p>
- * 
- * <p>CallMethodRule has a design flaw which can cause it to fail under
- * certain rule configurations. All CallMethodRule instances share a single
- * parameter stack, and all CallParamRule instances simply store their data
- * into the parameter-info structure that is on the top of the stack. This
- * means that two CallMethodRule instances cannot be associated with the
- * same pattern without getting scrambled parameter data. This same issue
- * also applies when a CallMethodRule matches some element X, a different 
- * CallMethodRule matches a child element Y and some of the CallParamRules 
- * associated with the first CallMethodRule match element Y or one of its 
- * child elements. This issue has been present since the very first release
- * of Digester. Note, however, that this configuration of CallMethodRule
- * instances is not commonly required.</p>
  */
 
-public class CallMethodRule extends Rule {
+public class CallMethodRule
+    extends Rule
+{
 
     // ----------------------------------------------------------- Constructors
 
-
     /**
-     * Construct a "call method" rule with the specified method name.  The
-     * parameter types (if any) default to java.lang.String.
-     *
+     * Construct a "call method" rule with the specified method name. The parameter types (if any) default to
+     * java.lang.String.
+     * 
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of this element.
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of this
+     *            element.
      */
-    public CallMethodRule(String methodName,
-                          int paramCount) {
-        this(0, methodName, paramCount);
+    public CallMethodRule( String methodName, int paramCount )
+    {
+        this( 0, methodName, paramCount );
     }
 
     /**
-     * Construct a "call method" rule with the specified method name.  The
-     * parameter types (if any) default to java.lang.String.
-     *
-     * @param targetOffset location of the target object. Positive numbers are
-     * relative to the top of the digester object stack. Negative numbers 
-     * are relative to the bottom of the stack. Zero implies the top
-     * object on the stack.
+     * Construct a "call method" rule with the specified method name. The parameter types (if any) default to
+     * java.lang.String.
+     * 
+     * @param targetOffset location of the target object. Positive numbers are relative to the top of the digester
+     *            object stack. Negative numbers are relative to the bottom of the stack. Zero implies the top object on
+     *            the stack.
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of this element.
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of this
+     *            element.
      */
-    public CallMethodRule(int targetOffset,
-                          String methodName,
-                          int paramCount) {
+    public CallMethodRule( int targetOffset, String methodName, int paramCount )
+    {
 
         this.targetOffset = targetOffset;
         this.methodName = methodName;
-        this.paramCount = paramCount;        
-        if (paramCount == 0) {
+        this.paramCount = paramCount;
+        if ( paramCount == 0 )
+        {
             this.paramTypes = new Class[] { String.class };
-        } else {
+        }
+        else
+        {
             this.paramTypes = new Class[paramCount];
-            for (int i = 0; i < this.paramTypes.length; i++) {
+            for ( int i = 0; i < this.paramTypes.length; i++ )
+            {
                 this.paramTypes[i] = String.class;
             }
         }
@@ -141,180 +126,154 @@ public class CallMethodRule extends Rule
     }
 
     /**
-     * Construct a "call method" rule with the specified method name.  
-     * The method should accept no parameters.
-     *
+     * Construct a "call method" rule with the specified method name. The method should accept no parameters.
+     * 
      * @param methodName Method name of the parent method to call
      */
-    public CallMethodRule(String methodName) {
-    
-        this(0, methodName, 0, (Class[]) null);
-    
-    }
-    
+    public CallMethodRule( String methodName )
+    {
+
+        this( 0, methodName, 0, (Class[]) null );
+
+    }
 
     /**
-     * Construct a "call method" rule with the specified method name.  
-     * The method should accept no parameters.
-     *
-     * @param targetOffset location of the target object. Positive numbers are
-     * relative to the top of the digester object stack. Negative numbers 
-     * are relative to the bottom of the stack. Zero implies the top
-     * object on the stack.
+     * Construct a "call method" rule with the specified method name. The method should accept no parameters.
+     * 
+     * @param targetOffset location of the target object. Positive numbers are relative to the top of the digester
+     *            object stack. Negative numbers are relative to the bottom of the stack. Zero implies the top object on
+     *            the stack.
      * @param methodName Method name of the parent method to call
      */
-    public CallMethodRule(int targetOffset, String methodName) {
-    
-        this(targetOffset, methodName, 0, (Class[]) null);
-    
-    }
-    
+    public CallMethodRule( int targetOffset, String methodName )
+    {
+
+        this( targetOffset, methodName, 0, (Class[]) null );
+
+    }
 
     /**
-     * Construct a "call method" rule with the specified method name and
-     * parameter types. If <code>paramCount</code> is set to zero the rule
-     * will use the body of this element as the single argument of the
-     * method, unless <code>paramTypes</code> is null or empty, in this
-     * case the rule will call the specified method with no arguments.
-     *
+     * Construct a "call method" rule with the specified method name and parameter types. If <code>paramCount</code> is
+     * set to zero the rule will use the body of this element as the single argument of the method, unless
+     * <code>paramTypes</code> is null or empty, in this case the rule will call the specified method with no arguments.
+     * 
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of ths element
-     * @param paramTypes The Java class names of the arguments
-     *  (if you wish to use a primitive type, specify the corresonding
-     *  Java wrapper class instead, such as <code>java.lang.Boolean</code>
-     *  for a <code>boolean</code> parameter)
-     */
-    public CallMethodRule(
-                            String methodName,
-                            int paramCount, 
-                            String paramTypes[]) {
-        this(0, methodName, paramCount, paramTypes);
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of ths element
+     * @param paramTypes The Java class names of the arguments (if you wish to use a primitive type, specify the
+     *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
+     *            <code>boolean</code> parameter)
+     */
+    public CallMethodRule( String methodName, int paramCount, String paramTypes[] )
+    {
+        this( 0, methodName, paramCount, paramTypes );
     }
 
     /**
-     * Construct a "call method" rule with the specified method name and
-     * parameter types. If <code>paramCount</code> is set to zero the rule
-     * will use the body of this element as the single argument of the
-     * method, unless <code>paramTypes</code> is null or empty, in this
-     * case the rule will call the specified method with no arguments.
-     *
-     * @param targetOffset location of the target object. Positive numbers are
-     * relative to the top of the digester object stack. Negative numbers 
-     * are relative to the bottom of the stack. Zero implies the top
-     * object on the stack.
+     * Construct a "call method" rule with the specified method name and parameter types. If <code>paramCount</code> is
+     * set to zero the rule will use the body of this element as the single argument of the method, unless
+     * <code>paramTypes</code> is null or empty, in this case the rule will call the specified method with no arguments.
+     * 
+     * @param targetOffset location of the target object. Positive numbers are relative to the top of the digester
+     *            object stack. Negative numbers are relative to the bottom of the stack. Zero implies the top object on
+     *            the stack.
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of ths element
-     * @param paramTypes The Java class names of the arguments
-     *  (if you wish to use a primitive type, specify the corresonding
-     *  Java wrapper class instead, such as <code>java.lang.Boolean</code>
-     *  for a <code>boolean</code> parameter)
-     */
-    public CallMethodRule(  int targetOffset,
-                            String methodName,
-                            int paramCount, 
-                            String paramTypes[]) {
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of ths element
+     * @param paramTypes The Java class names of the arguments (if you wish to use a primitive type, specify the
+     *            corresonding Java wrapper class instead, such as <code>java.lang.Boolean</code> for a
+     *            <code>boolean</code> parameter)
+     */
+    public CallMethodRule( int targetOffset, String methodName, int paramCount, String paramTypes[] )
+    {
 
         this.targetOffset = targetOffset;
         this.methodName = methodName;
         this.paramCount = paramCount;
-        if (paramTypes == null) {
+        if ( paramTypes == null )
+        {
             this.paramTypes = new Class[paramCount];
-            for (int i = 0; i < this.paramTypes.length; i++) {
+            for ( int i = 0; i < this.paramTypes.length; i++ )
+            {
                 this.paramTypes[i] = String.class;
             }
-        } else {
+        }
+        else
+        {
             // copy the parameter class names into an array
-            // the classes will be loaded when the digester is set 
+            // the classes will be loaded when the digester is set
             this.paramClassNames = new String[paramTypes.length];
-            for (int i = 0; i < this.paramClassNames.length; i++) {
+            for ( int i = 0; i < this.paramClassNames.length; i++ )
+            {
                 this.paramClassNames[i] = paramTypes[i];
             }
         }
 
     }
 
-
     /**
-     * Construct a "call method" rule with the specified method name and
-     * parameter types. If <code>paramCount</code> is set to zero the rule
-     * will use the body of this element as the single argument of the
-     * method, unless <code>paramTypes</code> is null or empty, in this
-     * case the rule will call the specified method with no arguments.
-     *
+     * Construct a "call method" rule with the specified method name and parameter types. If <code>paramCount</code> is
+     * set to zero the rule will use the body of this element as the single argument of the method, unless
+     * <code>paramTypes</code> is null or empty, in this case the rule will call the specified method with no arguments.
+     * 
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of ths element
-     * @param paramTypes The Java classes that represent the
-     *  parameter types of the method arguments
-     *  (if you wish to use a primitive type, specify the corresonding
-     *  Java wrapper class instead, such as <code>java.lang.Boolean.TYPE</code>
-     *  for a <code>boolean</code> parameter)
-     */
-    public CallMethodRule(
-                            String methodName,
-                            int paramCount, 
-                            Class<?> paramTypes[]) {
-        this(0, methodName, paramCount, paramTypes);
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of ths element
+     * @param paramTypes The Java classes that represent the parameter types of the method arguments (if you wish to use
+     *            a primitive type, specify the corresonding Java wrapper class instead, such as
+     *            <code>java.lang.Boolean.TYPE</code> for a <code>boolean</code> parameter)
+     */
+    public CallMethodRule( String methodName, int paramCount, Class<?> paramTypes[] )
+    {
+        this( 0, methodName, paramCount, paramTypes );
     }
 
     /**
-     * Construct a "call method" rule with the specified method name and
-     * parameter types. If <code>paramCount</code> is set to zero the rule
-     * will use the body of this element as the single argument of the
-     * method, unless <code>paramTypes</code> is null or empty, in this
-     * case the rule will call the specified method with no arguments.
-     *
-     * @param targetOffset location of the target object. Positive numbers are
-     * relative to the top of the digester object stack. Negative numbers 
-     * are relative to the bottom of the stack. Zero implies the top
-     * object on the stack.
+     * Construct a "call method" rule with the specified method name and parameter types. If <code>paramCount</code> is
+     * set to zero the rule will use the body of this element as the single argument of the method, unless
+     * <code>paramTypes</code> is null or empty, in this case the rule will call the specified method with no arguments.
+     * 
+     * @param targetOffset location of the target object. Positive numbers are relative to the top of the digester
+     *            object stack. Negative numbers are relative to the bottom of the stack. Zero implies the top object on
+     *            the stack.
      * @param methodName Method name of the parent method to call
-     * @param paramCount The number of parameters to collect, or
-     *  zero for a single argument from the body of ths element
-     * @param paramTypes The Java classes that represent the
-     *  parameter types of the method arguments
-     *  (if you wish to use a primitive type, specify the corresonding
-     *  Java wrapper class instead, such as <code>java.lang.Boolean.TYPE</code>
-     *  for a <code>boolean</code> parameter)
-     */
-    public CallMethodRule(  int targetOffset,
-                            String methodName,
-                            int paramCount, 
-                            Class<?> paramTypes[]) {
+     * @param paramCount The number of parameters to collect, or zero for a single argument from the body of ths element
+     * @param paramTypes The Java classes that represent the parameter types of the method arguments (if you wish to use
+     *            a primitive type, specify the corresonding Java wrapper class instead, such as
+     *            <code>java.lang.Boolean.TYPE</code> for a <code>boolean</code> parameter)
+     */
+    public CallMethodRule( int targetOffset, String methodName, int paramCount, Class<?> paramTypes[] )
+    {
 
         this.targetOffset = targetOffset;
         this.methodName = methodName;
         this.paramCount = paramCount;
-        if (paramTypes == null) {
+        if ( paramTypes == null )
+        {
             this.paramTypes = new Class[paramCount];
-            for (int i = 0; i < this.paramTypes.length; i++) {
+            for ( int i = 0; i < this.paramTypes.length; i++ )
+            {
                 this.paramTypes[i] = String.class;
             }
-        } else {
+        }
+        else
+        {
             this.paramTypes = new Class[paramTypes.length];
-            for (int i = 0; i < this.paramTypes.length; i++) {
+            for ( int i = 0; i < this.paramTypes.length; i++ )
+            {
                 this.paramTypes[i] = paramTypes[i];
             }
         }
 
     }
 
-
     // ----------------------------------------------------- Instance Variables
 
-
     /**
      * The body text collected from this element.
      */
     protected String bodyText = null;
 
-
-    /** 
-     * location of the target object for the call, relative to the
-     * top of the digester object stack. The default value of zero
-     * means the target object is the one on top of the stack.
+    /**
+     * location of the target object for the call, relative to the top of the digester object stack. The default value
+     * of zero means the target object is the one on top of the stack.
      */
     protected int targetOffset = 0;
 
@@ -323,69 +282,68 @@ public class CallMethodRule extends Rule
      */
     protected String methodName = null;
 
-
     /**
-     * The number of parameters to collect from <code>MethodParam</code> rules.
-     * If this value is zero, a single parameter will be collected from the
-     * body of this element.
+     * The number of parameters to collect from <code>MethodParam</code> rules. If this value is zero, a single
+     * parameter will be collected from the body of this element.
      */
     protected int paramCount = 0;
 
-
     /**
      * The parameter types of the parameters to be collected.
      */
     protected Class<?> paramTypes[] = null;
 
     /**
-     * The names of the classes of the parameters to be collected.
-     * This attribute allows creation of the classes to be postponed until the digester is set.
+     * The names of the classes of the parameters to be collected. This attribute allows creation of the classes to be
+     * postponed until the digester is set.
      */
     private String paramClassNames[] = null;
-    
+
     /**
      * Should <code>MethodUtils.invokeExactMethod</code> be used for reflection.
      */
     protected boolean useExactMatch = false;
-    
+
     // --------------------------------------------------------- Public Methods
-    
+
     /**
-     * Should <code>MethodUtils.invokeExactMethod</code>
-     * be used for the reflection.
+     * Should <code>MethodUtils.invokeExactMethod</code> be used for the reflection.
      */
-    public boolean getUseExactMatch() {
+    public boolean getUseExactMatch()
+    {
         return useExactMatch;
     }
-    
+
     /**
-     * Set whether <code>MethodUtils.invokeExactMethod</code>
-     * should be used for the reflection.
-     */    
-    public void setUseExactMatch(boolean useExactMatch)
-    { 
+     * Set whether <code>MethodUtils.invokeExactMethod</code> should be used for the reflection.
+     */
+    public void setUseExactMatch( boolean useExactMatch )
+    {
         this.useExactMatch = useExactMatch;
     }
 
     /**
-     * Set the associated digester.
-     * If needed, this class loads the parameter classes from their names.
+     * Set the associated digester. If needed, this class loads the parameter classes from their names.
      */
     @Override
-    public void setDigester(Digester digester)
+    public void setDigester( Digester digester )
     {
         // call superclass
-        super.setDigester(digester);
+        super.setDigester( digester );
         // if necessary, load parameter classes
-        if (this.paramClassNames != null) {
+        if ( this.paramClassNames != null )
+        {
             this.paramTypes = new Class[paramClassNames.length];
-            for (int i = 0; i < this.paramClassNames.length; i++) {
-                try {
-                    this.paramTypes[i] =
-                            digester.getClassLoader().loadClass(this.paramClassNames[i]);
-                } catch (ClassNotFoundException e) {
+            for ( int i = 0; i < this.paramClassNames.length; i++ )
+            {
+                try
+                {
+                    this.paramTypes[i] = digester.getClassLoader().loadClass( this.paramClassNames[i] );
+                }
+                catch ( ClassNotFoundException e )
+                {
                     // use the digester log
-                    digester.getLogger().error("(CallMethodRule) Cannot load class " + this.paramClassNames[i], e);
+                    digester.getLogger().error( "(CallMethodRule) Cannot load class " + this.paramClassNames[i], e );
                     this.paramTypes[i] = null; // Will cause NPE later
                 }
             }
@@ -394,57 +352,67 @@ public class CallMethodRule extends Rule
 
     /**
      * Process the start of this element.
-     *
+     * 
      * @param attributes The attribute list for this element
      */
     @Override
-    public void begin(String namespace, String name, Attributes attributes) throws Exception {
+    public void begin( String namespace, String name, Attributes attributes )
+        throws Exception
+    {
 
         // Push an array to capture the parameter values if necessary
-        if (paramCount > 0) {
+        if ( paramCount > 0 )
+        {
             Object parameters[] = new Object[paramCount];
-            for (int i = 0; i < parameters.length; i++) {
+            for ( int i = 0; i < parameters.length; i++ )
+            {
                 parameters[i] = null;
             }
-            getDigester().pushParams(parameters);
+            getDigester().pushParams( parameters );
         }
 
     }
 
-
     /**
      * Process the body text of this element.
-     *
+     * 
      * @param bodyText The body text of this element
      */
     @Override
-    public void body(String namespace, String name, String text) throws Exception {
+    public void body( String namespace, String name, String text )
+        throws Exception
+    {
 
-        if (paramCount == 0) {
+        if ( paramCount == 0 )
+        {
             this.bodyText = text.trim();
         }
 
     }
 
-
     /**
      * Process the end of this element.
      */
     @Override
-    public void end(String namespace, String name) throws Exception {
+    public void end( String namespace, String name )
+        throws Exception
+    {
 
         // Retrieve or construct the parameter values array
         Object parameters[] = null;
-        if (paramCount > 0) {
+        if ( paramCount > 0 )
+        {
 
             parameters = getDigester().popParams();
-            
-            if (getDigester().getLogger().isTraceEnabled()) {
-                for (int i=0,size=parameters.length;i<size;i++) {
-                    getDigester().getLogger().trace("[CallMethodRule](" + i + ")" + parameters[i]) ;
+
+            if ( getDigester().getLogger().isTraceEnabled() )
+            {
+                for ( int i = 0, size = parameters.length; i < size; i++ )
+                {
+                    getDigester().getLogger().trace( "[CallMethodRule](" + i + ")" + parameters[i] );
                 }
             }
-            
+
             // In the case where the target method takes a single parameter
             // and that parameter does not exist (the CallParamRule never
             // executed or the CallParamRule was intended to set the parameter
@@ -455,29 +423,36 @@ public class CallMethodRule extends Rule
             // only be overridden if data is present in the XML. I don't
             // know why this should only apply to methods taking *one*
             // parameter, but it always has been so we can't change it now.
-            if (paramCount == 1 && parameters[0] == null) {
+            if ( paramCount == 1 && parameters[0] == null )
+            {
                 return;
             }
 
-        } else if (paramTypes != null && paramTypes.length != 0) {
+        }
+        else if ( paramTypes != null && paramTypes.length != 0 )
+        {
             // Having paramCount == 0 and paramTypes.length == 1 indicates
             // that we have the special case where the target method has one
             // parameter being the body text of the current element.
 
             // There is no body text included in the source XML file,
             // so skip the method call
-            if (bodyText == null) {
+            if ( bodyText == null )
+            {
                 return;
             }
 
             parameters = new Object[1];
             parameters[0] = bodyText;
-            if (paramTypes.length == 0) {
+            if ( paramTypes.length == 0 )
+            {
                 paramTypes = new Class[1];
                 paramTypes[0] = String.class;
             }
 
-        } else {
+        }
+        else
+        {
             // When paramCount is zero and paramTypes.length is zero it
             // means that we truly are calling a method with no parameters.
             // Nothing special needs to be done here.
@@ -485,106 +460,122 @@ public class CallMethodRule extends Rule
 
         // Construct the parameter values array we will need
         // We only do the conversion if the param value is a String and
-        // the specified paramType is not String. 
+        // the specified paramType is not String.
         Object paramValues[] = new Object[paramTypes.length];
-        for (int i = 0; i < paramTypes.length; i++) {
-            // convert nulls and convert stringy parameters 
+        for ( int i = 0; i < paramTypes.length; i++ )
+        {
+            // convert nulls and convert stringy parameters
             // for non-stringy param types
-            if(
-                parameters[i] == null ||
-                 (parameters[i] instanceof String && 
-                   !String.class.isAssignableFrom(paramTypes[i]))) {
-                
-                paramValues[i] =
-                        ConvertUtils.convert((String) parameters[i], paramTypes[i]);
-            } else {
+            if ( parameters[i] == null
+                || ( parameters[i] instanceof String && !String.class.isAssignableFrom( paramTypes[i] ) ) )
+            {
+
+                paramValues[i] = ConvertUtils.convert( (String) parameters[i], paramTypes[i] );
+            }
+            else
+            {
                 paramValues[i] = parameters[i];
             }
         }
 
         // Determine the target object for the method call
         Object target;
-        if (targetOffset >= 0) {
-            target = getDigester().peek(targetOffset);
-        } else {
+        if ( targetOffset >= 0 )
+        {
+            target = getDigester().peek( targetOffset );
+        }
+        else
+        {
             target = getDigester().peek( getDigester().getCount() + targetOffset );
         }
-        
-        if (target == null) {
+
+        if ( target == null )
+        {
             StringBuilder sb = new StringBuilder();
-            sb.append("[CallMethodRule]{");
-            sb.append(getDigester().getMatch());
-            sb.append("} Call target is null (");
-            sb.append("targetOffset=");
-            sb.append(targetOffset);
-            sb.append(",stackdepth=");
-            sb.append(getDigester().getCount());
-            sb.append(")");
-            throw new org.xml.sax.SAXException(sb.toString());
+            sb.append( "[CallMethodRule]{" );
+            sb.append( getDigester().getMatch() );
+            sb.append( "} Call target is null (" );
+            sb.append( "targetOffset=" );
+            sb.append( targetOffset );
+            sb.append( ",stackdepth=" );
+            sb.append( getDigester().getCount() );
+            sb.append( ")" );
+            throw new org.xml.sax.SAXException( sb.toString() );
         }
-        
+
         // Invoke the required method on the top object
-        if (getDigester().getLogger().isDebugEnabled()) {
-            StringBuilder sb = new StringBuilder("[CallMethodRule]{");
-            sb.append(getDigester().getMatch());
-            sb.append("} Call ");
-            sb.append(target.getClass().getName());
-            sb.append(".");
-            sb.append(methodName);
-            sb.append("(");
-            for (int i = 0; i < paramValues.length; i++) {
-                if (i > 0) {
-                    sb.append(",");
+        if ( getDigester().getLogger().isDebugEnabled() )
+        {
+            StringBuilder sb = new StringBuilder( "[CallMethodRule]{" );
+            sb.append( getDigester().getMatch() );
+            sb.append( "} Call " );
+            sb.append( target.getClass().getName() );
+            sb.append( "." );
+            sb.append( methodName );
+            sb.append( "(" );
+            for ( int i = 0; i < paramValues.length; i++ )
+            {
+                if ( i > 0 )
+                {
+                    sb.append( "," );
+                }
+                if ( paramValues[i] == null )
+                {
+                    sb.append( "null" );
+                }
+                else
+                {
+                    sb.append( paramValues[i].toString() );
                 }
-                if (paramValues[i] == null) {
-                    sb.append("null");
-                } else {
-                    sb.append(paramValues[i].toString());
+                sb.append( "/" );
+                if ( paramTypes[i] == null )
+                {
+                    sb.append( "null" );
                 }
-                sb.append("/");
-                if (paramTypes[i] == null) {
-                    sb.append("null");
-                } else {
-                    sb.append(paramTypes[i].getName());
+                else
+                {
+                    sb.append( paramTypes[i].getName() );
                 }
             }
-            sb.append(")");
-            getDigester().getLogger().debug(sb.toString());
+            sb.append( ")" );
+            getDigester().getLogger().debug( sb.toString() );
         }
-        
+
         Object result = null;
-        if (useExactMatch) {
+        if ( useExactMatch )
+        {
             // invoke using exact match
-            result = MethodUtils.invokeExactMethod(target, methodName,
-                paramValues, paramTypes);
-                
-        } else {
+            result = MethodUtils.invokeExactMethod( target, methodName, paramValues, paramTypes );
+
+        }
+        else
+        {
             // invoke using fuzzier match
-            result = MethodUtils.invokeMethod(target, methodName,
-                paramValues, paramTypes);            
+            result = MethodUtils.invokeMethod( target, methodName, paramValues, paramTypes );
         }
-        
-        processMethodCallResult(result);
-    }
 
+        processMethodCallResult( result );
+    }
 
     /**
      * Clean up after parsing is complete.
      */
     @Override
-    public void finish() throws Exception {
+    public void finish()
+        throws Exception
+    {
 
         bodyText = null;
 
     }
 
     /**
-     * Subclasses may override this method to perform additional processing of the 
-     * invoked method's result.
-     *
+     * Subclasses may override this method to perform additional processing of the invoked method's result.
+     * 
      * @param result the Object returned by the method invoked, possibly null
      */
-    protected void processMethodCallResult(Object result) {
+    protected void processMethodCallResult( Object result )
+    {
         // do nothing
     }
 
@@ -592,27 +583,30 @@ public class CallMethodRule extends Rule
      * Render a printable version of this Rule.
      */
     @Override
-    public String toString() {
+    public String toString()
+    {
 
-        StringBuilder sb = new StringBuilder("CallMethodRule[");
-        sb.append("methodName=");
-        sb.append(methodName);
-        sb.append(", paramCount=");
-        sb.append(paramCount);
-        sb.append(", paramTypes={");
-        if (paramTypes != null) {
-            for (int i = 0; i < paramTypes.length; i++) {
-                if (i > 0) {
-                    sb.append(", ");
+        StringBuilder sb = new StringBuilder( "CallMethodRule[" );
+        sb.append( "methodName=" );
+        sb.append( methodName );
+        sb.append( ", paramCount=" );
+        sb.append( paramCount );
+        sb.append( ", paramTypes={" );
+        if ( paramTypes != null )
+        {
+            for ( int i = 0; i < paramTypes.length; i++ )
+            {
+                if ( i > 0 )
+                {
+                    sb.append( ", " );
                 }
-                sb.append(paramTypes[i].getName());
+                sb.append( paramTypes[i].getName() );
             }
         }
-        sb.append("}");
-        sb.append("]");
-        return (sb.toString());
+        sb.append( "}" );
+        sb.append( "]" );
+        return ( sb.toString() );
 
     }
 
-
 }