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 <[email protected]>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: [email protected] [mailto:[email protected]] 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 > <[email protected]>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: [email protected] > For additional commands, e-mail: [email protected] > >
