You know, unit tests are supposed to come
first. :-) That way, you can run them before fixing the problem and make sure
that they actually fail before your fix.
From: Chris Burnley
[mailto:[EMAIL PROTECTED]
Sent: Wednesday, September 14,
2005 9:53 AM
To: [email protected]
Subject: Re: set-property with
service
I've raised HIVEMIND-150
and attached a diff to address the problem in the simplest way possible: add a
translator attribute to set-property so that the translator type can be
specified, defaulting to "smart".
I've tested it locally and works fine. Will update with unit test soon (gotta
get back to work ! )
On 9/14/05, Knut
Wannheden <
[EMAIL PROTECTED]> wrote:
Now I see what the problem is. You cannot use the <set-property>
rule
the way you'd like to use it. The <set-property> rule always uses the
smart translator which doesn't understand the value
"service:hivetest.Comparator". As a workaround you could use the
<set-module> rule and then use the Module in the hivetest.impl.Obj
class to lookup the Comparator service. That's of course not very
nice...
It seems like it should be possible to support object providers in the
<set-property> rule. Can you report that as an issue? What do others
think about that?
--knut
On 9/14/05, Chris Burnley <[EMAIL PROTECTED]>
wrote:
> Yeah, I've tried moving elements around a bit but to no avail. I am in the
> process of debugging it now will raise an issue soon, hopefully with some
> more useful information.
>
> Thanks, Chris
>
>
> On 9/14/05, Knut Wannheden <
[EMAIL PROTECTED]> wrote:
> > Chris,
> >
> > Try to move the <invoke-parent> rule after the <set-property>
rule in
> > your schema. I think that should work.
> >
> > Yet, if it just silently fails the way you have it, it looks like a
> > bug. Care to open a bug report in JIRA?
> >
> > Regards,
> >
> > --knut
> >
> > On 9/13/05, Chris Burnley <[EMAIL PROTECTED]>
wrote:
> > > I'm trying to get my head around schemas / configuration /
contributions
> > > etc. so I took took the panarama example and cut it down changed
the
> names
> > > and am attempting to inject a service into a property as part of
the
> > > conversion rules.
> > >
> > > This is on hivemind-1.1-beta2 (using simple standard
interfaces such as
> > > Comparator and Runnable):
> > >
> > > <?xml version="1.0"?>
> > > <module id="hivetest" version="1.0.0"
package="hivetest">
> > >
> > > <service-point
id="Comparator" interface="java.util.Comparator">
> >
> <create-instance
class="impl.TestComparator"/>
> > > </service-point>
> > >
> > > <schema
id="Obj">
> > > <element
name="obj">
> >
> <attribute
name="attr"/>
> >
> <conversion
class="impl.Obj "/>
> >
> </element>
> >
> <element
name="sobj">
> >
> <attribute
name="attr"/>
> >
> <rules>
> >
> <create-object
class="impl.Obj"/>
> >
> <invoke-parent
method="addElement"/>
> >
> <read-content
property="attr"/>
> >
>
<!-- this is the problem line below : -->
> > >
> >
> <set-property
property="comparator"
> > > value="service:hivetest.Comparator"/>
> >
> </rules>
> >
> </element>
> > > </schema>
> > >
> > > <configuration-point
id="Objs" schema-id="Obj" />
> > >
> > > <service-point
id="TestService" interface="java.lang.Runnable ">
> >
> <invoke-factory>
> >
> <construct
class="impl.TestService">
> >
> <set-configuration
> configuration-id="Objs"
> > > property="objs"/>
> >
> </construct>
> >
> </invoke-factory>
> > > </service-point>
> > >
> > > <contribution
configuration-id=" hivetest.Objs">
> > > <obj
attr="test"/>
> >
> <obj
attr="test2"/>
> >
> <sobj>test3</sobj>
> > > </contribution>
> > >
> > > </module>
> > >
> > > Basically, the comparator property is not being set
and there is no
> > > feedback why. If I change the type of the property to a string,
the
> string
> > > value is set but it looks like the translator for service is not
being
> > > invoked inside the rules element.
> > >
> > > Is there something wrong with what I am doing ?
> > >
> > > regards,
> > >
> > > Chris
> > >
> >
>
>