Interface LinksUpdater

  • All Known Implementing Classes:
    XhtmlLinksUpdater

    public interface LinksUpdater
    Used to update the links on a piece of content. This is required when the destination of a link has been updated. This includes when the destination is moved to a different space, renamed or both.
    • Method Detail

      • updateReferencesInContent

        String updateReferencesInContent​(String content,
                                         LinksUpdater.PartialReferenceDetails oldLinkDetails,
                                         LinksUpdater.PartialReferenceDetails newLinkDetails)
        Update all the links and embedded image references in the content that referred to 'oldDetails' to now refer to 'newDetails'. It should be noted that any relative references encountered in the content will not be modified since it cannot be known whether they would be a match for the 'oldDetails' parameter. You should call expandRelativeReferencesInContent(SpaceContentEntityObject) prior to calling this method to ensure there are no relative links in the content to confuse matters.
        Parameters:
        content - the content to update references in
        oldLinkDetails - specifies the references to be modified
        newLinkDetails - specifies the reference to be used in place of those identified by 'oldDetails'.
        Returns:
        content with relevant references updated
      • updateReferencesInContent

        String updateReferencesInContent​(String content,
                                         Map<LinksUpdater.PartialReferenceDetails,​LinksUpdater.PartialReferenceDetails> oldToNewMapping)
        Update all the links and embedded image references in the content that referred to 'oldDetails' to now refer to 'newDetails'. It should be noted that any relative references encountered in the content will not be modified since it cannot be known whether they would be a match for the 'oldDetails' parameter. You should call expandRelativeReferencesInContent(SpaceContentEntityObject) prior to calling this method to ensure there are no relative links in the content to confuse matters.
        Parameters:
        content - the content to update references in
        oldToNewMapping - the map from old reference to new reference
        Returns:
        content with relevant references updated
      • updateAttachmentReferencesInContent

        String updateAttachmentReferencesInContent​(String content,
                                                   LinksUpdater.AttachmentReferenceDetails old,
                                                   LinksUpdater.AttachmentReferenceDetails updated)
        Update all the attachment references in the content that referred to the 'old' attachment to now refer to the 'updated' attachment. It should be noted that any relative links encountered in the content will not be modified since it cannot be known whether they would be a match for the 'old' parameter. You should call expandRelativeReferencesInContent(SpaceContentEntityObject) prior to calling this method to ensure there are no relative attachment references in the content to confuse matters.
        Parameters:
        content - the content to update attachment references in
        old - specifies the attachment references to be modified
        updated - specifies the new attachment reference to replace the old one with
        Returns:
        content with specified attachment references updated.
        Since:
        5.10
      • updateAttachmentReferencesInContent

        String updateAttachmentReferencesInContent​(String content,
                                                   Map<LinksUpdater.AttachmentReferenceDetails,​LinksUpdater.AttachmentReferenceDetails> oldToNewLinkDetails)
        Update all the attachment references in the content that referred to the 'old' attachment to now refer to the 'updated' attachment. It should be noted that any relative links encountered in the content will not be modified since it cannot be known whether they would be a match for the 'old' parameter. You should call expandRelativeReferencesInContent(SpaceContentEntityObject) prior to calling this method to ensure there are no relative attachment references in the content to confuse matters.
        Parameters:
        content - the content to update attachment references in
        oldToNewLinkDetails - the map from old reference to new reference
        Returns:
        content with specified attachment references updated. * @since 5.10
      • expandRelativeReferencesInContent

        String expandRelativeReferencesInContent​(SpaceContentEntityObject content)
        Expand any relative links or embedded images encountered in the supplied content. A relative reference is one that either has no space key (implying "current space") or one with no ResourceIdentifier at all.

        This method will convert such references to an absolute reference to either it's containing space or itself (in the case of an attachment or link with no resource identifier at all).

        Parameters:
        content - the content to be expanded
        Returns:
        the body of the supplied SpaceContentEntityObject with all relative references expanded.
      • expandRelativeReferencesInContent

        String expandRelativeReferencesInContent​(Comment comment)
        Expand any relative links or embedded files/images encountered in the supplied comment. A relative reference is one that either has no space key (implying "current space") or one with no ResourceIdentifier at all.

        This method will convert such references to an absolute reference to either it's containing space or itself (in the case of an attachment or link with no resource identifier at all).

        Parameters:
        comment - the comment to be expanded
        Returns:
        the body of the supplied SpaceContentEntityObject with all relative references expanded.
      • contractAbsoluteReferencesInContent

        String contractAbsoluteReferencesInContent​(SpaceContentEntityObject content)
        A companion method to {expandRelativeReferencesInContent(SpaceContentEntityObject) that will convert any absolute references to itself to be relative. So in a ResourceIdentifier, if a space key is present for the same space as the supplied content then this will be dropped. If the ResourceIdentifier actually refers to the SpaceContentEntityObject supplied then it will be dropped altogether.
        Parameters:
        content - the content to have any suitable absolute references contracted.
        Returns:
        the body of the supplied SpaceContentEntityObject modified as appropriate.
      • canonicalize

        String canonicalize​(String content)
        Applies the same rewriter as on any of contract/expand methods.

        This method is needed because even if xml structure of content is the same entity replacing by javax.xml.* and substitution done in ConfluenceXMLEventWriter will make two equal contents look different on equals method.

        Returns:
        canonicalized content
        Since:
        5.8.15