commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Kitching <si...@ecnetwork.co.nz>
Subject Re: [Digester] addBeanPropertySetter help
Date Mon, 08 Dec 2003 21:47:54 GMT
Hi Craig,

On Tue, 2003-12-09 at 08:57, Craig Tataryn wrote:
> Sorry, forgot to specify which commons project this was for in the subject.
> 
> 
> >From: "Craig Tataryn" <craiger316@hotmail.com>
> >Reply-To: "Jakarta Commons Users List" <commons-user@jakarta.apache.org>
> >To: commons-user@jakarta.apache.org
> >Subject: addBeanPropertySetter help
> >Date: Mon, 08 Dec 2003 13:53:14 -0600
> >
> >Hi, I have an XML file that looks like this:
> >
> ><data-mappings>
> >	<dispatchers>
> >		<!-- dispatcher section must appear before data-mappings -->
> >		<dispatcher name="Sybase Stored Procedure" 
> >class="StoredProcDataDispatch">
> >			<db>Data</db>
> >			<server>192.168.200.1</server>
> >			<port>2638</port>
> >			<dbfile>test</dbfile>
> >			<uid>dba</uid>
> >			<pwd>pwd</pwd>
> >		</dispatcher>
> >	</dispatchers>
> >
> >	<data-mapping class="Customer" dispatcher="Sybase Stored Procedure"/>
> >
> ></data-mappings>
> >
> >Basically the tags below data-mappings/dispatchers/dispatcher are going to 
> >be adhoc (they represent properties on the StoredProcDataDispatch instance 
> >which will be set).  I tried setting these properties by the following 
> >code:
> >
> >digester.addObjectCreate("data-mappings/dispatchers/dispatcher","class",java.lang.Object.class);
> >digester.addBeanPropertySetter("data-mappings/dispatchers/dispatcher/*");
> >
> >But the properties on the object are never set :(  Is there a rule I can 
> >use where I can provide a pattern for a root node (i.e. 
> >data-mappings/dispatchers/dispatcher) and have all the child nodes below it 
> >act as property setters much like the addSetProperties rule works for 
> >attributes.
> >
> >Thanks,
> >
> >Craig.

The default Rules object (which decides which rules are matched by the
current xml element) supports *leading* wildcards but not *trailing*
wildcards, ie "*/foo" works,  "foo/*" does not.

The ExtendedBaseRules class does support trailing wildcards (but is less
efficient than the default implementation). See the examples directory
in CVS for a demonstration of how to use this.

The SetNestedPropertiesRule can also be used to do what you want, but as
this has been added since the last release you will need to use a recent
CVS snapshot of Digester if you want this rule. 

Digester is hopefully having a new release soon (in the next month?), at
which point both the examples and the SetNestedPropertiesRule will be in
the main release.

Regards,

Simon



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


Mime
View raw message