Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.2
-
None
Description
Looks like org.apache.commons.digester3.xmlrules.IncludeRule doesn't remove the name of included XML rules resource from the set of included files of the memoryRulesBinder after included module is installed. Hence, one can include resource actually only once. Parsing of the following XML rules (slightly modified example from the documentation) causes unexpected "Circular file inclusion detected" exception:
rules1.xml
<?xml version="1.0"?> <!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML V1.0//EN" "http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd"> <digester-rules> <pattern value="root/foo"> <object-create-rule classname="Foo"/> <include url="classpath:/rules2.xml"/> </pattern> <pattern value="root/foo2"> <object-create-rule classname="Foo"/> <include url="classpath:/rules2.xml"/> </pattern> </digester-rules>
rules2.xml
<?xml version="1.0"?> <!DOCTYPE digester-rules PUBLIC "-//Apache Commons //DTD digester-rules XML V1.0//EN" "http://commons.apache.org/digester/dtds/digester-rules-3.0.dtd"> <digester-rules> <pattern value="bar"> <object-create-rule classname="Bar"/> </pattern> </digester-rules>