[ 
http://jira.magnolia-cms.com/browse/MAGNOLIA-3525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tobias Mattsson updated MAGNOLIA-3525:
--------------------------------------

          Summary: Support for using a custom TypeMapping in Content2Bean  
(was: Revise content2bean)
    Fix Version/s: 4.5
                       (was: 4.5.x)
      Description: Content2Bean uses a TypeMapping acquired through out the 
code via static accesses. It would be better if this was supplied to 
Content2BeanProcessorImpl and then passed on to the transformers. The default 
processor that's commonly used is a singleton and should use a singleton 
instance of TypeMapping.  (was: While working on MAGNOLIA-2569, I had to change 
the Content2Bean interfaces, notably starting to pass the {{TypeMapping}} 
instance around.

There are probably better ways - since {{TypeMapping}} is some sort of global 
"cache", it shouldn't be necessary to pass it around. There was some (cyclic-) 
dependency issue, because Transformers needed an instance of {{TypeMapping}}.

Ideally, we should go for a much simpler interface:
{code}
public interface Content2Bean {
    Object toBean(Content node) throws Content2BeanException;
}
{code}

Sprinkle some generics magic on top of that, and nobody should (hopefully) have 
to specify the transformer they need anymore. There's probably going to be some 
sort of transformer registry somewhere, where transformers are able to tell 
what type(s) they're transforming.

Some (if not all) transformers will need to be explicitly registered (either 
just as "components" or explicitly as "transformers" - see MAGNOLIA-3517) 
Subclasses of CollectionPropertyHidingTransformer for instance, will probably 
need that.


Additional ideas:
* Drop support for pluggable {{info.magnolia.content2bean.TypeMapping}}. 
Instead, module descriptors can explicitly register transformers. Neither 
{{PropertiesBasedTypeMapping}} nor {{DescriptorFileBasedTypeMapping}} was ever 
used, as far as we know.
* Only support explicitly registered transformers. We might add another element 
to the module descriptor. (see MAGNOLIA-3517)
** transformers would be in the root container ? can we "hide" them (i.e no 
components should depend on them, except TransformerProvider)?
* Known non-core transformers:
** {{info.magnolia.module.cache.ehcache.CacheConfigurationTransformer}} 
(registered via a {{.transformer}} property - this was needed because it 
transforms a non-magnolia class)
** {{info.magnolia.module.cache.executor.CompositeExecutorTransformer}} (naming 
convention)
** {{info.magnolia.imaging.operations.text.TextStyleTransformer}} (naming 
convention)
** {{ProxyCapableContent2BeanTransformer}} and 
{{SpringContent2BeanTransformer}} in Blossom




)

> Support for using a custom TypeMapping in Content2Bean
> ------------------------------------------------------
>
>                 Key: MAGNOLIA-3525
>                 URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3525
>             Project: Magnolia
>          Issue Type: Sub-task
>      Security Level: Public
>          Components: content2bean, core
>            Reporter: Grégory Joseph
>            Assignee: Boris Kraft
>             Fix For: 4.5
>
>
> Content2Bean uses a TypeMapping acquired through out the code via static 
> accesses. It would be better if this was supplied to 
> Content2BeanProcessorImpl and then passed on to the transformers. The default 
> processor that's commonly used is a singleton and should use a singleton 
> instance of TypeMapping.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       


----------------------------------------------------------------
For list details, see: http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to