Hi
I have committed the changes.
Reading the email again, I forget to mention my opinion about change
"tagExcluded" setting to "ignore".
In the plugin there are several levels of "ignore" (only two used in
practice):
tagExcluded = true: generate the property with state saving and restoring
code on the .tld if applies, but do not generate on the Tag class and do not
include on the tld. It is also used to exclude from .tld already defined
properties.
inheritedTag = true: assume that the code on Tag is inside the hierarchy,
and include on the tld.
transient(never used)=generate property but do not included on saveState and
restoreState methods.
I feel that "tagExcluded" or a similar name is more intuitive than "ignore",
according to the intention of the property.
regards
Leonardo Uribe
On Mon, Jun 2, 2008 at 7:29 PM, Leonardo Uribe <[EMAIL PROTECTED]> wrote:
> Hi
>
> I have checked if there is some related code and doing this:
>
> /**
> * Disable this property; although this class extends a base-class that
> * defines a read/write rendered property, this particular subclass
> * does not support setting it. Yes, this is broken OO design: direct
> * all complaints to the JSF spec group.
> *
> * JSFProperty tagExcluded="true"
> */
> public void setRendered(boolean state) {
> throw new UnsupportedOperationException();
> }
>
> works without problem (override isRendered is bad, because this method is
> used on processXXX and encodeXXX methods).
>
> I'll commit those changes tomorrow (Today is holiday in Colombia).
>
> regards
>
> Leonardo Uribe
>
> On Sun, Jun 1, 2008 at 4:29 AM, simon <[EMAIL PROTECTED]> wrote:
>
>>
>> On Sat, 2008-05-31 at 16:45 -0500, Leonardo Uribe wrote:
>> > Hi
>> >
>> > On Sat, May 31, 2008 at 2:48 PM, simon <[EMAIL PROTECTED]> wrote:
>> > Hi,
>> >
>> > Here are some things I noticed when reviewing the tlddocs for
>> > core11-based-on-myfaces-builder.
>> >
>> > Tag f:selectItems now has a "rendered" attribute, which it
>> > should not.
>> >
>> > This problem is caused because the plugin enforces inheritance of
>> > properties. The solution is do something like this:
>> >
>> > * @JSFComponent
>> > * name = "f:selectItems"
>> > * bodyContent = "empty"
>> > * tagClass = "org.apache.myfaces.taglib.core.SelectItemsTag"
>> > * desc = "UISelectItems"
>> > * @JSFJspProperty name = "rendered" returnType = "boolean"
>> > tagExcluded = "true"
>> > */
>> > public class UISelectItems extends UIComponentBase
>> >
>> > When the hierarchy is merged, tagExcluded = "true" takes precedence,
>> > so this property is not mentioned on tld anymore.
>>
>> I actually think the problem is that the OO inheritance hierarchy in the
>> JSF spec is wrong. If UISelectItems does not support the "rendered"
>> property, then it should not subclass something that does. This breaks
>> the principle of substitutability, which is one of the fundamental
>> concepts of OO programming:
>> http://en.wikipedia.org/wiki/Substitutability
>>
>> This does appear to be a problem in the spec, not in our code. However I
>> don't agree with the solution of just excluding the property from the
>> tag; that fixes only part of the issue by blocking JSP tags from
>> accessing the property, but nothing else.
>>
>> I would instead suggest something like this in the
>> UISelectItem/UISelectItems classes:
>>
>> /**
>> * Disable this property; although this class extends a base-class that
>> * defines a read/write rendered property, this particular subclass
>> * does not support setting it. Yes, this is broken OO design: direct
>> * all complaints to the JSF spec group.
>> *
>> * JSFProperty tagExcluded="true"
>> */
>> public void setRendered(boolean state) {
>> throw new UnsupportedOperationException();
>> }
>>
>> Actually, I would suggest renaming tagExcluded to "ignore". This is not
>> a jsp-tag-specific issue; any view templating language including
>> facelets, clay, and whatever else gets invented, should act as if this
>> method is *not* a JSFProperty even though the inherited settings say it
>> is.
>>
>>
>> What do you think?
>>
>> Regards,
>> Simon
>> >
>>
>>
>