skitching 2005/01/17 01:45:24 Modified: digester/src/examples/xmlrules/addressbook Person.java example.xml readme.txt xmlrules.xml Added: digester/src/examples/xmlrules/addressbook Address.java Log: Add example of SetNestedPropertiesRule usage. Patch provided by Wendy Smoak. Revision Changes Path 1.2 +10 -0 jakarta-commons/digester/src/examples/xmlrules/addressbook/Person.java Index: Person.java =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/examples/xmlrules/addressbook/Person.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Person.java 17 Apr 2004 10:54:06 -0000 1.1 +++ Person.java 17 Jan 2005 09:45:23 -0000 1.2 @@ -14,8 +14,10 @@ * limitations under the License. */ +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; /** * See Main.java. @@ -25,6 +27,7 @@ private String category; private String name; private HashMap emails = new HashMap(); + private List addresses = new ArrayList(); /** * A unique id for this person. Note that the Digester automatically @@ -46,6 +49,10 @@ public void addEmail(String type, String address) { emails.put(type, address); } + + public void addAddress( Address addr ) { + addresses.add( addr ); + } public void print() { System.out.println("Person #" + id); @@ -58,5 +65,8 @@ System.out.println(" email (type " + type + ") : " + address); } + + System.out.println( addresses ); + } } 1.3 +24 -0 jakarta-commons/digester/src/examples/xmlrules/addressbook/example.xml Index: example.xml =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/examples/xmlrules/addressbook/example.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- example.xml 9 Sep 2004 20:38:21 -0000 1.2 +++ example.xml 17 Jan 2005 09:45:23 -0000 1.3 @@ -18,12 +18,36 @@ <person id="1" category="acquaintance"> <name>Gonzo</name> <email type="business">[EMAIL PROTECTED]</email> + <address> + <type>home</type> + <street>123 Maine Ave.</street> + <city>Las Vegas</city> + <state>NV</state> + <zip>01234</zip> + <country>USA</country> + </address> + <address> + <type>business</type> + <street>234 Maple Dr.</street> + <city>Los Angeles</city> + <state>CA</state> + <zip>98765</zip> + <country>USA</country> + </address> </person> <person id="2" category="rolemodel"> <name>Kermit</name> <email type="business">[EMAIL PROTECTED]</email> <email type="home">[EMAIL PROTECTED]</email> + <address> + <type>business</type> + <street>987 Brown Rd</street> + <city>Las Cruces</city> + <state>NM</state> + <zip>75321</zip> + <country>USA</country> + </address> </person> </address-book> 1.3 +2 -0 jakarta-commons/digester/src/examples/xmlrules/addressbook/readme.txt Index: readme.txt =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/examples/xmlrules/addressbook/readme.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- readme.txt 9 Sep 2004 20:38:21 -0000 1.2 +++ readme.txt 17 Jan 2005 09:45:23 -0000 1.3 @@ -26,6 +26,8 @@ * how to use the "object create" rule to create java objects * how to use the "set properties" rule (basic usage) to map xml attributes to java bean properties. +* how to use the "set nested properties" rule (basic usage) to map nested + elements to java bean properties. * how to use the "set next" rule to build trees of java objects. * how to use the "call method rule" (basic usage) * how to use the "call parameter rule" to process the text contained 1.2 +7 -0 jakarta-commons/digester/src/examples/xmlrules/addressbook/xmlrules.xml Index: xmlrules.xml =================================================================== RCS file: /home/cvs/jakarta-commons/digester/src/examples/xmlrules/addressbook/xmlrules.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- xmlrules.xml 17 Apr 2004 10:54:06 -0000 1.1 +++ xmlrules.xml 17 Jan 2005 09:45:23 -0000 1.2 @@ -36,6 +36,13 @@ <call-param-rule paramnumber='0' attrname='type'/> <call-param-rule paramnumber='1'/> </pattern> + + <pattern value="address"> + <object-create-rule classname="Address"/> + <set-nested-properties-rule/> + <set-next-rule methodname="addAddress"/> + </pattern> + </pattern> </pattern> </digester-rules> 1.1 jakarta-commons/digester/src/examples/xmlrules/addressbook/Address.java Index: Address.java =================================================================== /*
* Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.HashMap; import java.util.Iterator; /** * See Main.java. */ public class Address { private String type; private String street; private String city; private String state; private String zip; private String country; public String toString() { StringBuffer sb = new StringBuffer(); sb.append( " address (type "+ type + ")\n"); sb.append( " " + street + "\n"); sb.append( " " + city + " " + state + " " + zip + "\n"); sb.append( " " + country + "\n"); return sb.toString(); } /** * Returns the value of street. */ public String getStreet() { return street; } /** * Sets the value of street. * @param street The value to assign to street. */ public void setStreet(String street) { this.street = street; } /** * Returns the value of city. */ public String getCity() { return city; } /** * Sets the value of city. * @param city The value to assign to city. */ public void setCity(String city) { this.city = city; } /** * Returns the value of state. */ public String getState() { return state; } /** * Sets the value of state. * @param state The value to assign to state. */ public void setState(String state) { this.state = state; } /** * Returns the value of zip. */ public String getZip() { return zip; } /** * Sets the value of zip. * @param zip The value to assign to zip. */ public void setZip(String zip) { this.zip = zip; } /** * Returns the value of country. */ public String getCountry() { return country; } /** * Sets the value of country. * @param country The value to assign to country. */ public void setCountry(String country) { this.country = country; } /** * Returns the value of type. */ public String getType() { return type; } /** * Sets the value of type. * @param type The value to assign to type. */ public void setType(String type) { this.type = type; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]