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