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]

Reply via email to