tobrien 2003/03/10 13:10:11
Modified: digester project.xml
digester/src/java/org/apache/commons/digester/xmlrules
DigesterRuleParser.java digester-rules.dtd
digester/src/test/org/apache/commons/digester/xmlrules
DigesterLoaderTest.java TestObject.java test.xml
testrules.xml
digester/xdocs index.xml
Log:
Added patch with tests for bean-property-setter-rule
Revision Changes Path
1.10 +7 -0 jakarta-commons/digester/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/project.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- project.xml 28 Feb 2003 08:22:51 -0000 1.9
+++ project.xml 10 Mar 2003 21:10:11 -0000 1.10
@@ -50,6 +50,13 @@
<email>[EMAIL PROTECTED]</email>
</developer>
</developers>
+
+ <contributors>
+ <contributor>
+ <name>Bradley M. Handy</name>
+ <email>[EMAIL PROTECTED]</email>
+ </contributor>
+ </contributors>
<dependencies>
<dependency>
1.11 +25 -0
jakarta-commons/digester/src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java
Index: DigesterRuleParser.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DigesterRuleParser.java 2 Feb 2003 15:53:56 -0000 1.10
+++ DigesterRuleParser.java 10 Mar 2003 21:10:11 -0000 1.11
@@ -81,6 +81,7 @@
*
* @author David H. Martin - Initial Contribution
* @author Scott Sanders - Added ASL, removed external dependencies
+ * @author Bradley M. Handy - Bean Property Setter Rule addition
*/
public class DigesterRuleParser extends RuleSetBase {
@@ -223,6 +224,10 @@
digester.addRule("*/include", new IncludeRule());
+ digester.addFactoryCreate("*/bean-property-setter-rule", new
BeanPropertySetterRuleFactory());
+ digester.addRule("*/bean-property-setter-rule", new PatternRule("pattern"));
+ digester.addSetNext("*/bean-property-setter-rule", "add", ruleClassName);
+
digester.addFactoryCreate("*/call-method-rule", new
CallMethodRuleFactory());
digester.addRule("*/call-method-rule", new PatternRule("pattern"));
digester.addSetNext("*/call-method-rule", "add", ruleClassName);
@@ -488,6 +493,26 @@
// used to create Rule objects and initialize them from SAX attributes.
///////////////////////////////////////////////////////////////////////
+ /**
+ * Factory for creating a BeanPropertySetterRule.
+ */
+ private class BeanPropertySetterRuleFactory extends
AbstractObjectCreationFactory {
+ public Object createObject(Attributes attributes) throws Exception {
+ Rule beanPropertySetterRule = null;
+ String propertyname = attributes.getValue("propertyname");
+
+ if (propertyname == null) {
+ // call the setter method corresponding to the element name.
+ beanPropertySetterRule = new BeanPropertySetterRule();
+ } else {
+ beanPropertySetterRule = new BeanPropertySetterRule(propertyname);
+ }
+
+ return beanPropertySetterRule;
+ }
+
+ }
+
/**
* Factory for creating a CallMethodRule.
*/
1.6 +10 -4
jakarta-commons/digester/src/java/org/apache/commons/digester/xmlrules/digester-rules.dtd
Index: digester-rules.dtd
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/xmlrules/digester-rules.dtd,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- digester-rules.dtd 23 Aug 2002 13:42:56 -0000 1.5
+++ digester-rules.dtd 10 Mar 2003 21:10:11 -0000 1.6
@@ -10,13 +10,13 @@
Digester is a framework for pattern-matching-based parsing of XML into
Java objects. See http://jakarta.apache.org/commons/digester.html. -->
-<!ENTITY % rule-elements "call-method-rule | call-param-rule |
+<!ENTITY % rule-elements "bean-property-setter-rule | call-method-rule |
call-param-rule |
factory-create-rule | object-create-rule |
set-properties-rule | set-property-rule | set-top-rule |
set-next-rule" >
<!-- digester-rules is the root element. -->
-<!ELEMENT digester-rules (pattern | include | call-method-rule | call-param-rule |
factory-create-rule | object-create-rule | set-properties-rule | set-property-rule |
set-top-rule | set-next-rule )*>
+<!ELEMENT digester-rules (pattern | include | bean-property-setter-rule |
call-method-rule | call-param-rule | factory-create-rule | object-create-rule |
set-properties-rule | set-property-rule | set-top-rule | set-next-rule )*>
<!-- <pattern> defines a matching pattern, or part of a matching pattern. Any
@@ -34,7 +34,7 @@
Note that the use of pattern elements is optional; an alternative is for
each rule element to contain a 'pattern' attribute. -->
-<!ELEMENT pattern (pattern | include | call-method-rule | call-param-rule |
+<!ELEMENT pattern (pattern | include | bean-property-setter-rule | call-method-rule
| call-param-rule |
factory-create-rule | object-create-rule |
set-properties-rule | set-property-rule | set-top-rule |
set-next-rule )*>
@@ -65,6 +65,12 @@
is nested inside one or more <pattern> elements, those patterns
will be prepended to the pattern specified in the rule's 'pattern'
attribute. -->
+
+<!-- Bean Property Setter Rule -->
+<!ELEMENT bean-property-setter-rule EMPTY>
+<!ATTLIST bean-property-setter-rule
+ pattern CDATA #IMPLIED
+ propertyname CDATA #IMPLIED>
<!-- CallMethodRule -->
<!ELEMENT call-method-rule EMPTY>
1.10 +2 -1
jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderTest.java
Index: DigesterLoaderTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DigesterLoaderTest.java 2 Feb 2003 15:52:14 -0000 1.9
+++ DigesterLoaderTest.java 10 Mar 2003 21:10:11 -0000 1.10
@@ -89,7 +89,7 @@
}
public static junit.framework.Test suite() {
- TestSuite suite = new TestSuite(DigesterLoaderTestSuite.class);
+ TestSuite suite = new TestSuite(DigesterLoaderTest.class);
return suite;
}
@@ -155,6 +155,7 @@
assertEquals("Wrong number of classes created", 2 , list.size());
assertEquals("Pushed first", true , ((TestObject)list.get(0)).isPushed());
assertEquals("Didn't push second", false ,
((TestObject)list.get(1)).isPushed());
+ assertTrue("Property was set properly",
((TestObject)list.get(0)).getProperty().equals("I am a property!") );
}
1.8 +11 -0
jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/TestObject.java
Index: TestObject.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/TestObject.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- TestObject.java 2 Feb 2003 15:49:54 -0000 1.7
+++ TestObject.java 10 Mar 2003 21:10:11 -0000 1.8
@@ -68,6 +68,7 @@
*
* @author David H. Martin - Initial Contribution
* @author Scott Sanders - Added ASL, removed external dependencies
+ * @author Tim O'Brien - Added bean property to test bean property setter rule
*/
public class TestObject {
@@ -75,6 +76,8 @@
private String value = "";
private Long longValue = new Long(-1L);
+ private String property = "";
+
private HashMap mapValue = new HashMap();
private boolean pushed = false;
@@ -125,5 +128,13 @@
public String getMapValue( String name ) {
return (String) this.mapValue.get( name );
+ }
+
+ public String getProperty() {
+ return property;
+ }
+
+ public void setProperty(String pProperty) {
+ property = pProperty;
}
}
1.5 +2 -0
jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/test.xml
Index: test.xml
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/test.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- test.xml 23 Aug 2002 13:42:57 -0000 1.4
+++ test.xml 10 Mar 2003 21:10:11 -0000 1.5
@@ -12,6 +12,7 @@
<mapValue name="test1">foo</mapValue>
<mapValue name="test2">bar</mapValue>
</call-method-rule-tests>
+ <property>I am a property!</property>
</foo>
<baz value="baz2"/>
<foo value="foo3">
@@ -19,5 +20,6 @@
<baz value="baz3"/>
<foo value="foo4"/>
</bar>
+ <property>I am a property!</property>
</foo>
</root>
1.5 +1 -0
jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/testrules.xml
Index: testrules.xml
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/test/org/apache/commons/digester/xmlrules/testrules.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- testrules.xml 23 Aug 2002 13:42:57 -0000 1.4
+++ testrules.xml 10 Mar 2003 21:10:11 -0000 1.5
@@ -15,5 +15,6 @@
<call-param-rule pattern="mapValue" attrname="name"
paramnumber="0" />
<call-param-rule pattern="mapValue" paramnumber="1"/>
</pattern>
+ <bean-property-setter-rule pattern="property" name="property"/>
</pattern>
</digester-rules>
1.3 +4 -1 jakarta-commons/digester/xdocs/index.xml
Index: index.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/xdocs/index.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- index.xml 26 Feb 2003 20:39:32 -0000 1.2
+++ index.xml 10 Mar 2003 21:10:11 -0000 1.3
@@ -52,10 +52,13 @@
<section name="Releases">
<ul>
+ <li>Version 1.4.1 (from mirror)
+ <a href="http://jakarta.apache.org/site/binindex.cgi">binary</a>
+ <a href="http://jakarta.apache.org/site/sourceindex.cgi">source</a> (latest)</li>
<li>Version 1.4 (from mirror)
<a href="http://jakarta.apache.org/site/binindex.cgi">binary</a>
<a href="http://jakarta.apache.org/site/sourceindex.cgi">source</a>
- (latest)</li>
+ </li>
<li><a
href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-digester/v1.3/">Version
1.3</a></li>
<li><a
href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-digester/v1.2/">Version
1.2</a></li>
<li><a
href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-digester/v1.1.1/">Version
1.1.1</a></li>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]