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