public class

DefaultXhtmlContent

extends Object
implements XhtmlContent
java.lang.Object
   ↳ com.atlassian.confluence.content.render.xhtml.DefaultXhtmlContent

Summary

Public Constructors
DefaultXhtmlContent(Marshaller<MacroDefinition> viewMacroMarshaller, Marshaller<MacroDefinition> storageMacroMarshaller, Marshaller<Link> viewLinkMarshaller, Marshaller<Link> storageLinkMarshaller, Marshaller<EmbeddedImage> viewEmbeddedImageMarshaller, Marshaller<EmbeddedImage> storageEmbeddedImageMarshaller, FragmentTransformer storageToViewFragmentTransformer, XmlEventReaderFactory xmlEventReaderFactory, ContentTransformerFactory contentTransformerFactory, ExceptionTolerantMigrator wikiToXhtmlMigrator)
Public Methods
String convertEmbeddedImageToStorage(EmbeddedImage embeddedImage, ConversionContext context)
Returns a storage format fragment for the supplied embeddedImage.
String convertEmbeddedImageToView(EmbeddedImage embeddedImage, ConversionContext context)
Returns a view format fragment for the supplied embeddedImage.
String convertLinkToStorage(Link link, ConversionContext context)
Returns a storage format fragment for the supplied link.
String convertLinkToView(Link link, ConversionContext context)
Returns a view format fragment for the supplied link.
String convertMacroDefinitionToStorage(MacroDefinition macroDefinition, ConversionContext context)
Returns an storage format fragment for the supplied macroDefinition.
String convertMacroDefinitionToView(MacroDefinition macroDefinition, ConversionContext context)
Returns a view format fragment for the supplied macroDefinition.
String convertStorageToView(String storageFragment, ConversionContext context)
Returns a view format fragment for the supplied storageFragment.
<T extends ContentEntityObject> T convertWikiBodyToStorage(T ceo)

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

String convertWikiToStorage(String wikiContent, ConversionContext context, List<RuntimeException> migrationExceptions)
Returns the XHTML storage format equivalent of the supplied wikiContent (wiki markup).
String convertWikiToView(String wikiContent, ConversionContext context, List<RuntimeException> migrationExceptions)
Returns the HTML view format equivalent of the supplied wikiContent.
void handleMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionHandler handler)
Perform an operation on MacroDefinitions in the supplied storageFragment without making changes to the storage representation.
void handleXhtmlElements(String storageFragment, ConversionContext context, List<? extends XhtmlVisitor> visitors)
Provides a mechanism for finding arbitrary Xhtml elements in the supplied storageFormat.
String replaceMacroDefinitionsWithString(String storageFragment, ConversionContext context, MacroDefinitionReplacer replacer)
Replaces MacroDefinitions in the supplied storageFragment with a String.
String updateMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionUpdater updater)
Updates MacroDefinitions in the supplied storageFragment.
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.atlassian.confluence.xhtml.api.XhtmlContent

Public Constructors

public DefaultXhtmlContent (Marshaller<MacroDefinition> viewMacroMarshaller, Marshaller<MacroDefinition> storageMacroMarshaller, Marshaller<Link> viewLinkMarshaller, Marshaller<Link> storageLinkMarshaller, Marshaller<EmbeddedImage> viewEmbeddedImageMarshaller, Marshaller<EmbeddedImage> storageEmbeddedImageMarshaller, FragmentTransformer storageToViewFragmentTransformer, XmlEventReaderFactory xmlEventReaderFactory, ContentTransformerFactory contentTransformerFactory, ExceptionTolerantMigrator wikiToXhtmlMigrator)

Public Methods

public String convertEmbeddedImageToStorage (EmbeddedImage embeddedImage, ConversionContext context)

Returns a storage format fragment for the supplied embeddedImage.

Parameters
embeddedImage that describes the embedded image.
context for the conversion.
Returns
  • the storage format fragment.

public String convertEmbeddedImageToView (EmbeddedImage embeddedImage, ConversionContext context)

Returns a view format fragment for the supplied embeddedImage.

Parameters
embeddedImage that describes the embedded image.
context for the conversion.
Returns
  • the view format fragment.

public String convertLinkToStorage (Link link, ConversionContext context)

Returns a storage format fragment for the supplied link.

Parameters
link that describes the link.
context for the conversion.
Returns
  • the storage format fragment.

public String convertLinkToView (Link link, ConversionContext context)

Returns a view format fragment for the supplied link.

Parameters
link that describes the link.
context for the conversion.
Returns
  • the view format fragment.

public String convertMacroDefinitionToStorage (MacroDefinition macroDefinition, ConversionContext context)

Returns an storage format fragment for the supplied macroDefinition.

Parameters
macroDefinition that describes the macro.
context for the conversion.
Returns
  • the storage format fragment.

public String convertMacroDefinitionToView (MacroDefinition macroDefinition, ConversionContext context)

Returns a view format fragment for the supplied macroDefinition.

Parameters
macroDefinition that describes the macro.
context for the conversion.
Returns
  • the view format fragment.

public String convertStorageToView (String storageFragment, ConversionContext context)

Returns a view format fragment for the supplied storageFragment.

Parameters
storageFragment to be converted (for example the body of a macro).
context for the conversion.
Returns
  • the view format fragment.
Throws
XMLStreamException
XhtmlException

public T convertWikiBodyToStorage (T ceo)

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.

Parameters
ceo the ContentEntityObject to be converted (if necessary).
Returns
  • a clone of the provided ContentEntityObject with its wiki formatted body converted.

public String convertWikiToStorage (String wikiContent, ConversionContext context, List<RuntimeException> migrationExceptions)

Returns the XHTML storage format equivalent of the supplied wikiContent (wiki markup).

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.

public String convertWikiToView (String wikiContent, ConversionContext context, List<RuntimeException> migrationExceptions)

Returns the HTML view format equivalent of the supplied wikiContent.

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
XhtmlException

public void handleMacroDefinitions (String storageFragment, ConversionContext context, MacroDefinitionHandler handler)

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();
 
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.

public void handleXhtmlElements (String storageFragment, ConversionContext context, List<? extends XhtmlVisitor> visitors)

Provides a mechanism for finding arbitrary Xhtml elements in the supplied storageFormat.

Parameters
storageFragment or more typically the storage representation of a complete ContentEntityObject
context for the conversion
visitors a list of visitors

public String replaceMacroDefinitionsWithString (String storageFragment, ConversionContext context, MacroDefinitionReplacer replacer)

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); } }));
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.

public String updateMacroDefinitions (String storageFragment, ConversionContext context, MacroDefinitionUpdater updater)

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;
        }
    }));
 
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.