You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/02/20 01:29:48 UTC

svn commit: r1072466 - in /commons/sandbox/digester3/trunk/src/examples/addressbook: ./ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/commons/ src/main/java/org/apache/commons/digester3/ src/main/java/org/apache/commons/digester...

Author: simonetripodi
Date: Sun Feb 20 00:29:48 2011
New Revision: 1072466

URL: http://svn.apache.org/viewvc?rev=1072466&view=rev
Log:
imported and adapted the addressbook example

Added:
    commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java   (with props)
    commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java   (with props)

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml Sun Feb 20 00:29:48 2011
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<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>

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/example.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt Sun Feb 20 00:29:48 2011
@@ -0,0 +1,52 @@
+#########################################################################
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#########################################################################
+
+== overview
+
+The files in this directory are intended as an example of how to use
+the Apache Digester's basic functionality via its java interface.
+
+Topics covered:
+* how to create a digester instance
+* how to parse a file
+* 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 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
+  in a tag's body
+* how to use the "call parameter rule" to process the contents of an 
+  xml attribute.
+
+== compiling and running
+
+First rename the build.properties.sample file in the parent directory
+to build.properties and edit it to suit your environment. Then in this
+directory:
+
+* to compile:
+  mvn compile
+
+* to build the jar artifact
+  mvn compile
+
+* to run:
+  mvn verify
+
+Alternatively, you can set up your CLASSPATH appropriately, and
+run the example directly.

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/readme.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java Sun Feb 20 00:29:48 2011
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */ 
+package org.apache.commons.digester3.examples.addressbook;
+
+import java.io.PrintStream;
+
+/**
+ * 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();
+    }
+
+    public void print(PrintStream out, int indentAmount) {
+        StringBuffer indentStr = new StringBuffer(indentAmount);
+        for(; indentAmount > 0; --indentAmount) {
+            indentStr.append(' ');
+        }
+
+        out.print(indentStr);
+        out.print("address type: ");
+        out.println(type);
+
+        out.print(indentStr);
+        out.println("  " + street);
+
+        out.print(indentStr);
+        out.println("  " + city + " " + state + " " + zip);
+
+        out.print(indentStr);
+        out.println("  " + country);
+    }
+
+    /**
+     * 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; 
+    }
+
+}

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Address.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java Sun Feb 20 00:29:48 2011
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */ 
+package org.apache.commons.digester3.examples.addressbook;
+
+import java.util.LinkedList;
+
+/**
+ * See Main.java.
+ */
+public class AddressBook {
+
+    private final LinkedList<Person> people = new LinkedList<Person>();
+
+    public void addPerson(Person p) {
+        people.addLast(p);
+    }
+
+    public void print() {
+        System.out.println("Address book has " + people.size() + " entries");
+
+        for (Person p : this.people) {
+            p.print();
+        }
+    }
+
+}

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBook.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java Sun Feb 20 00:29:48 2011
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */ 
+package org.apache.commons.digester3.examples.addressbook;
+
+import org.apache.commons.digester3.AbstractRulesModule;
+
+/**
+ * See Main.java.
+ */
+public final class AddressBookModule extends AbstractRulesModule {
+
+    @Override
+    protected void configure() {
+        forPattern("address-book/person")
+            // create a new instance of class Person, and push that
+            // object onto the digester stack of objects
+            .createObject().ofType(Person.class)
+            .then()
+            // map *any* attributes on the tag to appropriate
+            // setter-methods on the top object on the stack (the Person
+            // instance created by the preceeding rule). 
+            //
+            // For example:
+            // if attribute "id" exists on the xml tag, and method setId 
+            // with one parameter exists on the object that is on top of
+            // the digester object stack, then a call will be made to that
+            // method. The value will be type-converted from string to
+            // whatever type the target method declares (where possible), 
+            // using the commons ConvertUtils functionality.
+            //
+            // Attributes on the xml tag for which no setter methods exist
+            // on the top object on the stack are just ignored.
+            .setProperties()
+            .then()
+            // call the addPerson method on the second-to-top object on
+            // the stack (the AddressBook object), passing the top object
+            // on the stack (the recently created Person object).
+            .setNext("addPerson");
+        //--------------------------------------------------        
+        // when we encounter a "name" tag, call setName on the top
+        // object on the stack, passing the text contained within the
+        // body of that name element [specifying a zero parameter count
+        // implies one actual parameter, being the body text]. 
+        // The top object on the stack will be a person object, because 
+        // the pattern address-book/person always triggers the 
+        // ObjectCreateRule we added previously.
+        forPattern("address-book/person/name")
+            .callMethod("setName").usingElementBodyAsArgument();
+        //--------------------------------------------------        
+        // when we encounter an "email" tag, call addEmail on the top
+        // object on the stack, passing two parameters: the "type"
+        // attribute, and the text within the tag body.
+        forPattern("address-book/person/email")
+            .callMethod("addEmail").withParamTypes(String.class, String.class)
+            .then()
+            .callParam().ofIndex(0).fromAttribute("type")
+            .then()
+            .callParam().ofIndex(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.
+        forPattern("address-book/person/address")
+            .createObject().ofType(Address.class)
+            .then()
+            .setNestedProperties()
+            .then()
+            .setNext("addAddress");
+    }
+
+}

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/AddressBookModule.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java Sun Feb 20 00:29:48 2011
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */ 
+package org.apache.commons.digester3.examples.addressbook;
+
+import static org.apache.commons.digester3.DigesterLoader.newLoader;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.digester3.Digester;
+import org.xml.sax.SAXException;
+
+/**
+ * A simple program to demonstrate the basic functionality of the
+ * Commons Digester module.
+ * <p>
+ * This code will parse the provided "example.xml" file to build a tree
+ * of java objects, then cause those objects to print out their values
+ * to demonstrate that the input file has been processed correctly.
+ * <p>
+ * As with all code, there are many ways of achieving the same goal;
+ * the solution here is only one possible solution to the problem.
+* <p> 
+ * Very verbose comments are included here, as this class is intended
+ * as a tutorial; if you look closely at method "addRules", you will
+ * see that the amount of code required to use the Digester is actually
+ * quite low.
+ * <p>
+ * Usage: java Main example.xml
+ */
+public class Main {
+
+    /**
+     * Main method : entry point for running this example program.
+     * <p>
+     * Usage: java Example example.xml
+     */
+    public static void main(String[] args) {
+        if (args.length != 1) {
+            usage();
+            System.exit(-1);
+        }
+
+        String filename = args[0];
+
+        // Create a Digester instance
+        Digester d = newLoader(new AddressBookModule()).newDigester();
+
+        // Prime the digester stack with an object for rules to
+        // operate on. Note that it is quite common for "this"
+        // to be the object pushed.
+        AddressBook book = new AddressBook();
+        d.push(book);
+
+        // Process the input file.
+        try {
+            File srcfile = new File(filename);
+            d.parse(srcfile);
+        } catch (IOException ioe) {
+            System.out.println("Error reading input file:" + ioe.getMessage());
+            System.exit(-1);
+        } catch (SAXException se) {
+            System.out.println("Error parsing input file:" + se.getMessage());
+            System.exit(-1);
+        }
+
+        // Print out all the contents of the address book, as loaded from
+        // the input file.
+        book.print();
+    }
+
+    private static void usage() {
+        System.out.println("Usage: java Main example.xml");
+    }
+
+}

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Main.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java?rev=1072466&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java (added)
+++ commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java Sun Feb 20 00:29:48 2011
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */ 
+package org.apache.commons.digester3.examples.addressbook;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * See Main.java.
+ */
+public class Person {
+
+    private final Map<String, String> emails = new HashMap<String, String>();
+
+    private final List<Address> addresses = new ArrayList<Address>();
+
+    private int id;
+
+    private String category;
+
+    private String name;
+
+    /**
+     * A unique id for this person. Note that the Digester automatically
+     * converts the id to an integer.
+     */
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /** we assume only one email of each type... */
+    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);
+        System.out.println("  category=" + category);
+        System.out.println("  name=" + name);
+
+        for (Entry<String, String> email : this.emails.entrySet()) {
+            String type = email.getKey();
+            String address = email.getValue();
+
+            System.out.println("  email (type " + type + ") : " + address);
+        }
+
+        for (Address addr : this.addresses) {
+            addr.print(System.out, 2);
+        }
+    }
+
+}

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/digester3/trunk/src/examples/addressbook/src/main/java/org/apache/commons/digester3/examples/addressbook/Person.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain