Hi

So should we leave the Tld2ClayCfg as it is now (with the latest patch) ? It 
outputs al the required components, but lacks the information that we can't get 
from the ld or by introspecting the tags.

Another possible solution that I have is to add another section to the plugin 
where one could link special things like these with the "componentType". This 
way the tool would build a complete definition file that would need no further 
manual tweaking. SInce these definitions only are related to a few tld's and 
there or not that many of them I think that this is a viable solution.

Hermod

-----Original Message-----
From: Gary VanMatre [mailto:[EMAIL PROTECTED]
Sent: Tuesday, February 13, 2007 11:38 PM
To: dev@shale.apache.org
Subject: Re: Update to Tld2ClayCfg


>From: "Craig McClanahan" <[EMAIL PROTECTED]> 
>
> On 2/12/07, Hermod Opstvedt wrote: 
> > 
> > Hi 
> > 
> > I updated the Tld2ClayCfg tool in order to support Validators, Converters 
> > and rendererType. 
> > 
> > As I mentioned in the issue, there is a problem with getting hold of the 
> > componentType for these. There is the possibility of assuming that the > > 
> > componentType is the same as the tag-class minus the Tag ending, but I > > 
> > don't 
> > think that will stick. So if anyone has a bright idea, please shout out. 
> > 
> > Could someone also commit the patches to the Clay starter archetype. There 
> > are som bugfixes in there. 
> 
> 
> I haven't followed all the details of this, but does Clay require some 
> association between particular converter/validator classes and part icular 
> component classes? If it does, that doesn't really make sense to me. 
>


When you add a validator, converter or listener to a component, it requires 
using a nested element under the "component" top-level element.  These nested 
elements, point to a top-level component definition.  The Clay XML configs 
define component, converters, validators and listeners as top-level components. 
 This is similar to defining a tag definition in the TLD for each associated 
components, validators, converters and listeners.  

For a top-level component definition (components, converters, validators and 
listeners), the componentType attribute is the JSF componentType, converterId, 
validatorId or the fully qualified class path to the listener.

Historically, the clay config used a neutral mnemonic "displayElement".  A 
"displayElement" captured generic metadata about these JSF elements.   We 
changed to "component", while it was still in a bugzilla ticket, to make it 
more familiar with the Tapestry terminology.  In hindsight, "displayElement" 
might have been a better name.


For example, a custom converter with a property:
<component jsfid="myconverter" componentType="myregisteredConverterId" >
     <attributes>
             <set name="customProperty" bindingType="Early" />
      </attributes>
</component>

Given a specific use within the application: 
<component jsfid="myinputwidget" extends="inputText" >
      <attributes/>
       <conveter jsfid="myconverter">
             <set name="customProperty" value="something" />
       </converter>
</component>



> For validators, there isn't really any formal linkage between validator > 
> classes and component classes at the JSF level. It seems to me that we > 
> should not try to enforce such a distinction in Clay either. 
> 

Yeah, I think the best we can do is load the tag and determine that it extends 
ValidatorTag or ConverterTag and then just dump the attributes and fill the 
componentType with a dummy value that has to be manually addressed.  That's 
what I did with the Trinidad library but I don't see a way to even attempt to 
handle action and value change listners.

For example:
<component jsfid="setActionListener" componentType="FIXME.<Tagclassname>">
     <attributes>
           <set name="from" bindingType="VB"/>
           <set name="to" bindingType="VB"/>
     </attributes>
</component>


> For converters, JSF has the concept of converter-for-class ... but it is > 
> visible only in faces-config.xml not in a TLD. That is because the correct 
> converter is selected automatically if you have a value binding on the 
> "value" property, and the JSF runtime can determine the destination type. > 
> This works no matter what view handler is used, so you should be getting it 
> for free with Clay. 
> 

Using the "converter" value binding attribtue of the component doesn't require 
a Clay "component" defintion for the converter.  It is only needed if you need 
to pass properties to the converter which would be handled in JSP with a custom 
tag.  Clay will also allow you to "bind" converters, validators and listeners 
to backing beans - a JSF 1.2 feature.




> Outside of that, it should be technically possible to configure any 
> converter on any component that implements ValueHolder, and to configure any 
> validator on any component that implements EditableValueHolder. 
> 

It's unfortunately we can't rip all of the clay config from the TLD's.  Maybe 
in the future, this metadata could be ripped from mandated annotations.....



> Hermod 
> > 
> > 
> Craig 

Gary


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

This email with attachments is solely for the use of the individual or
entity to whom it is addressed. Please also be aware that the DnB NOR Group
cannot accept any payment orders or other legally binding correspondence with
customers as a part of an email. 

This email message has been virus checked by the anti virus programs used
in the DnB NOR Group.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Reply via email to