sonata-project/SonataCoreBundle

What should we do with the serializer namespace?

Closed this issue · 6 comments

Dependents of this namespace include:

  • e-commerce
  • page
  • media
  • classification

Documentation can be found at https://github.com/sonata-project/SonataCoreBundle/blob/c1bbd519481c58ed787527d9b48c7a8238c23107/docs/reference/serialization.rst

TL;DR: it's about serializing/deserializing an object to/from its id + a manager (meaning a persistence manager)

The only 3 solutions I see are:

a) create a package with the 2 types
b) copy the 2 types to all of the 4 packages above
c) drop features related to this (I have no idea how useful they are)

I'm reluctantly leaning towards a), what about you?

I'm for solution 2, because it's no common problem / component

a) - make reusable package for 2 types (depends of. "jms_serializer.subscribing_handler" is bad idea.

b) - OK

c) - If we dont how useful od it, then b look event better

What about d ?
Move serializer to form-extensionds. It will be used in all 4 bundles. Also look at BaseDoctrineORMSerializationType. It look like is both are related to jms_serializer. Ecommerce basket API form can be example.

API form

Oh so this serializer is used in APIs that are used to display forms?! If yes d) sounds like a really great option.

API form

Oh so this serializer is used in APIs that are used to display forms?! If yes d) sounds like a really great option.

It look like every *Type extends Base BaseDoctrineORMSerializationType base on API. Also all this Types have handlers extends BaseSerializerHandler.

@greg0ire can u check it too, to be sure in 100%? I'm on phone now.

Looks correct:

rg BaseDoctrineORMSerializationType [Ss]onata*
SonataCoreBundle/CHANGELOG.md
306:- Fixed `BaseDoctrineORMSerializationType::buildForm` compatibility with Symfony3 forms

SonataCoreBundle/UPGRADE-3.0.md
44:These classes will be remove use respectively ``BaseDoctrineORMSerializationType`` and ``BaseStatusType``

sonata-form-extensions/CHANGELOG.md
23:- Remove `BaseDoctrineORMSerializationType::setDefaultOptions`

sonata-form-extensions/composer.json
50:        "doctrine/persistence": "If you want to use BaseDoctrineORMSerializationType"

SonataCoreBundle/docs/reference/form_types.rst
43:    ``BaseDoctrineORMSerializationType`` with an empty class to have a

sonata-form-extensions/docs/reference/form_types.rst
43:    ``BaseDoctrineORMSerializationType`` with an empty class to have a

sonata-form-extensions/src/Type/BaseDoctrineORMSerializationType.php
31:class BaseDoctrineORMSerializationType extends AbstractType

SonataClassificationBundle/src/Form/Type/ApiTagType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiTagType extends BaseDoctrineORMSerializationType

SonataClassificationBundle/src/Form/Type/ApiContextType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiContextType extends BaseDoctrineORMSerializationType

SonataClassificationBundle/src/Form/Type/ApiCategoryType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiCategoryType extends BaseDoctrineORMSerializationType

SonataClassificationBundle/src/Form/Type/ApiCollectionType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiCollectionType extends BaseDoctrineORMSerializationType

SonataCoreBundle/src/Form/Type/BaseDoctrineORMSerializationType.php
32:class BaseDoctrineORMSerializationType extends AbstractType

SonataMediaBundle/src/Form/Type/ApiGalleryItemType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
21:class ApiGalleryItemType extends BaseDoctrineORMSerializationType

SonataMediaBundle/src/Form/Type/ApiGalleryType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
21:class ApiGalleryType extends BaseDoctrineORMSerializationType

SonataMediaBundle/src/Form/Type/ApiDoctrineMediaType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
21:class ApiDoctrineMediaType extends BaseDoctrineORMSerializationType

sonata-ecommerce/src/BasketBundle/Form/ApiBasketElementParentType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiBasketElementParentType extends BaseDoctrineORMSerializationType

sonata-ecommerce/src/BasketBundle/Form/ApiBasketParentType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiBasketParentType extends BaseDoctrineORMSerializationType

SonataNewsBundle/src/Form/Type/ApiCommentType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
21:class ApiCommentType extends BaseDoctrineORMSerializationType

SonataNewsBundle/src/Form/Type/ApiPostType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
21:class ApiPostType extends BaseDoctrineORMSerializationType

SonataNotificationBundle/src/Form/Type/MessageSerializationType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class MessageSerializationType extends BaseDoctrineORMSerializationType

SonataPageBundle/src/Form/Type/ApiPageType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiPageType extends BaseDoctrineORMSerializationType

SonataPageBundle/src/Form/Type/ApiSiteType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiSiteType extends BaseDoctrineORMSerializationType

SonataPageBundle/src/Form/Type/ApiBlockType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiBlockType extends BaseDoctrineORMSerializationType

SonataUserBundle/src/Form/Type/ApiGroupType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiGroupType extends BaseDoctrineORMSerializationType

SonataUserBundle/src/Form/Type/ApiUserType.php
16:use Sonata\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiUserType extends BaseDoctrineORMSerializationType

SonataCoreBundle/src/CoreBundle/Form/Type/DoctrineORMSerializationType.php
21:class DoctrineORMSerializationType extends BaseDoctrineORMSerializationType

SonataCoreBundle/src/CoreBundle/Form/Type/BaseDoctrineORMSerializationType.php
16:if (!class_exists(\Sonata\Form\Type\BaseDoctrineORMSerializationType::class, false)) {
18:        'The '.__NAMESPACE__.'\BaseDoctrineORMSerializationType class is deprecated since version 3.13.0 and will be removed in 4.0.'
19:        .' Use Sonata\Form\Type\BaseDoctrineORMSerializationType instead.',
25:    \Sonata\Form\Type\BaseDoctrineORMSerializationType::class,
26:    __NAMESPACE__.'\BaseDoctrineORMSerializationType'
33:    class BaseDoctrineORMSerializationType extends \Sonata\Form\Type\BaseDoctrineORMSerializationType

sonata-ecommerce/src/CustomerBundle/Form/Type/ApiAddressType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiAddressType extends BaseDoctrineORMSerializationType

sonata-ecommerce/src/CustomerBundle/Form/Type/ApiCustomerType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiCustomerType extends BaseDoctrineORMSerializationType

sonata-ecommerce/src/ProductBundle/Form/Type/ApiProductParentType.php
16:use Sonata\CoreBundle\Form\Type\BaseDoctrineORMSerializationType;
18:class ApiProductParentType extends BaseDoctrineORMSerializationType

@core23 WDYT?