You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Dragan Sahpaski <dr...@gmail.com> on 2011/09/23 14:43:37 UTC

@BindParameter misses inherited parameters

Hi,
Currently the @BindParameter annotation (that binds a parameter of a mixin
to a parameter in the component the mixin is applied to),
can be applied only to formal parameters of the containing component and not
to parameters that are inherited by the containing component by embedded
components.
I think it is natural that inherited parameters are included in the search
for parameters to bind to with the @BindParameter annotation.
Here is a motivating example:

public class MyComponent{
@Component(parameters =
"blankOption=inherit:blankOption", publishParameters="blankOption")
private Select select;
}

public class MyMixin{
@BindParameter
private BlankOption blankOption;
}

And we get:

org.apache.tapestry5.ioc.util.UnknownValueException
Containing component MyComponent does not contain a formal parameter
matching any of (blank), blankOption.

I'll be grateful if someone supports this and than I would be happy to
create a JIRA and possibly a patch for it.

Cheers,
Dragan Sahpaski

Re: @BindParameter misses inherited parameters

Posted by Dragan Sahpaski <dr...@gmail.com>.
Hey thanks.

Cheers,
Dragan Sahpaski



On Mon, Oct 24, 2011 at 4:35 PM, Robert Zeigler <robert.zeigler@roxanemy.com
> wrote:

> I'll try to take a look at it tonight.
>
> Robert
>
> On Oct 24, 2011, at 10/249:31 AM , Dragan Sahpaski wrote:
>
> > I have submitted a patch for
> https://issues.apache.org/jira/browse/TAP5-1663
> > .
> >
> > The patch contains integration tests and is quite short so I would be
> happy
> > if someone applies it or at least reviews it if something is
> > not quite right.
> >
> > Here is the description given with the patch:
> >
> > This patch is rather small (entire patch file is 253 lines long), and
> > contains integration tests.
> >
> > Patch Summary:
> > Files changed 4:
> > 1. BindParameterWorker: Here is the main logic for inspecting published
> > parameters. Also the Exception text is changed to contain info that
> formal
> > and published parameters are searched.
> > 2. BindParameterDemo.java
> > 3. BindParameterDemo.tml - Added publish1 component with EchoValueWithId
> > mixin.
> > 4. CoreBehaviorsTests.java
> >   - public void bindparameter() - added few assertions for detecting if
> the
> > published value is there. It is the same concept as the EchoValue mixins
> >   - public void bindparameter_nomatchingparameter() - changed asserted
> > value of the exception text.
> >
> > Files added 1:
> > 1. EchoValueWithId mixin in integration/app1: Same as EchoValue mixin
> > except it does take id as a parameter and doesn't use the container's
> > clientId. This is needed because it is applied to a Publish1 component
> that
> > is not a clientElement.
> >
> > Public API changes: none
> > Internal API changes: none
> >
> > Performance issues:
> > - BindParameterWorker has a recursive search (iterative implementation)
> for
> > published parameters in embeddedComponents. I think this is better than
> > changing public and internal interfaces to contain metadata for published
> > parameters etc.
> > A alternative implementation would be to put this metadata in
> > ComponentModel, something like isPublishedParameter or
> > getPublishedParameters. I think this is not necessary especially because
> no
> > one has issued a need for it.
> >
> > Cheers,
> > Dragan Sahpaski
> >
> >
> >
> > On Wed, Oct 5, 2011 at 7:41 AM, Dragan Sahpaski
> > <dr...@gmail.com>wrote:
> >
> >> Hi,
> >> Yes here is the JIRA https://issues.apache.org/jira/browse/TAP5-1663
> >>
> >> Cheers
> >>
> >>
> >> On Wed, Oct 5, 2011 at 5:29 AM, Steve Eynon <
> >> steve.eynon@alienfactory.co.uk> wrote:
> >>
> >>> Hi,
> >>>
> >>> I've just run into this myself, my Mixin attaches to a Grid and needs
> >>> the rowIndex parameter from the embedded GridRows component.
> >>>
> >>> Is there a JIRA number for this so I can track the changes and perhaps
> >>> patch T5.2.6?
> >>>
> >>> Steve.
> >>>
> >>>
> >>> On 23 September 2011 20:58, Taha Hafeez Siddiqi
> >>> <ta...@gmail.com> wrote:
> >>>> Hi Dragan
> >>>>
> >>>> It definitely deserves a JIRA!
> >>>>
> >>>> regards
> >>>> Taha
> >>>>
> >>>> On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:
> >>>>
> >>>>> Hi,
> >>>>> Currently the @BindParameter annotation (that binds a parameter of a
> >>> mixin
> >>>>> to a parameter in the component the mixin is applied to),
> >>>>> can be applied only to formal parameters of the containing component
> >>> and not
> >>>>> to parameters that are inherited by the containing component by
> >>> embedded
> >>>>> components.
> >>>>> I think it is natural that inherited parameters are included in the
> >>> search
> >>>>> for parameters to bind to with the @BindParameter annotation.
> >>>>> Here is a motivating example:
> >>>>>
> >>>>> public class MyComponent{
> >>>>> @Component(parameters =
> >>>>> "blankOption=inherit:blankOption", publishParameters="blankOption")
> >>>>> private Select select;
> >>>>> }
> >>>>>
> >>>>> public class MyMixin{
> >>>>> @BindParameter
> >>>>> private BlankOption blankOption;
> >>>>> }
> >>>>>
> >>>>> And we get:
> >>>>>
> >>>>> org.apache.tapestry5.ioc.util.UnknownValueException
> >>>>> Containing component MyComponent does not contain a formal parameter
> >>>>> matching any of (blank), blankOption.
> >>>>>
> >>>>> I'll be grateful if someone supports this and than I would be happy
> to
> >>>>> create a JIRA and possibly a patch for it.
> >>>>>
> >>>>> Cheers,
> >>>>> Dragan Sahpaski
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>>> For additional commands, e-mail: users-help@tapestry.apache.org
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> >>> For additional commands, e-mail: users-help@tapestry.apache.org
> >>>
> >>>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: @BindParameter misses inherited parameters

Posted by Robert Zeigler <ro...@roxanemy.com>.
I'll try to take a look at it tonight.

Robert

On Oct 24, 2011, at 10/249:31 AM , Dragan Sahpaski wrote:

> I have submitted a patch for https://issues.apache.org/jira/browse/TAP5-1663
> .
> 
> The patch contains integration tests and is quite short so I would be happy
> if someone applies it or at least reviews it if something is
> not quite right.
> 
> Here is the description given with the patch:
> 
> This patch is rather small (entire patch file is 253 lines long), and
> contains integration tests.
> 
> Patch Summary:
> Files changed 4:
> 1. BindParameterWorker: Here is the main logic for inspecting published
> parameters. Also the Exception text is changed to contain info that formal
> and published parameters are searched.
> 2. BindParameterDemo.java
> 3. BindParameterDemo.tml - Added publish1 component with EchoValueWithId
> mixin.
> 4. CoreBehaviorsTests.java
>   - public void bindparameter() - added few assertions for detecting if the
> published value is there. It is the same concept as the EchoValue mixins
>   - public void bindparameter_nomatchingparameter() - changed asserted
> value of the exception text.
> 
> Files added 1:
> 1. EchoValueWithId mixin in integration/app1: Same as EchoValue mixin
> except it does take id as a parameter and doesn't use the container's
> clientId. This is needed because it is applied to a Publish1 component that
> is not a clientElement.
> 
> Public API changes: none
> Internal API changes: none
> 
> Performance issues:
> - BindParameterWorker has a recursive search (iterative implementation) for
> published parameters in embeddedComponents. I think this is better than
> changing public and internal interfaces to contain metadata for published
> parameters etc.
> A alternative implementation would be to put this metadata in
> ComponentModel, something like isPublishedParameter or
> getPublishedParameters. I think this is not necessary especially because no
> one has issued a need for it.
> 
> Cheers,
> Dragan Sahpaski
> 
> 
> 
> On Wed, Oct 5, 2011 at 7:41 AM, Dragan Sahpaski
> <dr...@gmail.com>wrote:
> 
>> Hi,
>> Yes here is the JIRA https://issues.apache.org/jira/browse/TAP5-1663
>> 
>> Cheers
>> 
>> 
>> On Wed, Oct 5, 2011 at 5:29 AM, Steve Eynon <
>> steve.eynon@alienfactory.co.uk> wrote:
>> 
>>> Hi,
>>> 
>>> I've just run into this myself, my Mixin attaches to a Grid and needs
>>> the rowIndex parameter from the embedded GridRows component.
>>> 
>>> Is there a JIRA number for this so I can track the changes and perhaps
>>> patch T5.2.6?
>>> 
>>> Steve.
>>> 
>>> 
>>> On 23 September 2011 20:58, Taha Hafeez Siddiqi
>>> <ta...@gmail.com> wrote:
>>>> Hi Dragan
>>>> 
>>>> It definitely deserves a JIRA!
>>>> 
>>>> regards
>>>> Taha
>>>> 
>>>> On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:
>>>> 
>>>>> Hi,
>>>>> Currently the @BindParameter annotation (that binds a parameter of a
>>> mixin
>>>>> to a parameter in the component the mixin is applied to),
>>>>> can be applied only to formal parameters of the containing component
>>> and not
>>>>> to parameters that are inherited by the containing component by
>>> embedded
>>>>> components.
>>>>> I think it is natural that inherited parameters are included in the
>>> search
>>>>> for parameters to bind to with the @BindParameter annotation.
>>>>> Here is a motivating example:
>>>>> 
>>>>> public class MyComponent{
>>>>> @Component(parameters =
>>>>> "blankOption=inherit:blankOption", publishParameters="blankOption")
>>>>> private Select select;
>>>>> }
>>>>> 
>>>>> public class MyMixin{
>>>>> @BindParameter
>>>>> private BlankOption blankOption;
>>>>> }
>>>>> 
>>>>> And we get:
>>>>> 
>>>>> org.apache.tapestry5.ioc.util.UnknownValueException
>>>>> Containing component MyComponent does not contain a formal parameter
>>>>> matching any of (blank), blankOption.
>>>>> 
>>>>> I'll be grateful if someone supports this and than I would be happy to
>>>>> create a JIRA and possibly a patch for it.
>>>>> 
>>>>> Cheers,
>>>>> Dragan Sahpaski
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>> 
>>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>> 
>>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: @BindParameter misses inherited parameters

