-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
6.1.1
-
4
-
Severity 3 - Minor
-
0
-
Summary
Automatic merge corrupts macros when XhtmlContent.updateMacroDefinitions is used
Steps to Reproduce
- Install macro with an editorToStorage transformer module that uses updateMacroDefinitions, but makes no changes (code below)
- Disable collaborative editing
- Open a page for editing with two different users; admin and guest for example (page must contain macro – any macro)
- Make changes that can be automatically merged, then save the pages with each user
- After the second save, all macros will be broken because all attributes have been removed from the "ac:structured-macro" element.
Can also be replicated by installing Numbered Captions from Marketplace and using those Macros.
Expected Results
Macro should be rendered properly.
Actual Results
The below exception is thrown in the console:
[INFO] [talledLocalContainer] [com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '=' (code 61) (expected a name start character)
[INFO] [talledLocalContainer] at [row,col {unknown-source}]: [1,709]
[INFO] [talledLocalContainer] at com.ctc.wstx.exc.WstxLazyException.throwLazily(WstxLazyException.java:45)
[INFO] [talledLocalContainer] at com.ctc.wstx.evt.FilteredEventReader.hasNext(FilteredEventReader.java:72)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.XmlFragmentEventReader.hasNext(XmlFragmentEventReader.java:42)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.XmlFragmentBodyEventReader.hasNext(XmlFragmentBodyEventReader.java:36)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transform(DefaultFragmentTransformer.java:116)
[INFO] [talledLocalContainer] at com.atlassian.confluence.plugins.hipchat.emoticons.marshalling.EmoticonTransformerBase.transform(EmoticonTransformerBase.java:60)
[INFO] [talledLocalContainer] at com.atlassian.confluence.plugins.hipchat.emoticons.marshalling.EmoticonTransformerStorageToEditor.transform(EmoticonTransformerStorageToEditor.java:30)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.TransformerChain.transform(TransformerChain.java:33)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.PluggableTransformerChain.transform(PluggableTransformerChain.java:39)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.render(DefaultRenderer.java:142)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.DefaultFormatConverter.convertToEditorFormat(DefaultFormatConverter.java:142)
[INFO] [talledLocalContainer] at com.atlassian.confluence.pages.actions.AbstractPreviewPageAction.getEditorFormattedContent(AbstractPreviewPageAction.java:179)
[INFO] [talledLocalContainer] at com.atlassian.confluence.pages.actions.AbstractEditPageAction.handleVersionConflict(AbstractEditPageAction.java:318)
[INFO] [talledLocalContainer] at com.atlassian.confluence.pages.actions.AbstractEditPageAction.doEdit(AbstractEditPageAction.java:174)
[INFO] [talledLocalContainer] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO] [talledLocalContainer] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[INFO] [talledLocalContainer] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO] [talledLocalContainer] at java.lang.reflect.Method.invoke(Method.java:498)
Notes
Take the code macro as an example, the broken macro has the following contents in the storage format where the attributes for the main element are missing,
<ac:structured-macro><ac:parameter ac:name="language">bash</ac:parameter><ac:parameter ac:name="title">test</ac:parameter><ac:plain-text-body><![CDATA[echo "test"]]></ac:plain-text-body></ac:structured-macro>
- is depended on by
-
DEVHELP-584 Failed to load
In our case after disabling 2 Latex Math Modules the pages includes no broken macros after concurrent editing. So the page can be rendered correctly.