Confluence via the Java API is not exactly a no-event, but not too hard either.
Creating pages automatically inWhen creating and saving a page we run into a NullPointerException
within the PageEditedPayloadTransformer
.
[confluence.notifications.impl.NotificationsEventDispatcher] errorOrDebug Error during notification dispatch : null
[INFO] java.lang.NullPointerException
[INFO] at com.atlassian.confluence.notifications.content.transformer.PageEditedPayloadTransformer.getOriginalId(PageEditedPayloadTransformer.java:20)
[INFO] at com.atlassian.confluence.notifications.content.transformer.PageEditedPayloadTransformer.getOriginalId(PageEditedPayloadTransformer.java:12)
[INFO] at com.atlassian.confluence.notifications.content.ContentEditedPayloadTransformer.checkedCreate(ContentEditedPayloadTransformer.java:12)
[INFO] at com.atlassian.confluence.notifications.PayloadTransformerTemplate.create(PayloadTransformerTemplate.java:38)
[INFO] at com.atlassian.confluence.notifications.impl.NotificationsEventDispatcher.handleEventInternal(NotificationsEventDispatcher.java:86)
[INFO] at com.atlassian.confluence.notifications.impl.NotificationsEventDispatcher.handleEvent(NotificationsEventDispatcher.java:58)
[INFO] at sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
[INFO] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO] at java.lang.reflect.Method.invoke(Method.java:497)
[INFO] at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36)
[INFO] at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1$1.run(AsynchronousAbleEventDispatcher.java:48)
[INFO] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[INFO] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[INFO] at java.lang.Thread.run(Thread.java:745)
There is already an unresolved issue, CONF-37161, which reads:
While trying to render notifications for page edits,
CONF-37161PageEditedPayloadTransformer
can getNullPointerException
s while callinggetOriginalId
. This is because thePageEditedEvent
is not required to contain the original page id - it can benull
. The code needs to not implicitly cast aLong
to along
, since that's causing the null pointer exception in this case.
In case that you do not need to send notifications, you may use a SaveContext that simply suppresses these.
Indicates that notifications should not be sent out informing users of the changes to this content.
SaveContext.isSuppressNotifications()
The pre-constructed context SUPPRESS_NOTIFICATIONS is handy for this use case.
final SaveContext saveContext = DefaultSaveContext.SUPPRESS_NOTIFICATIONS;
pageManager.saveContentEntity(page, saveContext);
Saving the page entity with this context will no longer raise the NPE.