[ 
https://issues.apache.org/jira/browse/LABS-161?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simone Gianni resolved LABS-161.
--------------------------------

    Resolution: Fixed

Magma is now completely generics aware, not only in the web part but also in 
all the bindings, conversions and validations. Generics-aware convertors are 
also possible.

The classes that parse the generics make up a rudimentary but functioning 
library which could be contributed elsewhere (commons?)

> WEB : Wise reflection for generic handlers
> ------------------------------------------
>
>                 Key: LABS-161
>                 URL: https://issues.apache.org/jira/browse/LABS-161
>             Project: Labs
>          Issue Type: Improvement
>          Components: Magma
>            Reporter: Simone Gianni
>            Assignee: Simone Gianni
>
> It would be nice to be able to define generic web handler and generic beans, 
> the define non generic subclasses, and have Magma behave correctly with them.
> Magma uses reflection/introspection to determine data types in a number of 
> situations :
>     * Examining the type of properties in a bean to setup proper conversion
>     * Examining the parameters of a do or handle method in a webhandler to 
> perform proper conversion 
> If a generic handler is defined, and then a non generic but parametrized 
> subclass is defined, this subclass is, formally, using concrete classes and 
> not generics.
> Suppose the following :
> public class DisplayingBeanHandler<T> extends WebHandler {
>   public HtmlProducer doShow(T bean) {
>     ...
>   }
> }
> public class DisplayPersonHandler extends DisplayingBeanHandler<Person> {}
> DisplayPersonHandler? has a doShow(Person) method, at any effect.
> Unfortunately, to keep compatibility, the Java compiler will instead create a 
> synthetic method based on Object :
> public class DisplayPersonHandler extends DisplayingBeanHandler<Person> {
>   // Injected by compiler
>   public HtmlProducer doShow(Object bean) {
>     super.doShow((Person)bean);
>   }
> }
> While this ensures proper checks, reflection will see this method as using 
> Object, so Magma will not know what to convert it to.
> Where this happen, Magma has to correctly check for generics, and behave 
> correctly.
> Since there are many places (and many more in the future) requiring this kind 
> of functionality, a small "library" should be created to ease this pain. 

-- 
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]

Reply via email to