Magnolia 6 UI ports of 5 UI field transformer classes

Magnolia 5 UI field transformer classes no longer exist in the Magnolia 6 UI framework. The transformer functionality is now distributed among different components. The following is a summary of what the components do:

  • Modify the target property name by appending a locale suffix or by prepending a field prefix. This is done by concrete PropertySet implementations (JcrItemPropertySet) and/or by PropertyNameDecorator.

  • Resolve an item data source of complex fields, a functionality usually covered by item providers.

  • Manage item data sources of multi-value field entries. This is handled by MultiFormView.EntryResolution, which resolves the children and binds each of them to the item provider strategy.

Replacements for transformers

Default classes

info.magnolia.ui.form.field.transformer.* Magnolia 6 UI

basic.BasicTransformer

Not needed. Its functions are obsolete; some are taken over by Vaadin PropertySet.

composite.CompositeTransformer

Use info.magnolia.ui.editor.CurrentItemProvider and set propertyNameDecorator to info.magnolia.ui.field.PrefixNameDecorator.

composite.SwitchableTransformer

Use info.magnolia.ui.editor.CurrentItemProvider and set:

  • propertyNameDecorator to info.magnolia.ui.field.PrefixNameDecorator

  • name for ConfiguredSwitchableFieldDefinition#field to the same name used for the switchable field itself

Other classes

info.magnolia.ui.form.field.transformer.* Magnolia 6 UI

composite.DelegatingCompositeFieldTransformer

Use info.magnolia.ui.editor.CurrentItemProvider.

composite.NoOpCompositeTransformer

Not needed.

multi.DelegatingMultiValueFieldTransformer

Use info.magnolia.ui.editor.CurrentItemProvider and set strict to true for entryResolution.

multi.DelegatingMultiValueSubnodeTransformer

Use info.magnolia.ui.editor.JcrChildNodeProvider and set:

  • The now deprecated supportI18N to false

  • entryResolution to info.magnolia.ui.editor.MultiFieldEntryResolution$Definition

  • strict to true for entryResolution

  • propertyNameDecorator to info.magnolia.ui.field.AlwaysEmptyPrefixNameDecorator

multi.MultiValueChildNodeTransformer

Deprecated, no automatic conversion.

multi.MultiValueChildrenNodeTransformer

Deprecated, no automatic conversion.

multi.MultiValueJSONTransformer

Deprecated, no automatic conversion.

multi.MultiValueSubChildrenNodePropertiesTransformer

Use info.magnolia.ui.editor.JcrChildNodeProvider and set:

  • The now deprecated supportI18N to false

  • entryResolution to the now deprecated info.magnolia.ui.editor.ByLexicographicallyIndexedChildNodes$Definition

  • strict to true for entryResolution

  • orderHandler to the now deprecated info.magnolia.ui.editor.LexicographicallyIndexedJcrNodeOrderHandler$Definition

multi.MultiValueSubChildrenNodeTransformer

Use info.magnolia.ui.field.JcrMultiFieldDefinition and set:

  • JcrMultiFieldDefinition#field to $type: compositeField

  • CompositeFieldDefinition#properties to a single field that shares the same name with the JCR multi field

Example definition
relatedUUID:
  $type: jcrMultiField
  field:
    $type: compositeField
    properties:
      - name: relatedUUID
        $type: linkField
        datasource: *categoryDatasource

Personalization transformers

Transformers with personalization-related functions still use the Magnolia 5 UI framework (magnolia-personalization-compatibility).

info.magnolia.personalization.* Description

cookie.CookieFieldTransformer

Custom transformer for cookie traits.

ui.SimpleTraitValueTransformer

Now functions as the default trait transformer.

visitor.transformer.VisitorTraitListToSetTransformer

Still exists, but is no longer needed.

Example definitions

The following configurations in both frameworks will produce the same results.

  • Magnolia 5 UI

  • Magnolia 6 UI

form:
  tabs:
    - name: tabSwitch
      fields:
        - name: switchable
          fieldType: switchable
          options:
            - name: text
              value: text
            - name: richText
              value: richText
          fields:
            - name: text
              fieldType: text
            - name: richText
              fieldType: richText

    - name: tabMultiBasic
      fields:
        - name: multitext
          fieldType: multiValue
          transformerClass: info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueFieldTransformer
          field:
            name: text
            fieldType: text

    - name: tabMultiDeleg
      fields:
        - name: items
          fieldType: multiValue
          transformerClass: info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueSubnodeTransformer
          field:
            name: itemComposite
            fieldType: composite
            transformerClass: info.magnolia.ui.form.field.transformer.composite.DelegatingCompositeFieldTransformer
            fields:
              - name: text
                fieldType: text
              - name: link
                fieldType: text

    - name: tabMultiLex
      fields:
        - name: itemsLex
          fieldType: multiValue
          transformerClass: info.magnolia.ui.form.field.transformer.multi.MultiValueSubChildrenNodePropertiesTransformer
          field:
            name: itemComposite
            fieldType: composite
            transformerClass: info.magnolia.ui.form.field.transformer.composite.NoOpCompositeTransformer
            fields:
              - name: text
                fieldType: text
              - name: link
                fieldType: text
form:
  properties:
    switchable:
      $type: switchableField
      field:
        name: switchable
        $type: radioButtonGroupField
        datasource:
          $type: optionListDatasource
          options:
            - name: text
              value: text
            - name: richText
              value: richText
      itemProvider:
        $type: currentItemProvider
      propertyNameDecorator: info.magnolia.ui.field.PrefixNameDecorator
      forms:
        - name: text
          properties:
            text:
              $type: textField
        - name: richText
          properties:
            richText:
              $type: richTextField

    multitext:
      $type: jcrMultiField
      itemProvider:
        $type: currentItemProvider
      entryResolution:
        class: info.magnolia.ui.editor.MultiFieldEntryResolution$Definition
        strict: true
      field:
        name: text
        $type: textField

    items:
      $type: jcrMultiField
      itemProvider:
        $type: jcrChildNodeProvider
        supportI18N: false
      entryResolution:
        class: info.magnolia.ui.editor.MultiFieldEntryResolution$Definition
        strict: true
        propertyNameDecorator: info.magnolia.ui.field.AlwaysEmptyPrefixNameDecorator
      field:
        $type: compositeField
        properties:
          text:
            $type: textField
          link:
            $type: textField

    itemsLex:
      $type: jcrMultiField
      itemProvider:
        $type: jcrChildNodeProvider
        supportI18N: false
      entryResolution:
        class: info.magnolia.ui.editor.ByLexicographicallyIndexedChildNodes$Definition
        strict: true
      orderHandler:
        class: info.magnolia.ui.editor.LexicographicallyIndexedJcrNodeOrderHandler$Definition
      field:
        $type: compositeField
        properties:
          text:
            $type: textField
          link:
            $type: textField
Feedback