Skip to content

[jtx Board] NPE when adding non-email-address attendee #211

@rfc2822

Description

@rfc2822

Reproducible. CC @patrickunterwegs


When adding an attendee to a task in JTX Board and then attempting to sync with DAVx⁵, the sync fails with the following error:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
	at java.net.URI$Parser.parse(URI.java:3093)
	at java.net.URI.<init>(URI.java:584)
	at at.bitfire.ical4android.JtxICalObject.addProperties(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:591)
	at at.bitfire.ical4android.JtxICalObject.getICalendarFormat(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:102)
	at at.bitfire.ical4android.JtxICalObject.write(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:13)
	at at.bitfire.davdroid.sync.JtxSyncManager.generateUpload$app(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:47)
	at at.bitfire.davdroid.sync.JtxSyncManager.generateUpload$app(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:95)
	at at.bitfire.davdroid.sync.SyncManager.uploadDirty$suspendImpl(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:141)
	at at.bitfire.davdroid.sync.SyncManager.uploadDirty(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:1)
	at at.bitfire.davdroid.sync.SyncManager.uploadDirty$default(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:8)
	at at.bitfire.davdroid.sync.SyncManager$uploadDirty$2$1$1.invokeSuspend(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:33)
	at at.bitfire.davdroid.sync.SyncManager$uploadDirty$2$1$1.invoke(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:9)
	at at.bitfire.davdroid.sync.SyncManager$uploadDirty$2$1$1.invoke(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:14)
	at at.bitfire.davdroid.sync.SyncException$Companion.wrapWithLocalResourceSuspending(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:67)
	at at.bitfire.davdroid.sync.SyncManager$uploadDirty$2$1.invokeSuspend(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:38)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:9)
	at kotlinx.coroutines.DispatchedTask.run(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:114)
	at androidx.core.app.ActivityRecreator$1.run(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:11)
	at kotlinx.coroutines.scheduling.TaskImpl.run(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:3)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(r8-map-id-33936d9e6d681d0995265b121ccbb1590427a15578f9cf5b7e4025d4b078f3ca:88)

Syncing tasks without attendees work fine, and other DAVx5 syncs complete successfully.

Steps to reproduce

  1. Create a task on the JTX Board.
  2. Add an attendee to the task.
  3. Trigger a sync via DAVx⁵.
  4. The sync fails with a NullPointerException.

Envoriment

DAVx⁵: 4.5.9-ose

JTX Board: 2.15.00.ose

Android: 16 (Samsung SM-S908U)

Calendar server: Radicale

Originally posted by @SrS2225a in bitfireAT/davx5-ose#2049

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions