There is 1 update.
 
 
XWiki Rendering / cid:jira-generated-image-avatar-f798ba2f-fad0-4c4e-b358-c9e76e7dae0b XRENDERING-748 Open

A macro with a null id completely breaks the macro picker (NPE)

 
View issue   ·   Add comment
 

1 update

 
cid:jira-generated-image-avatar-e4358141-8f5a-47ff-ac0f-0668852f6e0a Changes by Raphaël Jakse on 14/Jun/24 08:52
 
Description: There is a NPE when the macroId is null in DefaultMacroCategoryManager.getMacroCategories().

When there is a macro that returns a null macroId, the macro listing completely breaks in the WYSIWYG editor.

!image-2024-06-14-08-30-05-815.png|thumbnail!



A null macro id should never happen, it would only in case of a programming mistake. However, I think logging an error would be more appropriate.

The NPE is at:
[ https://github.com/xwiki/xwiki-rendering/blob/8fcf6ac112103b0b1d0f79d4b5624d2cfe05ce39/xwiki-rendering-transformations/xwiki-rendering-transformation-macro/src/main/java/org/xwiki/rendering/internal/macro/DefaultMacroCategoryManager.java#L116 ]

The trace:


{code :java }
Caused by: java.lang.NullPointerException: Cannot invoke "org.xwiki.rendering.macro.MacroId.getId()" because "macroId" is null
at org.xwiki.rendering.internal.macro.DefaultMacroCategoryManager.getMacroCategories(DefaultMacroCategoryManager.java:116)
at org.xwiki.rendering.script.RenderingScriptService.getMacroCategories(RenderingScriptService.java:301)
at jdk.internal.reflect.GeneratedMethodAccessor1696.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
... 257 more
{code}



The [getMacroIdsByCategory|https://github.com/xwiki/xwiki-rendering/blob/8fcf6ac112103b0b1d0f79d4b5624d2cfe05ce39/xwiki-rendering-transformations/xwiki-rendering-transformation-macro/src/main/java/org/xwiki/rendering/internal/macro/DefaultMacroCategoryManager.java#L144] method should probably be checked as well.

The call to getMacroCategories comes from CKEditor.MacroService.