Hi,

I've found a couple of free hours for myfaces, and have some more stuff
for discussion re the builder plugin:

(1) 
trunk unit tests fail:
Tests in error: 
  testGetClientIdFacesContext(javax.faces.component.UIComponentBaseTest)
  testFindComponentString(javax.faces.component.UIComponentBaseTest)

I'll try to find time to look into this.

(2)
Now that the "template" property has been added to JSFComponent, can the
following be deleted?
  parent
  superClass

(3)
I'd like to clean up JSFJspProperty, as it doesn't feel quite right to
me.

== rename it?

Firstly, how about renaming it to JSFAttribute, and documenting it as
something like:

<doc>
Defines a logical property of a component that is accessed via the
component's Attributes map, rather than javaBean getter/setter methods.
</doc>

This gets away from this jsp-specific emphasis; this data is relevant
for all sorts of technologies other than jsp.

== tagExcluded

I'm also trying to figure out exactly what "tagExcluded=true" means on
JSFJspProperty, and whether we can get rid of it.

We managed to get rid of it for the "rendered" and "id" properties that
some components (esp. UIViewRoot) inherit from their parent class due to
broken OO design in the JSF spec, by simply implementing the appropriate
methods. But obviously that won't work for getting rid of bad
JSFJspProperty (aka JSFAttribute) declarations that exist on the parent
class but not on the child.

So I guess we do need some kind of annotation to say "please break the
OO rules and don't inherit the setting that was on the parent". But I
think we should make the name as ugly as possible to deter people from
using it, eg
  @JSFAttribute excludeInheritedAttributeHack=true

I see that Tomahawk uses the tagExcluded feature a lot at the moment.
This really does feel wrong. I'll try to look into this, but as I
mentioned before, if the problem is that some Tomahawk components have
broken inheritance models then I would rather refactor those components
than hack the builder plugin. Of course we can postpone that refactoring
until after the next tomahawk release is out; I'm just saying that I
don't see widespread use of this excludeInheritedAttributeHack as the
right solution.

=== tagExcluded in macro files

I see tagExcluded is used in componentClass11.vm:

#if($utils.isPrimitiveClass($type) && !$property.tagExcluded)
#set ($arrayIndex = $arrayIndex + 1)
        values[$arrayIndex] = ${field}Set;
#end

Is this ${field}Set thing a Trinidad-specific feature?

Incidentally, I think there *might* be a bug here: the tagExcluded test
is done here, but not at the point a dozen lines earlier when the size
of the values array is being computed. But I'm not entirely clear what
is happening here, so might be wrong.

Comments?

Cheers,
Simon

Reply via email to