Class ContentCreator


  • @ExperimentalSpi
    public class ContentCreator
    extends Object
    ContentCreator contains logic to validate CREATE / UPDATE content operations which involves sanity checks like access permission and blank titles. In addition, ContentCreator consists of util methods to clone and set content metadata and properties It is expected to be used along side concrete implementations of BaseContentTypeApiSupport
    Since:
    5.9.0
    • Method Detail

      • setCommonPropertiesForCreate

        public void setCommonPropertiesForCreate​(Content newContent,
                                                 ContentEntityObject entity,
                                                 com.atlassian.user.User authenticatedUser)
        Sets common properties on a newly created entity in preparation for being saved.

        The properties set include the title and content body, and if the entity is a SpacedContentEntityObject also the space

        Parameters:
        newContent - the content containing the new properties to set on the entity
        entity - the entity to set the new properties on
        authenticatedUser - the user that performing the operation
      • validateUpdate

        public ValidationResult validateUpdate​(ConfluenceUser user,
                                               Content updatedContent,
                                               ContentEntityObject entity)
        Perform common validation checks for updating content
        Parameters:
        user - the user to perform permission checks on
        updatedContent - the content to be updated
        entity - the entity to be updated
        Returns:
        a validation result indicating any validation errors that would occur on update
      • validateCreate

        public ValidationResult validateCreate​(ConfluenceUser confluenceUser,
                                               Content newContent,
                                               Class<? extends ContentEntityObject> entityClass)
        Perform common validation checks for creation of content in a space
        Parameters:
        confluenceUser - the user to perform permission checks on
        newContent - the content to be created
        entityClass - the class of content to create
        Returns:
        a validation result indicating any errors that would occur attempting to create content
      • setCommonPropertiesForUpdate

        public boolean setCommonPropertiesForUpdate​(Content updatedContent,
                                                    ContentEntityObject entity)
        Sets common properties on the entity in preparation for an update. For properties initialized include the title and the content body.
        Parameters:
        updatedContent - the content containing the properties to update on the entity
        entity - the entity to be updated
        Returns:
        true if the entity was updated and requires being saved to the database
      • setLabelsMetadataOnEntity

        public boolean setLabelsMetadataOnEntity​(Content updatedContent,
                                                 ContentEntityObject entity)
        Sets the labels metadata on the entity
        Parameters:
        updatedContent - the content with the new body content
        entity - the entity to be updated
        Returns:
        true if the entity was updated with labels metadata different to what it already had
      • setCommonMetadata

        public boolean setCommonMetadata​(Content updatedContent,
                                         ContentEntityObject entity)
        Sets the common metadata on the entity
        Parameters:
        updatedContent - the content containing the properties to update on the entity
        entity - the entity to be updated
        Returns:
        true if the entity was updated
      • setTitleOnEntity

        public boolean setTitleOnEntity​(Content updatedContent,
                                        ContentEntityObject entity)
        Sets the title in updatedContent on the entity
        Parameters:
        updatedContent - the content with the new title
        entity - the entity to be updated
        Returns:
        true if the entity was updated with a different title to what it already had
      • setContentBodyOnEntity

        public boolean setContentBodyOnEntity​(Content updatedContent,
                                              ContentEntityObject entity)
        Sets the body content in updatedContent on the entity
        Parameters:
        updatedContent - the content with the new body content
        entity - the entity to be updated
        Returns:
        true if the entity was updated with body content different to what it already had
      • setContentStatusOnEntity

        public boolean setContentStatusOnEntity​(Content updatedContent,
                                                ContentEntityObject entity)
        Sets the content status from updatedContent on the entity
        Parameters:
        updatedContent - the content with the new title
        entity - the entity to be updated
        Returns:
        true if the content status was updated
      • setSpaceForCreate

        public void setSpaceForCreate​(Content newContent,
                                      SpaceContentEntityObject spacedEntity,
                                      com.atlassian.user.User authenticatedUser)
        Sets the space in newContent on this spacedEntity
        Parameters:
        newContent - the content with the new space to set
        spacedEntity - the entity to be updated with the space
      • saveNewVersion

        public <T extends ContentEntityObject> T saveNewVersion​(T ceo,
                                                                T originalCEO,
                                                                Version version)
        Save a new version of the CEO due to an update
        Parameters:
        ceo - the new version of the CEO
        originalCEO - the original version of the ceo
        version - the version object with information about the new version to be saved
        Returns:
        the latest version of the CEO fetched from the database
      • update

        public <T extends ContentEntityObject> T update​(T ceo,
                                                        T originalCEO,
                                                        Version version)
        Saves CEO
        Parameters:
        ceo - CEO
        originalCEO - ceo we are updating from
        version - current version to update to
        Returns:
        the latest version of the CEO fetched from the database
      • saveForCreate

        @Deprecated
        public <T extends ContentEntityObject> T saveForCreate​(T entity,
                                                               com.atlassian.fugue.Option<Draft> draft)
        Save a newly created CEO
        Parameters:
        entity - the newly created CEO
        draft - the draft object contains metadata which will be transferred into the entity
        Returns:
        the latest version of the CEO fetched from the database
      • saveForCreate

        @Deprecated
        public <T extends ContentEntityObject> T saveForCreate​(T entity,
                                                               @Nullable Version version,
                                                               com.atlassian.fugue.Option<Draft> draft)
        Save a newly created content entity object
        Parameters:
        entity - the entity object to be saved
        version - the version
        draft - the draft object contains metadata which will be transferred into the entity
        Returns:
        the latest version of the content entity object fetched from the database
        Since:
        6.13.0
      • saveNewContent

        public <T extends ContentEntityObject> T saveNewContent​(T entity,
                                                                @Nullable Version version,
                                                                @Nullable Draft draft)
        Save a newly created content entity object
        Parameters:
        entity - the entity object to be saved
        version - the version
        draft - the draft object contains metadata which will be transferred into the entity. Can be null.
        Returns:
        the latest version of the content entity object fetched from the database
        Since:
        7.0.1