You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Niall Pemberton <ni...@gmail.com> on 2007/07/17 01:01:25 UTC

Re: Chain of Responsibility Catalog, Adding Command Element Attributes

On 7/16/07, richard head <du...@hotmail.com> wrote:
> Hi,
>
> I've been playing around with the Commons Chain of Responsibility
> implementation and have a question or two. Maybe a chain is not the right
> approach, I'd appreciate any suggestions.
>
>         I'd like to make a Chain that retrieves an XML document, transforms it, and
> emails the results.  3 Commands as I see it. Each of these Commands requires
> information that is independent of the others. XML file's URL, XSLT
> transformation's output path, SMTP server etc…
>
> I understand that the preferred method of retaining state is to use the
> Chain's Context. Yet in this situation is seems inflexible, as the class
> instantiating the chain will be tightly bound to it because it would have to
> anticipate each link and what each link's Context requirements are.
>
> What I would like to do is use a catalog.xml file to store the chain, and
> add the appropriate attributes to the given command element.
>
> i.e. <command name="EmailUser" className="com.bs.email.Emailer"
> smtpServer="xyz.abc.com" .../>
>
>
> In order to achieve such functionality, what would I have to do, set the
> appropriate rules in the ConfigParser's Digester?
>
> i.e.
> config.getDigester().addSetProperties("/catalog/chain/command","smtpServer","smtpServer")

You don't have to change the configured digester rules at all -  just
add getters/setters as appropriate - so in your case adding
setSmtpServer() and getSmtpServer() methods to your Emailer command
and when the xml is parsed they will get called with the values you've
specified in your xml.

> I would prefer to do this via the Emailer's constructor, but it appears that
> it's not possible and one must use getters and setters.

No its not possible with the XML/Digester configuration provided by
Commons Chain.

Niall

> Thank You.

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Re: Chain of Responsibility Catalog, Adding Command Element Attributes

Posted by Niall Pemberton <ni...@gmail.com>.
On 7/17/07, richard head <du...@hotmail.com> wrote:
>
> >>What I would like to do is use a catalog.xml file to store the chain, and
> >>add the appropriate attributes to the given command element.
> >>
> >>i.e. <command name="EmailUser" className="com.bs.email.Emailer"
> >>smtpServer="xyz.abc.com" .../>
> >>
> >>
> >>In order to achieve such functionality, what would I have to do, set the
> >>appropriate rules in the ConfigParser's Digester?
> >>
> >>i.e.
> >>config.getDigester().addSetProperties("/catalog/chain/command","smtpServer","smtpServer")
> >
> >You don't have to change the configured digester rules at all -  just
> >add getters/setters as appropriate - so in your case adding
> >setSmtpServer() and getSmtpServer() methods to your Emailer command
> >and when the xml is parsed they will get called with the values you've
> >specified in your xml.
>
> Ok, cool. Though is it possible for these attributes to be classes?

Not quite sure what you mean - do you want something like
setFooClass(Class fooClass)?

Anyway its not something I've tried by AFAIK the set properties rule
in Digester uses BeanUtils.populate() - which uses any registered
Converters - there is one for "Class" - so the above
setFooClass(Class) example should work with the String value specified
in your XML being converted to a Class.

Best way with these types of things is always to give it a go and see
what happens.

Niall

> Thanks

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Re: Chain of Responsibility Catalog, Adding Command Element Attributes

Posted by richard head <du...@hotmail.com>.
>>What I would like to do is use a catalog.xml file to store the chain, and
>>add the appropriate attributes to the given command element.
>>
>>i.e. <command name="EmailUser" className="com.bs.email.Emailer"
>>smtpServer="xyz.abc.com" .../>
>>
>>
>>In order to achieve such functionality, what would I have to do, set the
>>appropriate rules in the ConfigParser's Digester?
>>
>>i.e.
>>config.getDigester().addSetProperties("/catalog/chain/command","smtpServer","smtpServer")
>
>You don't have to change the configured digester rules at all -  just
>add getters/setters as appropriate - so in your case adding
>setSmtpServer() and getSmtpServer() methods to your Emailer command
>and when the xml is parsed they will get called with the values you've
>specified in your xml.

Ok, cool. Though is it possible for these attributes to be classes?

Thanks

_________________________________________________________________
Need a brain boost? Recharge with a stimulating game. Play now!  
http://club.live.com/home.aspx?icid=club_hotmailtextlink1


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org