Posted by Dragan Sahpaski <dr...@gmail.com>.
I have submitted a patch for https://issues.apache.org/jira/browse/TAP5-1663
.

The patch contains integration tests and is quite short so I would be happy
if someone applies it or at least reviews it if something is
not quite right.

Here is the description given with the patch:

This patch is rather small (entire patch file is 253 lines long), and
contains integration tests.

Patch Summary:
Files changed 4:
 1. BindParameterWorker: Here is the main logic for inspecting published
parameters. Also the Exception text is changed to contain info that formal
and published parameters are searched.
 2. BindParameterDemo.java
 3. BindParameterDemo.tml - Added publish1 component with EchoValueWithId
mixin.
 4. CoreBehaviorsTests.java
   - public void bindparameter() - added few assertions for detecting if the
published value is there. It is the same concept as the EchoValue mixins
   - public void bindparameter_nomatchingparameter() - changed asserted
value of the exception text.

Files added 1:
 1. EchoValueWithId mixin in integration/app1: Same as EchoValue mixin
except it does take id as a parameter and doesn't use the container's
clientId. This is needed because it is applied to a Publish1 component that
is not a clientElement.

Public API changes: none
Internal API changes: none

Performance issues:
 - BindParameterWorker has a recursive search (iterative implementation) for
published parameters in embeddedComponents. I think this is better than
changing public and internal interfaces to contain metadata for published
parameters etc.
A alternative implementation would be to put this metadata in
ComponentModel, something like isPublishedParameter or
getPublishedParameters. I think this is not necessary especially because no
one has issued a need for it.

Cheers,
Dragan Sahpaski



On Wed, Oct 5, 2011 at 7:41 AM, Dragan Sahpaski
<dr...@gmail.com>wrote:

> Hi,
> Yes here is the JIRA https://issues.apache.org/jira/browse/TAP5-1663
>
> Cheers
>
>
> On Wed, Oct 5, 2011 at 5:29 AM, Steve Eynon <
> steve.eynon@alienfactory.co.uk> wrote:
>
>> Hi,
>>
>> I've just run into this myself, my Mixin attaches to a Grid and needs
>> the rowIndex parameter from the embedded GridRows component.
>>
>> Is there a JIRA number for this so I can track the changes and perhaps
>> patch T5.2.6?
>>
>> Steve.
>>
>>
>> On 23 September 2011 20:58, Taha Hafeez Siddiqi
>> <ta...@gmail.com> wrote:
>> > Hi Dragan
>> >
>> > It definitely deserves a JIRA!
>> >
>> > regards
>> > Taha
>> >
>> > On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:
>> >
>> >> Hi,
>> >> Currently the @BindParameter annotation (that binds a parameter of a
>> mixin
>> >> to a parameter in the component the mixin is applied to),
>> >> can be applied only to formal parameters of the containing component
>> and not
>> >> to parameters that are inherited by the containing component by
>> embedded
>> >> components.
>> >> I think it is natural that inherited parameters are included in the
>> search
>> >> for parameters to bind to with the @BindParameter annotation.
>> >> Here is a motivating example:
>> >>
>> >> public class MyComponent{
>> >> @Component(parameters =
>> >> "blankOption=inherit:blankOption", publishParameters="blankOption")
>> >> private Select select;
>> >> }
>> >>
>> >> public class MyMixin{
>> >> @BindParameter
>> >> private BlankOption blankOption;
>> >> }
>> >>
>> >> And we get:
>> >>
>> >> org.apache.tapestry5.ioc.util.UnknownValueException
>> >> Containing component MyComponent does not contain a formal parameter
>> >> matching any of (blank), blankOption.
>> >>
>> >> I'll be grateful if someone supports this and than I would be happy to
>> >> create a JIRA and possibly a patch for it.
>> >>
>> >> Cheers,
>> >> Dragan Sahpaski
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> > For additional commands, e-mail: users-help@tapestry.apache.org
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>

Re: @BindParameter misses inherited parameters

Posted by Dragan Sahpaski <dr...@gmail.com>.
Hi,
Yes here is the JIRA https://issues.apache.org/jira/browse/TAP5-1663

Cheers

On Wed, Oct 5, 2011 at 5:29 AM, Steve Eynon
<st...@alienfactory.co.uk>wrote:

