Swift publication module

Unbundled: Extension

Edition

DX Core

License

MLA

Issues

Maven site

Latest

1.0.0-beta-1

This module is in beta state. If you want to learn more, contact us at swift.publishing@magnolia-cms.com for information on availability and technology previews.

Swift publication is a standalone enterprise module that can be used as a replacement for DX Core publishing. It stores versions in an external version store, such as S3. When an author publishes changes, the changes are sent to and stored in the external version store. Public instances then receive notifications to fetch the corresponding version from the version store.

REST communication is used between author and public instances, coordinating the information required for publishing. This allows instances to communicate asynchronously even if an instance is down or not reachable directly.

Module structure

The module consists of several submodules.

ArtifactID Description

magnolia-swift-versioning-api

Provides an API to create and restore versions in an external version store.

magnolia-swift-versioning-ui

Includes the integration of the user interface to manage versions in a module. Provides a means to manage versions in a module, including implementations for version checks and restoration.

magnolia-swift-versioning-s3

Provides functionality to implement S3 version storage.

magnolia-swift-publication-ui

Provides decorations for the Pages app, publishing dialogs, and i18n labels for the new UI buttons.

magnolia-swift-publication-api

Provides an API for external publishing, including services to process publication requests sent by authors, to represent problems that occur when a parent node is not yet published, and the ordering strategy during publication.

magnolia-swift-publication-rest

Provides a REST publication client with the following.

  • A REST publication endpoint

  • Publishing and unpublishing operations

  • Exception handling adhering to the problem details for HTTP APIs specification as defined by RFC 7807

  • Ensuring proper serialization and deserialization

  • Dealing with invalid API tokens

magnolia-swift-publication-personalization

Extends PublicationCommand and handles deletion for personalization when page variants are deleted.

Installing with Maven

Bundled modules are automatically installed for you.

If the module is unbundled, add the following to your bundle including your project’s <dependencyManagement> section and your webapp’s <dependencies> section. If the module is unbundled but the parent POM manages the version, add the following to your webapp’s <dependencies> section.

Some steps below are required, and some parts are optional.

  1. Add the following mandatory dependencies.

    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-versioning-api</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-versioning-ui</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-publication-api</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-publication-ui</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
  2. Add the S3 storage service dependency.

    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-versioning-s3</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
  3. Add REST communication between the author and the public instances dependency.

    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-publication-rest</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 Should you need to specify the module version, do it using <version>.
  4. If required, add a dependency for the Personalization module.

    <dependency>
      <groupId>info.magnolia.swift.publication</groupId>
      <artifactId>magnolia-swift-publication-personalization</artifactId>
      <version>1.0.0-beta-1</version> (1)
    </dependency>
    1 It’s good practice to use the version variable from the parent POM (see in the last step), hence {mgnlSwiftVersion} would be here instead of 1.0.0-beta-1.
  5. Add the module version to the properties of the parent POM.

    Parent POM
    <properties>
      …​
      <mgnlSwiftVersion>1.0.0-beta-1</mgnlSwiftVersion>
      …​
    </properties>

    Update dependency management in your project.

Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules