There is 1 update.
 
 
XWiki Rendering / cid:jira-generated-image-avatar-028358af-c473-426d-975e-bf07bf42fee9 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-891ea2fe-0930-46b1-b440-2983e1a8384b Changes by Raphaël Jakse on 14/Jun/24 09:20
 
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.


At [https://github.com/xwiki/xwiki-platform/blob/0ddc451a08d512f0b092bfe9923f0e42b6e62967/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-xwiki/src/main/java/org/xwiki/rendering/script/RenderingScriptService.java#L254: |https://github.com/xwiki/xwiki-platform/blob/0ddc451a08d512f0b092bfe9923f0e42b6e62967/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-xwiki/src/main/java/org/xwiki/rendering/script/RenderingScriptService.java#L254:]this.macroManager.getMacro(id).getDescriptor() returns null.