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/13 02:49:46 UTC
svn commit: r1070178 [1/2] - in
/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations:
./ addressbook/ catalog/ employee/ failingtetst/ person/ rss/ servletbean/
Author: simonetripodi
Date: Sun Feb 13 01:49:45 2011
New Revision: 1070178
URL: http://svn.apache.org/viewvc?rev=1070178&view=rev
Log:
first checkin of adapted version of 'annotations' TestCases package from /trunk
old tests continue working!
Added:
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Channel.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Image.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/Item.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/rss/RssTestCase.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/servletbean/
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/servletbean/ServletBean.java (with props)
commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/servletbean/ServletBeanTestCase.java (with props)
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,65 @@
+/* $Id$
+ *
+ * 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.annotations;
+
+import static org.apache.commons.digester3.DigesterLoader.newLoader;
+import static org.junit.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.commons.digester3.Digester;
+import org.apache.commons.digester3.RulesModule;
+
+/**
+ * Abstract implementation of Class->Digester Rules->parse & confronting.
+ */
+public abstract class AbstractAnnotatedPojoTestCase {
+
+ /**
+ * Loads the digester rules parsing the expected object class, parses the
+ * XML and verify the digester produces the same result.
+ *
+ * @param expected the expected object
+ * @throws Exception if any error occurs
+ */
+ public final void verifyExpectedEqualsToParsed(Object expected) throws Exception {
+ Class<?> clazz = expected.getClass();
+
+ String resource = clazz.getSimpleName() + ".xml";
+ InputStream input = clazz.getResourceAsStream(resource);
+
+ Collection<RulesModule> modules = this.getAuxModules();
+ modules.add(new FromAnnotationsRuleModule(clazz));
+
+ Digester digester = newLoader(modules).newDigester();
+ Object actual = digester.parse(input);
+
+ if (input != null) {
+ input.close();
+ }
+
+ assertEquals(expected, actual);
+ }
+
+ protected Collection<RulesModule> getAuxModules() {
+ return new ArrayList<RulesModule>();
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/AbstractAnnotatedPojoTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,156 @@
+/* $Id$
+ *
+ * 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.annotations.addressbook;
+
+import org.apache.commons.digester3.annotations.rules.BeanPropertySetter;
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "address-book/person/address")
+public class Address {
+
+ @BeanPropertySetter(pattern = "address-book/person/address/type")
+ private String type;
+
+ @BeanPropertySetter(pattern = "address-book/person/address/street")
+ private String street;
+
+ @BeanPropertySetter(pattern = "address-book/person/address/city")
+ private String city;
+
+ @BeanPropertySetter(pattern = "address-book/person/address/state")
+ private String state;
+
+ @BeanPropertySetter(pattern = "address-book/person/address/zip")
+ private String zip;
+
+ @BeanPropertySetter(pattern = "address-book/person/address/country")
+ private String country;
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getStreet() {
+ return street;
+ }
+
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getZip() {
+ return zip;
+ }
+
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Address other = (Address) obj;
+ if (city == null) {
+ if (other.city != null)
+ return false;
+ } else if (!city.equals(other.city))
+ return false;
+ if (country == null) {
+ if (other.country != null)
+ return false;
+ } else if (!country.equals(other.country))
+ return false;
+ if (state == null) {
+ if (other.state != null)
+ return false;
+ } else if (!state.equals(other.state))
+ return false;
+ if (street == null) {
+ if (other.street != null)
+ return false;
+ } else if (!street.equals(other.street))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ if (zip == null) {
+ if (other.zip != null)
+ return false;
+ } else if (!zip.equals(other.zip))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Address [city="
+ + city
+ + ", country="
+ + country
+ + ", state="
+ + state
+ + ", street="
+ + street
+ + ", type="
+ + type
+ + ", zip="
+ + zip
+ + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Address.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,63 @@
+/* $Id$
+ *
+ * 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.annotations.addressbook;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetNext;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "address-book")
+public class AddressBook {
+
+ private final List<Person> people = new ArrayList<Person>();
+
+ @SetNext
+ public void addPerson(Person p) {
+ this.people.add(p);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ AddressBook other = (AddressBook) obj;
+ if (people == null) {
+ if (other.people != null)
+ return false;
+ } else if (!people.equals(other.people))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "AddressBook [people=" + people + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBook.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,81 @@
+/* $Id$
+ *
+ * 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.annotations.addressbook;
+
+import org.apache.commons.digester3.annotations.AbstractAnnotatedPojoTestCase;
+import org.junit.Test;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+public final class AddressBookTestCase extends AbstractAnnotatedPojoTestCase {
+
+ @Test
+ public void testAddressBook() throws Exception {
+ AddressBook addressBook = new AddressBook();
+
+ Person person = new Person();
+ person.setId(1);
+ person.setCategory("acquaintance");
+ person.setName("Gonzo");
+ person.addEmail("business", "gonzo@muppets.com");
+
+ Address address = new Address();
+ address.setType("home");
+ address.setStreet("123 Maine Ave.");
+ address.setCity("Las Vegas");
+ address.setState("NV");
+ address.setZip("01234");
+ address.setCountry("USA");
+ person.addAddress(address);
+
+ address = new Address();
+ address.setType("business");
+ address.setStreet("234 Maple Dr.");
+ address.setCity("Los Angeles");
+ address.setState("CA");
+ address.setZip("98765");
+ address.setCountry("USA");
+ person.addAddress(address);
+
+ addressBook.addPerson(person);
+
+ person = new Person();
+ person.setId(2);
+ person.setCategory("rolemodel");
+ person.setName("Kermit");
+ person.addEmail("business", "kermit@muppets.com");
+ person.addEmail("home", "kermie@acme.com");
+
+ address = new Address();
+ address.setType("business");
+ address.setStreet("987 Brown Rd");
+ address.setCity("Las Cruces");
+ address.setState("NM");
+ address.setZip("75321");
+ address.setCountry("USA");
+ person.addAddress(address);
+
+ addressBook.addPerson(person);
+
+ this.verifyExpectedEqualsToParsed(addressBook);
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/AddressBookTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,145 @@
+/* $Id$
+ *
+ * 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.annotations.addressbook;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.digester3.annotations.rules.BeanPropertySetter;
+import org.apache.commons.digester3.annotations.rules.CallMethod;
+import org.apache.commons.digester3.annotations.rules.CallParam;
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetNext;
+import org.apache.commons.digester3.annotations.rules.SetProperty;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "address-book/person")
+public class Person {
+
+ private final Map<String, String> emails = new HashMap<String, String>();
+
+ private final List<Address> addresses = new ArrayList<Address>();
+
+ @SetProperty(pattern = "address-book/person")
+ private int id;
+
+ @SetProperty(pattern = "address-book/person")
+ private String category;
+
+ @BeanPropertySetter(pattern = "address-book/person/name")
+ private String name;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Map<String, String> getEmails() {
+ return emails;
+ }
+
+ public List<Address> getAddresses() {
+ return addresses;
+ }
+
+ @CallMethod(pattern = "address-book/person/email")
+ public void addEmail(@CallParam(pattern = "address-book/person/email", attributeName = "type") String type,
+ @CallParam(pattern = "address-book/person/email") String address) {
+ this.emails.put(type, address);
+ }
+
+ @SetNext
+ public void addAddress(Address addr) {
+ this.addresses.add(addr);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Person other = (Person) obj;
+ if (addresses == null) {
+ if (other.addresses != null)
+ return false;
+ } else if (!addresses.equals(other.addresses))
+ return false;
+ if (category == null) {
+ if (other.category != null)
+ return false;
+ } else if (!category.equals(other.category))
+ return false;
+ if (emails == null) {
+ if (other.emails != null)
+ return false;
+ } else if (!emails.equals(other.emails))
+ return false;
+ if (id != other.id)
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [addresses="
+ + addresses
+ + ", category="
+ + category
+ + ", emails="
+ + emails
+ + ", id="
+ + id
+ + ", name="
+ + name
+ + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/addressbook/Person.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,122 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetProperty;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@ObjectCreate.List(
+ @ObjectCreate(pattern = "catalog/dvd")
+)
+public final class AudioVisual implements Item {
+
+ @SetProperty(
+ pattern = "catalog/dvd",
+ attributeName = "year-made"
+ )
+ private int yearMade;
+
+ private String category;
+
+ private String name;
+
+ private String desc;
+
+ private int runtime;
+
+ public int getYearMade() {
+ return yearMade;
+ }
+
+ public void setYearMade(int yearMade) {
+ this.yearMade = yearMade;
+ }
+
+ public String getCategory() {
+ return this.category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDesc() {
+ return this.desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public int getRuntime() {
+ return this.runtime;
+ }
+
+ public void setRuntime(int runtime) {
+ this.runtime = runtime;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ AudioVisual other = (AudioVisual) obj;
+ if (this.category == null) {
+ if (other.getCategory() != null)
+ return false;
+ } else if (!this.category.equals(other.getCategory()))
+ return false;
+ if (this.desc == null) {
+ if (other.getDesc() != null)
+ return false;
+ } else if (!this.desc.equals(other.getDesc()))
+ return false;
+ if (this.name == null) {
+ if (other.getName() != null)
+ return false;
+ } else if (!this.name.equals(other.getName()))
+ return false;
+ if (this.runtime != other.getRuntime())
+ return false;
+ if (this.yearMade != other.getYearMade())
+ return false;
+ return true;
+ }
+
+ public void print() {
+ System.out.println(this.toString());
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/AudioVisual.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,126 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+import org.apache.commons.digester3.annotations.rules.BeanPropertySetter;
+import org.apache.commons.digester3.annotations.rules.FactoryCreate;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@FactoryCreate(
+ pattern = "catalog/book",
+ factoryClass = BookFactory.class
+)
+public final class Book implements Item {
+
+ private final String isbn;
+
+ @BeanPropertySetter(pattern = "catalog/book/title")
+ private String title;
+
+ @BeanPropertySetter(pattern = "catalog/book/author")
+ private String author;
+
+ @BeanPropertySetter(pattern = "catalog/book/desc")
+ private String desc;
+
+ public Book(String isbn) {
+ this.isbn = isbn;
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getAuthor() {
+ return this.author;
+ }
+
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ public String getDesc() {
+ return this.desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public String getIsbn() {
+ return this.isbn;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Book other = (Book) obj;
+ if (this.author == null) {
+ if (other.getAuthor() != null)
+ return false;
+ } else if (!this.author.equals(other.getAuthor()))
+ return false;
+ if (this.desc == null) {
+ if (other.getDesc() != null)
+ return false;
+ } else if (!this.desc.equals(other.getDesc()))
+ return false;
+ if (this.isbn == null) {
+ if (other.getIsbn() != null)
+ return false;
+ } else if (!this.isbn.equals(other.getIsbn()))
+ return false;
+ if (this.title == null) {
+ if (other.getTitle() != null)
+ return false;
+ } else if (!this.title.equals(other.getTitle()))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Book [author="
+ + author
+ + ", desc="
+ + desc
+ + ", isbn="
+ + isbn
+ + ", title="
+ + title
+ + "]";
+ }
+
+ public void print() {
+ System.out.println(this.toString());
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Book.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,44 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+import org.apache.commons.digester3.rule.AbstractObjectCreationFactory;
+import org.xml.sax.Attributes;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+public final class BookFactory extends AbstractObjectCreationFactory<Book> {
+
+ private final static String ISBN = "isbn";
+
+ @Override
+ public Book createObject(Attributes attributes) throws Exception {
+ String isbn = attributes.getValue(ISBN);
+
+ if (isbn == null) {
+ throw new Exception(
+ "Mandatory isbn attribute not present on book tag.");
+ }
+
+ return new Book(isbn);
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/BookFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,77 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetNext;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+@ObjectCreate.List(
+ @ObjectCreate(pattern = "catalog")
+)
+public final class Catalog {
+
+ private final List<Item> items = new ArrayList<Item>();
+
+ @SetNext({ AudioVisual.class, Book.class })
+ public void addItem(Item item) {
+ this.items.add(item);
+ }
+
+ public List<Item> getItems() {
+ return this.items;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Catalog other = (Catalog) obj;
+ if (this.items == null) {
+ if (other.getItems() != null)
+ return false;
+ } else if (!this.items.equals(other.getItems()))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Catalog [items=" + items + "]";
+ }
+
+ public void print() {
+ System.out.println("This catalog has " + this.items.size() + " items");
+
+ for (Item item : this.items) {
+ item.print();
+ }
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Catalog.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,84 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+import java.util.Collection;
+import java.util.Stack;
+
+import org.apache.commons.digester3.AbstractRulesModule;
+import org.apache.commons.digester3.RulesModule;
+import org.apache.commons.digester3.annotations.AbstractAnnotatedPojoTestCase;
+import org.junit.Test;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+public final class CatalogTestCase extends AbstractAnnotatedPojoTestCase {
+
+ @Test
+ public void testCatalog() throws Exception {
+ Catalog catalog = new Catalog();
+
+ Book book = new Book("0-596-00184-3");
+ book.setTitle("Ant, The Definitive Guide");
+ book.setAuthor("Jesse Tilly & Eric M. Burke");
+ book.setDesc("Complete build management for Java.");
+ catalog.addItem(book);
+
+ book = new Book("0201310058");
+ book.setTitle("Effective Java");
+ book.setAuthor("Joshua Bloch");
+ book.setDesc("Tips for experienced Java software developers.");
+ catalog.addItem(book);
+
+ AudioVisual dvd = new AudioVisual();
+ dvd.setName("Drunken Master");
+ dvd.setCategory("martial arts");
+ dvd.setDesc("Hilarious slapstick starring Jackie Chan.");
+ dvd.setRuntime(106);
+ dvd.setYearMade(1978);
+ catalog.addItem(dvd);
+
+ dvd = new AudioVisual();
+ dvd.setName("The Piano");
+ dvd.setCategory("drama");
+ dvd.setDesc("Character drama set in New Zealand during the Victorian era.");
+ dvd.setRuntime(121);
+ dvd.setYearMade(1993);
+ catalog.addItem(dvd);
+
+ this.verifyExpectedEqualsToParsed(catalog);
+ }
+
+ @Override
+ protected Collection<RulesModule> getAuxModules() {
+ Collection<RulesModule> modules = new Stack<RulesModule>();
+ modules.add(new AbstractRulesModule() {
+
+ @Override
+ public void configure() {
+ forPattern("catalog/dvd/attr").setProperty("id").extractingValueFromAttribute("value");
+ }
+
+ });
+ return modules;
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/CatalogTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,29 @@
+/* $Id$
+ *
+ * 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.annotations.catalog;
+
+/**
+ *
+ *
+ * @since 2.1
+ */
+public interface Item {
+
+ void print();
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/catalog/Item.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,147 @@
+/* $Id$
+ *
+ * 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.annotations.employee;
+
+import org.apache.commons.digester3.annotations.rules.BeanPropertySetter;
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetProperty;
+import org.apache.commons.digester3.annotations.rules.SetTop;
+
+/**
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "employee/address")
+public class Address {
+
+ @BeanPropertySetter(pattern = "employee/address/city")
+ private String city;
+
+ @BeanPropertySetter(pattern = "employee/address/state")
+ private String state;
+
+ @BeanPropertySetter(pattern = "employee/address/street")
+ private String street;
+
+ @SetProperty(
+ pattern = "employee/address",
+ attributeName = "place"
+ )
+ private String type;
+
+ @BeanPropertySetter(pattern = "employee/address/zip-code")
+ private String zipCode;
+
+ @SetTop(pattern = "employee/address")
+ public void setEmployee(Employee employee) {
+ employee.addAddress(this);
+ }
+
+ public String getCity() {
+ return this.city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getState() {
+ return this.state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getStreet() {
+ return this.street;
+ }
+
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ public String getType() {
+ return this.type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getZipCode() {
+ return this.zipCode;
+ }
+
+ public void setZipCode(String zipCode) {
+ this.zipCode = zipCode;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Address other = (Address) obj;
+ if (this.city == null) {
+ if (other.getCity() != null)
+ return false;
+ } else if (!this.city.equals(other.getCity()))
+ return false;
+ if (this.state == null) {
+ if (other.getState() != null)
+ return false;
+ } else if (!this.state.equals(other.getState()))
+ return false;
+ if (this.street == null) {
+ if (other.getStreet() != null)
+ return false;
+ } else if (!this.street.equals(other.getStreet()))
+ return false;
+ if (this.type == null) {
+ if (other.getType() != null)
+ return false;
+ } else if (!this.type.equals(other.getType()))
+ return false;
+ if (this.zipCode == null) {
+ if (other.getZipCode() != null)
+ return false;
+ } else if (!this.zipCode.equals(other.getZipCode()))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Address [city="
+ + city
+ + ", state="
+ + state
+ + ", street="
+ + street
+ + ", type="
+ + type
+ + ", zipCode="
+ + zipCode
+ + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Address.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,109 @@
+/* $Id$
+ *
+ * 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.annotations.employee;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetProperty;
+
+/**
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "employee")
+public class Employee {
+
+ private final List<Address> addresses = new ArrayList<Address>();
+
+ @SetProperty(
+ pattern = "employee",
+ attributeName = "name"
+ )
+ private String firstName;
+
+ @SetProperty(
+ pattern = "employee",
+ attributeName = "surname"
+ )
+ private String lastName;
+
+ public void addAddress(Address address) {
+ this.addresses.add(address);
+ }
+
+ public String getFirstName() {
+ return this.firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return this.lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public List<Address> getAddresses() {
+ return this.addresses;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Employee other = (Employee) obj;
+ if (this.addresses == null) {
+ if (other.getAddresses() != null)
+ return false;
+ } else if (!this.addresses.equals(other.getAddresses()))
+ return false;
+ if (this.firstName == null) {
+ if (other.getFirstName() != null)
+ return false;
+ } else if (!this.firstName.equals(other.getFirstName()))
+ return false;
+ if (this.lastName == null) {
+ if (other.getLastName() != null)
+ return false;
+ } else if (!this.lastName.equals(other.getLastName()))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Employee [addresses="
+ + addresses
+ + ", firstName="
+ + firstName
+ + ", lastName="
+ + lastName
+ + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/Employee.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,66 @@
+/* $Id$
+ *
+ * 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.annotations.employee;
+
+import java.util.Collection;
+import java.util.Stack;
+
+import org.apache.commons.digester3.RulesModule;
+import org.apache.commons.digester3.annotations.AbstractAnnotatedPojoTestCase;
+import org.apache.commons.digester3.annotations.FromAnnotationsRuleModule;
+import org.junit.Test;
+
+/**
+ *
+ * @since 2.1
+ */
+public final class EmployeeTestCase extends AbstractAnnotatedPojoTestCase {
+
+ @Test
+ public void testEmployee() throws Exception {
+ Employee employee = new Employee();
+ employee.setFirstName("First Name");
+ employee.setLastName("Last Name");
+
+ Address address = new Address();
+ address.setCity("Home City");
+ address.setState("HS");
+ address.setStreet("Home Street");
+ address.setType("home");
+ address.setZipCode("HmZip");
+ address.setEmployee(employee);
+
+ address = new Address();
+ address.setCity("Office City");
+ address.setState("OS");
+ address.setStreet("Office Street");
+ address.setType("office");
+ address.setZipCode("OfZip");
+ address.setEmployee(employee);
+
+ this.verifyExpectedEqualsToParsed(employee);
+ }
+
+ @Override
+ protected Collection<RulesModule> getAuxModules() {
+ Collection<RulesModule> modules = new Stack<RulesModule>();
+ modules.add(new FromAnnotationsRuleModule(Address.class));
+ return modules;
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/employee/EmployeeTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,33 @@
+/* $Id$
+ *
+ * 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.annotations.failingtetst;
+
+public final class BeanWithFakeHandler {
+
+ @FakeRule
+ private String something;
+
+ public void setSomething(String something) {
+ this.something = something;
+ }
+
+ public String getSomething() {
+ return something;
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/BeanWithFakeHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,36 @@
+/* $Id$
+ *
+ * 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.annotations.failingtetst;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+
+import org.apache.commons.digester3.annotations.AnnotationHandler;
+import org.apache.commons.digester3.annotations.spi.AnnotationHandlerFactory;
+
+final class FailingDigesterLoaderHandlerFactory implements AnnotationHandlerFactory {
+
+ /**
+ * {@inheritDoc}
+ */
+ public <H extends AnnotationHandler<? extends Annotation, ? extends AnnotatedElement>> H newInstance(
+ Class<H> type) throws Exception {
+ throw new Exception(String.format("Impossible to create '%s' instances", type.getName()));
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingDigesterLoaderHandlerFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,37 @@
+/* $Id$
+ *
+ * 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.annotations.failingtetst;
+
+import static org.apache.commons.digester3.DigesterLoader.newLoader;
+
+import org.apache.commons.digester3.DigesterLoadingException;
+import org.apache.commons.digester3.annotations.FromAnnotationsRuleModule;
+import org.junit.Test;
+
+/**
+ * Tests to make sure loader fails
+ */
+public final class FailingTestCase {
+
+ @Test(expected = DigesterLoadingException.class)
+ public void failsBecauseFailingDigesterLoaderHandlerFactory() {
+ newLoader(new FromAnnotationsRuleModule(BeanWithFakeHandler.class,
+ new FailingDigesterLoaderHandlerFactory())).newDigester();
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FailingTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,32 @@
+/* $Id$
+ *
+ * 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.annotations.failingtetst;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+
+import org.apache.commons.digester3.RulesBinder;
+import org.apache.commons.digester3.annotations.AnnotationHandler;
+
+final class FakeHandler implements AnnotationHandler<Annotation, AnnotatedElement> {
+
+ public void handle(Annotation annotation, AnnotatedElement element, RulesBinder rulesBinder) {
+ // do nothing
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,36 @@
+/* $Id$
+ *
+ * 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.annotations.failingtetst;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.commons.digester3.annotations.DigesterRule;
+import org.apache.commons.digester3.rule.SetPropertiesRule;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+@DigesterRule(
+ reflectsRule = SetPropertiesRule.class,
+ handledBy = FakeHandler.class
+)
+public @interface FakeRule {
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/failingtetst/FakeRule.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,123 @@
+/* $Id$
+ *
+ * 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.annotations.person;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.digester3.annotations.rules.BeanPropertySetter;
+import org.apache.commons.digester3.annotations.rules.CallMethod;
+import org.apache.commons.digester3.annotations.rules.CallParam;
+import org.apache.commons.digester3.annotations.rules.ObjectCreate;
+import org.apache.commons.digester3.annotations.rules.SetProperty;
+
+/**
+ *
+ * @since 2.1
+ */
+@ObjectCreate(pattern = "person")
+public class Person {
+
+ private final Map<String, String> emails = new HashMap<String, String>();
+
+ @SetProperty(pattern = "person")
+ private int id;
+
+ @SetProperty(pattern = "person")
+ private String category;
+
+ @BeanPropertySetter(pattern = "person/name")
+ private String name;
+
+ @CallMethod(pattern = "person/email")
+ public void addEmail(@CallParam(pattern = "person/email", attributeName = "type") String type,
+ @CallParam(pattern = "person/email") String address) {
+ this.emails.put(type, address);
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Map<String, String> getEmails() {
+ return emails;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Person other = (Person) obj;
+ if (category == null) {
+ if (other.category != null)
+ return false;
+ } else if (!category.equals(other.category))
+ return false;
+ if (emails == null) {
+ if (other.emails != null)
+ return false;
+ } else if (!emails.equals(other.emails))
+ return false;
+ if (id != other.id)
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [category="
+ + category
+ + ", emails="
+ + emails
+ + ", id="
+ + id
+ + ", name="
+ + name
+ + "]";
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/Person.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java?rev=1070178&view=auto
==============================================================================
--- commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java (added)
+++ commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java Sun Feb 13 01:49:45 2011
@@ -0,0 +1,41 @@
+/* $Id$
+ *
+ * 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.annotations.person;
+
+import org.apache.commons.digester3.annotations.AbstractAnnotatedPojoTestCase;
+import org.junit.Test;
+
+/**
+ *
+ * @since 2.1
+ */
+public final class PersonTestCase extends AbstractAnnotatedPojoTestCase {
+
+ @Test
+ public void testPerson() throws Exception {
+ Person person = new Person();
+ person.setId(1);
+ person.setName("Gonzo");
+ person.setCategory("acquaintance");
+ person.addEmail("business", "gonzo@muppets.com");
+ person.addEmail("home", "gonzo@mymuppets.com");
+
+ this.verifyExpectedEqualsToParsed(person);
+ }
+
+}
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: commons/sandbox/digester3/trunk/src/test/java/org/apache/commons/digester3/annotations/person/PersonTestCase.java
------------------------------------------------------------------------------
svn:mime-type = text/plain