> Hi,
>
> I've just run into this myself, my Mixin attaches to a Grid and needs
> the rowIndex parameter from the embedded GridRows component.
>
> Is there a JIRA number for this so I can track the changes and perhaps
> patch T5.2.6?
>
> Steve.
>
>
> On 23 September 2011 20:58, Taha Hafeez Siddiqi
> <ta...@gmail.com> wrote:
> > Hi Dragan
> >
> > It definitely deserves a JIRA!
> >
> > regards
> > Taha
> >
> > On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:
> >
> >> Hi,
> >> Currently the @BindParameter annotation (that binds a parameter of a
> mixin
> >> to a parameter in the component the mixin is applied to),
> >> can be applied only to formal parameters of the containing component and
> not
> >> to parameters that are inherited by the containing component by embedded
> >> components.
> >> I think it is natural that inherited parameters are included in the
> search
> >> for parameters to bind to with the @BindParameter annotation.
> >> Here is a motivating example:
> >>
> >> public class MyComponent{
> >> @Component(parameters =
> >> "blankOption=inherit:blankOption", publishParameters="blankOption")
> >> private Select select;
> >> }
> >>
> >> public class MyMixin{
> >> @BindParameter
> >> private BlankOption blankOption;
> >> }
> >>
> >> And we get:
> >>
> >> org.apache.tapestry5.ioc.util.UnknownValueException
> >> Containing component MyComponent does not contain a formal parameter
> >> matching any of (blank), blankOption.
> >>
> >> I'll be grateful if someone supports this and than I would be happy to
> >> create a JIRA and possibly a patch for it.
> >>
> >> Cheers,
> >> Dragan Sahpaski
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: @BindParameter misses inherited parameters

Posted by Steve Eynon <st...@alienfactory.co.uk>.
Hi,

I've just run into this myself, my Mixin attaches to a Grid and needs
the rowIndex parameter from the embedded GridRows component.

Is there a JIRA number for this so I can track the changes and perhaps
patch T5.2.6?

Steve.


On 23 September 2011 20:58, Taha Hafeez Siddiqi
<ta...@gmail.com> wrote:
> Hi Dragan
>
> It definitely deserves a JIRA!
>
> regards
> Taha
>
> On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:
>
>> Hi,
>> Currently the @BindParameter annotation (that binds a parameter of a mixin
>> to a parameter in the component the mixin is applied to),
>> can be applied only to formal parameters of the containing component and not
>> to parameters that are inherited by the containing component by embedded
>> components.
>> I think it is natural that inherited parameters are included in the search
>> for parameters to bind to with the @BindParameter annotation.
>> Here is a motivating example:
>>
>> public class MyComponent{
>> @Component(parameters =
>> "blankOption=inherit:blankOption", publishParameters="blankOption")
>> private Select select;
>> }
>>
>> public class MyMixin{
>> @BindParameter
>> private BlankOption blankOption;
>> }
>>
>> And we get:
>>
>> org.apache.tapestry5.ioc.util.UnknownValueException
>> Containing component MyComponent does not contain a formal parameter
>> matching any of (blank), blankOption.
>>
>> I'll be grateful if someone supports this and than I would be happy to
>> create a JIRA and possibly a patch for it.
>>
>> Cheers,
>> Dragan Sahpaski
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: @BindParameter misses inherited parameters

Posted by Taha Hafeez Siddiqi <ta...@gmail.com>.
Hi Dragan

It definitely deserves a JIRA!

regards
Taha

On Sep 23, 2011, at 6:13 PM, Dragan Sahpaski wrote:

> Hi,
> Currently the @BindParameter annotation (that binds a parameter of a mixin
> to a parameter in the component the mixin is applied to),
> can be applied only to formal parameters of the containing component and not
> to parameters that are inherited by the containing component by embedded
> components.
> I think it is natural that inherited parameters are included in the search
> for parameters to bind to with the @BindParameter annotation.
> Here is a motivating example:
> 
> public class MyComponent{
> @Component(parameters =
> "blankOption=inherit:blankOption", publishParameters="blankOption")
> private Select select;
> }
> 
> public class MyMixin{
> @BindParameter
> private BlankOption blankOption;
> }
> 
> And we get:
> 
> org.apache.tapestry5.ioc.util.UnknownValueException
> Containing component MyComponent does not contain a formal parameter
> matching any of (blank), blankOption.
> 
> I'll be grateful if someone supports this and than I would be happy to
> create a JIRA and possibly a patch for it.
> 
> Cheers,
> Dragan Sahpaski


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org