You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2005/01/17 10:56:34 UTC
cvs commit: jakarta-commons/digester/src/examples/api/addressbook Address.java Main.java Person.java example.xml
skitching 2005/01/17 01:56:34
Modified: digester/src/examples/api/addressbook Main.java Person.java
example.xml
Added: digester/src/examples/api/addressbook Address.java
Log:
Add example usage of SetNestedPropertiesRule. Patch inspired by code
contributed to xmlrules addressbook example by Wendy Smoak.
Revision Changes Path
1.2 +14 -0 jakarta-commons/digester/src/examples/api/addressbook/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/src/examples/api/addressbook/Main.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Main.java 17 Apr 2004 10:57:46 -0000 1.1
+++ Main.java 17 Jan 2005 09:56:34 -0000 1.2
@@ -129,6 +129,20 @@
d.addCallMethod("address-book/person/email", "addEmail", 2);
d.addCallParam("address-book/person/email", 0, "type");
d.addCallParam("address-book/person/email", 1);
+
+ //--------------------------------------------------
+ // When we encounter an "address" tag, create an instance of class
+ // Address and push it on the digester stack of objects. After
+ // doing that, call addAddress on the second-to-top object on the
+ // digester stack (a "Person" object), passing the top object on
+ // the digester stack (the "Address" object). And also set things
+ // up so that for each child xml element encountered between the start
+ // of the address tag and the end of the address tag, the text
+ // contained in that element is passed to a setXXX method on the
+ // Address object where XXX is the name of the xml element found.
+ d.addObjectCreate("address-book/person/address", Address.class);
+ d.addSetNext("address-book/person/address", "addAddress");
+ d.addSetNestedProperties("address-book/person/address");
}
private static void usage() {
1.6 +10 -0 jakarta-commons/digester/src/examples/api/addressbook/Person.java
Index: Person.java
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/src/examples/api/addressbook/Person.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Person.java 17 Apr 2004 10:59:37 -0000 1.5
+++ Person.java 17 Jan 2005 09:56:34 -0000 1.6
@@ -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 +25 -1 jakarta-commons/digester/src/examples/api/addressbook/example.xml
Index: example.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/src/examples/api/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:20 -0000 1.2
+++ example.xml 17 Jan 2005 09:56:34 -0000 1.3
@@ -1,3 +1,4 @@
+<?xml version='1.0'?>
<!--
Copyright 2004 The Apache Software Foundation.
@@ -13,17 +14,40 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<address-book>
<person id="1" category="acquaintance">
<name>Gonzo</name>
<email type="business">gonzo@muppets.com</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">kermit@muppets.com</email>
<email type="home">kermie@acme.com</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.1 jakarta-commons/digester/src/examples/api/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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org