With the disappearance for the username field from the Bitbucket UI, Linky fails to parse responses

Issue #73 resolved
Erik van Zijst created an issue
value failed for JSON property username due to missing (therefore NULL) value for creator parameter username which is a non-nullable type

username used to be a non-null element in API responses, but it has been removed as part of GDPR.

2019-05-15 15:48:17,153 [67434163]   INFO -            BitbucketReferences - FROM: https://api-staging.bb-inf.net/2.0/repositories/bitbucket/bitbucket/commit/9bda9245554e97b341b2ba04d411b88d7080d726/pullrequests?fields=page%2Cpagelen%2Csize%2Cprevious%2Cnext%2Cvalues.author.links.avatar.href%2Cvalues.author.display_name%2Cvalues.author.username%2Cvalues.links.html.href%2Cvalues.id%2Cvalues.title%2Cvalues.state%2Cvalues.description%2Cvalues.created_on%2Cvalues.updated_on%2Cvalues.destination.branch.name%2Cvalues.destination.commit.hash%2Cvalues.destination.repository.name%2Cvalues.destination.repository.full_name%2Cvalues.source.branch.name%2Cvalues.source.commit.hash%2Cvalues.source.repository.name%2Cvalues.source.repository.full_name%2Cvalues.reviewers.username%2Cvalues.reviewers.display_name%2Cvalues.reviewers.links.avatar.href 
2019-05-15 15:48:17,505 [67434515]  ERROR -            BitbucketReferences - Failed to fetch related Pull Requests for BitbucketCloudRepository{bitbucket/bitbucket} 
com.atlassian.bitbucket.cloud.rest.MalformedResponse: Malformed response for 'commit pull requests' API endpoint
    at com.atlassian.bitbucket.cloud.rest.common.ErrorsKt.mapErrors(errors.kt:45)
    at com.atlassian.bitbucket.cloud.rest.common.ErrorsKt$mapErrors$1.invokeSuspend(errors.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(PipelineContext.kt:211)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(PipelineContext.kt:63)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(PipelineContext.kt:114)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:45)
    at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:315)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:729)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:678)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:373)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: io.ktor.client.call.ReceivePipelineException: Fail to run receive pipeline: com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class com.atlassian.bitbucket.cloud.rest.user.UserBean] value failed for JSON property username due to missing (therefore NULL) value for creator parameter username which is a non-nullable type
 at [Source: (String)"{"values": [{"description": "Added commits list to the initial page hydration.", "links": {"html": {"href": "https://staging.bb-inf.net/bitbucket/bitbucket/pull-requests/14436"}}, "title": "BBCDEV-7693: Hydration of commits list for Pull Requests", "reviewers": [{"display_name": "Peter Williams", "links": {"avatar": {"href": "https://avatar-cdn.atlassian.com/initials/PW?ordinal=6"}}}, {"display_name": "Sean Farley", "links": {"avatar": {"href": "https://avatar-cdn.stg.internal.atlassian.com/6553"[truncated 18618 chars]; line: 1, column: 386] (through reference chain: com.atlassian.bitbucket.cloud.rest.pagination.PagedBean["values"]->java.util.ArrayList[0]->com.atlassian.bitbucket.cloud.rest.pullrequest.PullRequestBean["reviewers"]->java.util.ArrayList[0]->com.atlassian.bitbucket.cloud.rest.user.UserBean["username"])
    at io.ktor.client.call.HttpClientCall.receive(HttpClientCall.kt:61)
    at io.ktor.client.call.HttpClientCall$receive$1.invokeSuspend(HttpClientCall.kt)
    ... 26 more
Caused by: com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class com.atlassian.bitbucket.cloud.rest.user.UserBean] value failed for JSON property username due to missing (therefore NULL) value for creator parameter username which is a non-nullable type
 at [Source: (String)"{"values": [{"description": "Added commits list to the initial page hydration.", "links": {"html": {"href": "https://staging.bb-inf.net/bitbucket/bitbucket/pull-requests/14436"}}, "title": "BBCDEV-7693: Hydration of commits list for Pull Requests", "reviewers": [{"display_name": "Peter Williams", "links": {"avatar": {"href": "https://avatar-cdn.atlassian.com/initials/PW?ordinal=6"}}}, {"display_name": "Sean Farley", "links": {"avatar": {"href": "https://avatar-cdn.stg.internal.atlassian.com/6553"[truncated 18618 chars]; line: 1, column: 386] (through reference chain: com.atlassian.bitbucket.cloud.rest.pagination.PagedBean["values"]->java.util.ArrayList[0]->com.atlassian.bitbucket.cloud.rest.pullrequest.PullRequestBean["reviewers"]->java.util.ArrayList[0]->com.atlassian.bitbucket.cloud.rest.user.UserBean["username"])
    at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:53)
    at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:189)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:487)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1265)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:325)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:285)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:519)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:527)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:416)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1265)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:325)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:285)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:519)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:527)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:416)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1265)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:325)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3030)
    at io.ktor.client.features.json.JacksonSerializer.read(JacksonSerializer.kt:16)
    at io.ktor.client.features.json.JacksonSerializer$read$1.invokeSuspend(JacksonSerializer.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:32)
    ... 21 more
2019-05-15 15:48:17,507 [67434517]  ERROR -            BitbucketReferences - PyCharm 2019.1.2  Build #PY-191.7141.48 
2019-05-15 15:48:17,507 [67434517]  ERROR -            BitbucketReferences - JDK: 11.0.2; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o 
2019-05-15 15:48:17,507 [67434517]  ERROR -            BitbucketReferences - OS: Mac OS X 
2019-05-15 15:48:17,512 [67434522]  ERROR -            BitbucketReferences - Plugin to blame: Bitbucket Linky version: 7.0 

Comments (2)

  1. Daniil Penkin staff

    Thanks for the heads up!

    Fixed in versions 6.5 (for IDEs based on platform 2016.1 – 2018.2.8) and 7.1 (for 2018.3+).

  2. Log in to comment