[digester] Multiple paths mapped to one object

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[digester] Multiple paths mapped to one object

Jan Fröhlich
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
Reply | Threaded
Open this post in threaded view
|

Re: [digester] Multiple paths mapped to one object

Simone Tripodi-2
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
<[hidden email]>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
>
Reply | Threaded
Open this post in threaded view
|

AW: [digester] Multiple paths mapped to one object

Jan Fröhlich
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: [hidden email] [mailto:[hidden email]] 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
<[hidden email]>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: [hidden email]
For additional commands, e-mail: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [digester] Multiple paths mapped to one object

Simone Tripodi-2
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 <[hidden email]>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: [hidden email] [mailto:[hidden email]] 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
> <[hidden email]>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: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

AW: [digester] Multiple paths mapped to one object

Jan Fröhlich
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: [hidden email] [mailto:[hidden email]] 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 <[hidden email]>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: [hidden email] [mailto:[hidden email]] 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
> <[hidden email]>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: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [digester] Multiple paths mapped to one object

Simone Tripodi-2
sorry to reply a little late, I've been quiet busy during the WE
I am having a look at your test case tonight, stay tuned!
Alles Gute,
-Simo

http://people.apache.org/~simonetripodi/
http://twitter.com/simonetripodi


On Thu, Mar 6, 2014 at 5:26 PM, Jan Fröhlich <[hidden email]>wrote:

> 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: [hidden email] [mailto:[hidden email]] 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 <[hidden email]
> >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: [hidden email] [mailto:[hidden email]] 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
> > <[hidden email]>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: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [digester] Multiple paths mapped to one object

Simone Tripodi-2
In reply to this post by Jan Fröhlich
Hi Jan,

looks like you stumbled in a weird bug that requires more time for me
to get it adjusted - can you switch to rules binder ATM until I come
up with a fix?
TIA, Alles Gute!
-Simo
http://people.apache.org/~simonetripodi/
http://twitter.com/simonetripodi


On Thu, Mar 6, 2014 at 5:26 PM, Jan Fröhlich
<[hidden email]> wrote:

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

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

AW: [digester] Multiple paths mapped to one object

Jan Fröhlich
Hi Simo,

I already did the switch to rules binder and will stay with it.
Thanks for your efforts.

Regards
Jan
-----Ursprüngliche Nachricht-----
Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Simone Tripodi
Gesendet: Mittwoch, 12. März 2014 10:37
An: Commons Users List
Betreff: Re: [digester] Multiple paths mapped to one object

Hi Jan,

looks like you stumbled in a weird bug that requires more time for me to get it adjusted - can you switch to rules binder ATM until I come up with a fix?
TIA, Alles Gute!
-Simo
http://people.apache.org/~simonetripodi/
http://twitter.com/simonetripodi


On Thu, Mar 6, 2014 at 5:26 PM, Jan Fröhlich <[hidden email]> wrote:

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

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]