Hi Simo, I created a small maven project with 2 test cases inside. One works but is ugly, the other fails but would be great. As I don't want to spam this mailing list I uploaded it to our webserver as ZIP file.
You can download it from http://www.infomotion.de/download/objectcreate-test.zip I didn't comment it at all, but tried to give it speaking names. Looking forward for your feedback. Thank you for your help so far! Jan -----Ursprüngliche Nachricht----- Von: simone.trip...@gmail.com [mailto:simone.trip...@gmail.com] Im Auftrag von Simone Tripodi Gesendet: Donnerstag, 6. März 2014 16:43 An: Commons Users List Betreff: Re: [digester] Multiple paths mapped to one object Hi Jan, could you submit a testcase, please? I will have a look at it and get back with a solution ASAP :) Alles Gute, -Simo http://people.apache.org/~simonetripodi/ http://twitter.com/simonetripodi On Thu, Mar 6, 2014 at 1:09 PM, Jan Fröhlich <jan.froehl...@infomotion.de>wrote: > Hi Simone, > > this is something I already tried. > First: > With a single @ObjectCreate for each table it works fine. > Then: > Changing only to @ObjectCreate.List - without any other > modifications I get an error saying that there is no setter Method in > the table class. > Second: > The @SetProperty attribute "pattern" is mandatory. > > Maybe this is something version dependent? I use > <dependency> > <groupId>org.apache.commons</groupId> > <artifactId>commons-digester3</artifactId> > <version>3.2</version> > </dependency> > > Jan > > -----Ursprüngliche Nachricht----- > Von: simone.trip...@gmail.com [mailto:simone.trip...@gmail.com] Im > Auftrag von Simone Tripodi > Gesendet: Donnerstag, 6. März 2014 12:05 > An: Commons Users List > Betreff: Re: [digester] Multiple paths mapped to one object > > Hi Jan, > > there's no kind of magic, just annotate the class fields as: > > @ObjectCreate.List(value = { > @ObjectCreate(pattern = "*/HTABLE"), > @ObjectCreate(pattern = "*/VTABLE"), > @ObjectCreate(pattern = "*/XTABLE") > }) > public class Table { > > @SetProperty // you can omit the 'attributeName' since it is the > same as in the attribute > private String name; > > @SetProperty(attributeName = "x") > private Long posX; > > @SetProperty(attributeName = "y") > private Long posY; > > @BeanPropertySetter(pattern = "*/rows") > private Long rows; > > } > > please let us know if it works! :) > Alles Gute! > -Simo > > http://people.apache.org/~simonetripodi/ > http://twitter.com/simonetripodi > > > On Wed, Mar 5, 2014 at 11:55 AM, Jan Fröhlich > <jan.froehl...@infomotion.de>wrote: > > > Hi all, > > > > given an XML with something like > > <REPORT> > > <XTABLE name="Table1" x="1200" y="2250"> > > <rows>10</rows> > > </XTABLE> > > <VTABLE name="Table2" x="1400" y="2250"> > > <rows>14</rows> > > </VTABLE> > > <HTABLE name="Table3" x="1600" y="2250"> > > <rows>17</rows> > > </HTABLE> > > </REPORT> > > > > I would like to map all nodes (XTABLE, VTABLE and HTABLE) to one > > class Table and set the properties. > > While learning digester I created a class for each tag, but now I > > want to improve that. > > > > For the class itself the following should work > > @ObjectCreate.List(value = { > > @ObjectCreate(pattern = "*/HTABLE"), > > @ObjectCreate(pattern = "*/VTABLE"), > > @ObjectCreate(pattern = "*/XTABLE") > > }) > > public class Table { > > private String name; > > private Long posX; > > private Long posY; > > private Long rows; > > > > } > > > > But how should I annotate the properties as I have to set the > > pattern attribute to all @SetProperty annotations and the pattern is > > different for all of them. > > > > Any help appreciated. > > > > Jan > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org