Skip to content

Strange behaviour of object used in an API call #111

@sterien7

Description

@sterien7

I have problems trying to do the following in my app in Kotlin
I have 2 objects, User and UserRelationship

import moe.banana.jsonapi2.JsonApi
import moe.banana.jsonapi2.Resource

JsonApi(type = "users")
class User : Resource() {

    @field:Json(name = "related-user-relationships")
    var relatedUserRelationships: HasMany<UserRelationship>? = null
    
    val relatedUserRelationshipsCollection: List<UserRelationship>?
        get() {
            return relatedUserRelationships?.get(this.document)
        }
}

@JsonApi(type = "user-relationships")
class UserRelationship() : Resource() {
    @field:Json(name = "is-favorite")
    var isFavorite: Boolean = false

    var user: HasOne<User>? = null
    @field:Json(name = "related-user")
    var relatedUser: HasOne<User>? = null
    
    val userObject: User?
        get() {
            return user?.get(this.document)
        }

    val relatedUserObject: User?
        get() {
            return relatedUser?.get(this.document)
        }
}

The task needed it to search if userA has a relationship with userB and then update it
so the code I execute is

var userRelationship = userA.relatedUserRelationshipsCollection?.firstOrNull { it.relatedUserObject?.id == userB.id } ?: UserRelationship()
userRelationship.user = HasOne(userA)
userRelationship.relatedUser = HasOne(userB)
userRelationship.isFavorite = !userRelationship.isFavorite

and after that I execute the http request

@POST("user-relationships")
 fun addUserRelationship(@Body userRelationship: UserRelationship): Observable<UserRelationship>

The request executes without a problem and returns the relationship object.
The problem is than now
userA.document = null
but userB.document is not null

any ideas

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions