[refactoring][beanview] Carve single mode creation pieces out of producers
--------------------------------------------------------------------------
Key: LABS-352
URL: https://issues.apache.org/jira/browse/LABS-352
Project: Labs
Issue Type: Improvement
Components: Magma
Affects Versions: Current
Reporter: Simone Gianni
Assignee: Simone Gianni
Fix For: Current
With LABS-351 we have intermediate types that can be inferred instead of more
generic types like String, byte[] or streams.
Now we need to implement a way to have beansview pieces to cope with them.
This should be done in a pluggable way. Most importantly, pluggability is
needed to extend both ShowBean and ShowList (and conseguently form and
paginated list) customization.
Right now, ShowBean delegates to a createMain method the creation of the inner
content of a leaf in the ViewTree, the form producer then further delegates to
specific methods to create drodowns, textareas etc..
Similarly, ShowList delegates to createFieldNodeCell method, which is a bit
less clean than createMain.
Probably, we could refactor these methods a bit to give a clear path for
extension using AspectJ around advices. For example, to handle file uploads, an
around advice on createMain could intercept when the node contains a File
intermediate type and output an upload field in the form or a link for
downloading the file in a showbean.
A similar approach should be taken for form binding, cause the two will most
probably go in pairs.
The final objective could be to declare an abstract aspect to customize
appearance of certain intermediate types in lists, showbeans and forms, and
parsing of incoming parameters for forms binding.
Such aspects could then be implemented to support different form/display
technologies, like JSF.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]