Revise content2bean
-------------------

                 Key: MAGNOLIA-4035
                 URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-4035
             Project: Magnolia
          Issue Type: Sub-task
      Security Level: Public
          Components: content2bean, core
            Reporter: Tobias Mattsson
            Assignee: Boris Kraft
             Fix For: 4.5.x


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






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