Hi Zdenek, *saved=solved
regards, Martin On 3/18/08, Martin Marinschek <[EMAIL PROTECTED]> wrote: > Hi Zdenek, > > you seem to ignore my comments - you will need to provide the setters, > this is in the spec - and there is component-binding, so you need to > provide them? > > The issue with state-saving will need to be saved another way. > > regards, > > Martin > > On 3/18/08, Sochor Zdeněk <[EMAIL PROTECTED]> wrote: > > Hi all, > > comments inline. > > > > [EMAIL PROTECTED] napsal(a): > > > > > > The myfaces-builder-plugin stuff is an experiment/proof-of-concept at > > > the current time, That's why the code is in a "branches" directory. No > > > vote has been taken on using this approach; it was necessary to show > > > that this would work before calling a vote to make a choice between this > > > and the myfaces-faces-plugin (formerly trinidad-faces-plugin) approach. > > > > > > But there is enough concrete info there now (particularly thanks to > > > Leonardo's new wiki pages) for us to have a discussion. It's clear that > > > the approach will work; now the community needs to say which approach > > > they think is the most productive for the future. > > > > > > I would personally like to see this used for all projects: core1.1, > > > core1.2, tomahawk, commons and eventually trinidad too. I certainly see > > > no reason why the myfaces-builder-plugin approach cannot be used for > > > trinidad. It's just a matter of extending the "model" classes that hold > > > the metadata. And I see no theoretical reason why the existing .xml > > > files in the build project could not even be used as input to the > > > myfaces-builder-plugin (ie as an alternative to doc comments). Note that > > > the reverse is not true: there is no easy way to use doc comments to > > > feed metadata into the myfaces-faces-plugin, because that is really > > > seriously hard-wired to assume that xml files are its input. > > > > > > But the most important thing to me *is* getting away from the "build > > > project with lots of xml files" approach. > > > > > > == > > > > > > * Use case 1: > > > > > > I want to extend the t:inputDate component to add a property to a > > > component, and alter the renderer to use that property. > > > > > > With the xml-files approach (myfaces-faces-plugin), I open the build > > > project and modify an xml file to add the info using the special xml > > > tags. I then run the plugin. I then refresh my eclipse project. I then > > > alter the renderer to access the new property on the generated component > > > class. Note that just looking at the base component class gives *no* > > > info about what properties that component has. > > > > > > With the doc-annotation approach (myfaces-builder-plugin), I open the > > > normal tomahawk project, and add an abstract getter method (perfectly > > > normal java coding). I then add the appropriate annotation as a > > > doc-annotation. I then modify my renderer (no need to run the code > > > generator; I can write calls to the abstract method fine). > > > > > > And with the doc-annotation approach, looking at the component class > > > shows clearly that it has that property. In addition: > > > (a) the amount of info I need in the annotation is much less than I > > > needed to add to the xml file because the plugin can use introspection > > > on the abstract method declaration > > > (b) javadoc comments attached to the method are used automatically in > > > the .tld etc. > > > > > Generally extending components by adding whole bucket of local > > property/getter/setter seems not right for me because > > it's meant to provide just another feature not used by many people. > > Wouldn't it be more cleaner to just use that property as attribute (in > > JSF api's speach): > > storing/using it from getAttributes() map? > > This way it would just be needed to generate TLD/Tag entries, no > > customization of component's code needed. > > Also renderer has full access to attributes map by default ;) > > Nice side-effect to this approach is eventual speeding-up processing by > > adding cache to getAttributes() MyFaces map: > > storing already resolved values in transient map to avoid multiple > > resolving during lifecycle. > > > * Use case 2: > > > > > > I create a new tomahawk converter class. > > > > > > With the xml-files approach, I open the build project and create some > > > new xml files. Then I write the converter class in the main code > project. > > > > > > With the myfaces-builder-plugin approach, I open the main code project, > > > add the class and add a couple of doc-annotations. > > > > > > > > Clearly 2nd option rules :D > > > * Use case 3: > > > > > > I create a new project (eg commons widgets) > > > > > > With the xml-files approach, I need to create two maven modules, one for > > > the code and one for the builder stuff. Somehow I need to get access to > > > all the metadata defined by the core build project (??). I then need to > > > create metadata files for my project that (somehow) add info about my > > > new components. > > > > > > With the doc-annotation approach, I just create a project for my code, > > > add the builder plugin to my pom, and add annotations to any of my > > > converters/validators/components. Done. > > > > > > > > A question about properties inheritance accross components arise: > > i really think that having the same propetry handled by multiple > > components in hiearchy is bad (quite common in Tomahawk). > > Also the Tomahawk code should use consistent way in components and tags > > inheritances. > > There should be a way to filter already defined properties in either > > approach. > > > * Use case 4: > > > > > > A JSF newbie browses the myfaces-impl code. > > > > > > With the xml-files approach, he needs to also browse the xml files in > > > the build project or alternatively browse the generated code to get any > > > idea of how things work. > > > > > > With the doc-annotation approach, the annotations are there for him to > > > see on the checked-in classes. > > > > > > > > This use-case is not clear - it's quite different to look at code to see > > how components work and to look at renderers' stuff. > > IMO more people are interested in renderers, so both approaches are > > almost the same for them. > > > == > > > > > > It looks to me like doc-annotations are more user-friendly in all of the > > > above use-cases. > > > > > > One last note: the Tobago project currently uses real java15 annotations > > > to gather the data it needs to generate stuff. The > > > myfaces-builder-plugin can be extended to use APT to gather metadata, > > > meaning that Tobago could *potentially* use the same plugin if they > > > wanted. But unless they convert to using xml metadata files, there is no > > > way for them to use the myfaces-faces-plugin. > > > > > > All comments/corrections for the above use-cases or new use-cases are > > > welcome. > > > > > > Regards, Simon > > > > > > > > > > > Regards, > > Zdenek > > > > > -- > > http://www.irian.at > > Your JSF powerhouse - > JSF Consulting, Development and > Courses in English and German > > Professional Support for Apache MyFaces > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces