|
Description: |
There is a NPE when the id in a macroId has a is null id in DefaultMacroCategoryManager.getMacroCategories().
When there is a macro that returns a macroId with a null id 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.
I believe this should be easily prevented by storing the id in a variable and checking it for null in the following line 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} 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. |
|