Class DefaultXhtmlContent

    • Method Detail

      • convertWikiToStorage

        public String convertWikiToStorage​(String wikiContent,
                                           ConversionContext context,
                                           List<RuntimeException> migrationExceptions)
        Description copied from interface: XhtmlContent
        Returns the XHTML storage format equivalent of the supplied wikiContent (wiki markup).
        Specified by:
        convertWikiToStorage in interface WikiToStorageConverter
        Specified by:
        convertWikiToStorage in interface XhtmlContent
        Parameters:
        wikiContent - to be converted.
        context - for the conversion.
        migrationExceptions - that will be populated with any exceptions that take place during the migration. There may be multiple exceptions if there are multiple wiki markup sections.
        Returns:
        the XHTML storage format equivalent.
      • convertWikiBodyToStorage

        public <T extends ContentEntityObject> T convertWikiBodyToStorage​(T ceo)
        Description copied from interface: XhtmlContent

        Convert the body of the supplied ContentEntityObject to Confluence Storage Format XHTML (if necessary).

        Since for now and the near future Confluence may have both wiki formatted and XHTML formatted ContentEntityObjects in the system (wiki formatted historical versions may be present in an upgraded installation) this method provides a convenient way to ensure you only need to handle ContentEntityObjects with the new XHTML format of body.

        Note that the returned ceo is a clone of the passed in version, even if no conversion was necessary.

        Specified by:
        convertWikiBodyToStorage in interface WikiToStorageConverter
        Specified by:
        convertWikiBodyToStorage in interface XhtmlContent
        Parameters:
        ceo - the ContentEntityObject to be converted (if necessary).
        Returns:
        a clone of the provided ContentEntityObject with its wiki formatted body converted.
      • convertWikiToView

        public String convertWikiToView​(String wikiContent,
                                        ConversionContext context,
                                        List<RuntimeException> migrationExceptions)
                                 throws XMLStreamException,
                                        XhtmlException
        Description copied from interface: XhtmlContent
        Returns the HTML view format equivalent of the supplied wikiContent.
        Specified by:
        convertWikiToView in interface XhtmlContent
        Parameters:
        wikiContent - to be converted.
        context - for the conversion.
        migrationExceptions - that will be populated with any exceptions that take place during the migration. There may be multiple exceptions if there are multiple wiki markup sections.
        Returns:
        the HTML view format equivalent.
        Throws:
        XMLStreamException - if there was a problem reading intermediate storage format data that is created during the conversion.
        XhtmlException - if there was a problem creating the view format output.
      • convertStorageToView

        public List<BatchedRenderResult> convertStorageToView​(BatchedRenderRequest... renderRequests)
        Description copied from interface: XhtmlContent
        Returns a view format fragments for the supplied renderRequests.

        Failed renders will be flagged in the results, rather than throwing an XMLStreamException or XhtmlException.

        Specified by:
        convertStorageToView in interface XhtmlContent
        Parameters:
        renderRequests - batches of storageFragments to be converted with their associated contexts
        Returns:
        a list of batch results.
      • updateMacroDefinitions

        public String updateMacroDefinitions​(String storageFragment,
                                             ConversionContext context,
                                             MacroDefinitionUpdater updater)
                                      throws XhtmlException
        Description copied from interface: XhtmlContent
        Updates MacroDefinitions in the supplied storageFragment.
         // Changes the name of all "mice" macros to "cheese".
         page.setBodyAsString(xhtmlContent.updateMacroDefinitions(page.getBodyAsString(), context, new XhtmlContent.MacroDefinitionUpdater()
            {
                public MacroDefinition update(MacroDefinition macroDefinition)
                {
                    if ("mice".equals(macroDefinition.getName()))
                        macroDefinition.setName("cheese");
        
                    return macroDefinition;
                }
            }));
         
        Specified by:
        updateMacroDefinitions in interface MacroDefinitionTransformer
        Specified by:
        updateMacroDefinitions in interface XhtmlContent
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which might contain macro definitions.
        context - for the conversion.
        updater - which is called to update each MacroDefinition found.
        Returns:
        the storage representation of the modified fragment.
        Throws:
        XhtmlException - if there was a problem reading the storage fragment, creating the MacroDefinition or creating the modified fragment.
      • replaceMacroDefinitionsWithString

        public String replaceMacroDefinitionsWithString​(String storageFragment,
                                                        ConversionContext context,
                                                        MacroDefinitionReplacer replacer)
                                                 throws XhtmlException
        Description copied from interface: XhtmlContent
        Replaces MacroDefinitions in the supplied storageFragment with a String. Use {link #updateMacroDefinitions} rather than this method if you wish to replace or update one definition with another.
         // Replaces "cheese" macros with some XHTML.
         page.setBodyAsString(xhtmlContent.replaceMacroDefinitionsWithString(page.getBodyAsString(), context, new MacroDefinitionReplacer()
            {
                public String replace(MacroDefinition macroDefinition) throws XhtmlException
                {
                    if ("cheese".equals(macroDefinition.getName()))
                        return "

        I hate cheese!

        "; return xhtmlContent.convertMacroDefinitionToStorage(macroDefinition, context); } }));
        Specified by:
        replaceMacroDefinitionsWithString in interface MacroDefinitionTransformer
        Specified by:
        replaceMacroDefinitionsWithString in interface XhtmlContent
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which might contain macro definitions.
        context - for the conversion.
        replacer - which is called to replace each MacroDefinition found with a replacement in storage format (typically XHTML).
        Returns:
        the storage representation of the modified fragment.
        Throws:
        XhtmlException - if there was a problem reading the storage fragment, creating the MacroDefinition or creating the modified fragment.
      • handleMacroDefinitions

        public void handleMacroDefinitions​(String storageFragment,
                                           ConversionContext context,
                                           MacroDefinitionHandler handler)
                                    throws XhtmlException
        Description copied from interface: XhtmlContent
        Perform an operation on MacroDefinitions in the supplied storageFragment without making changes to the storage representation.
         // Finds the last macro on a page
         final AtomicReference atomicMacroDefinition = new AtomicReference();
         xhtmlContent.handleMacroDefinitions(page.getBodyAsString(), context, new MacroDefinitionHandler()
            {
                public void handle(MacroDefinition macroDefinition)
                {
                    atomicMacroDefinition.set(macroDefinition);
                }
            });
         MacroDefinition lastMacro = atomicMacroDefinition.get();
         
        Specified by:
        handleMacroDefinitions in interface MacroDefinitionTransformer
        Specified by:
        handleMacroDefinitions in interface XhtmlContent
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which might contain macro definitions.
        context - for the conversion.
        handler - which is called each MacroDefinition found.
        Throws:
        XhtmlException - if there was a problem reading the storage fragment or creating the MacroDefinition.
      • handleMacroDefinitions

        public void handleMacroDefinitions​(String storageFragment,
                                           ConversionContext context,
                                           MacroDefinitionHandler handler,
                                           MacroDefinitionMarshallingStrategy strategy)
                                    throws XhtmlException
        Description copied from interface: XhtmlContent
        Perform an operation on MacroDefinitions in the supplied storageFragment, with optional changes to the storage representation defined by the MacroDefinitionMarshallingStrategy.
         // Finds the last macro on a page, maintaining any nested macros within the MacroDefinition body
         final AtomicReference atomicMacroDefinition = new AtomicReference();
         xhtmlContent.handleMacroDefinitions(page.getBodyAsString(), context, new MacroDefinitionHandler()
            {
                public void handle(MacroDefinition macroDefinition)
                {
                    atomicMacroDefinition.set(macroDefinition);
                }
            }, MacroDefinitionMarshallingStrategy.MARSHALL_MACRO);
         MacroDefinition lastMacro = atomicMacroDefinition.get();
         
        Specified by:
        handleMacroDefinitions in interface MacroDefinitionTransformer
        Specified by:
        handleMacroDefinitions in interface XhtmlContent
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which might contain macro definitions.
        context - for the conversion.
        handler - which is called each MacroDefinition found.
        strategy - the strategy used to transform the body of the handled macros
        Throws:
        XhtmlException - if there was a problem reading the storage fragment or creating the MacroDefinition.