cdancy / bitbucket-rest

Java client, built on top of jclouds, for working with Bitbucket's REST API
Apache License 2.0
76 stars 57 forks source link

NPE on PUT using file api #278

Open MarkRx opened 3 years ago

MarkRx commented 3 years ago

The jclouds library throws an NPE when logging doing a PUT request of a file. Looks like this might be fixed by updating it to 2.3.0.

Stack trace:

May 07, 2021 10:29:11 AM org.jclouds.logging.jdk.JDKLogger logError
SEVERE: Error parsing input: null
java.lang.NullPointerException
    at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:319)
    at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:287)
    at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:96)
    at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:84)
    at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:63)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:275)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:187)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:275)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:187)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:275)
    at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:187)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:892)
    at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:55)
    at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:82)
    at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:76)
    at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:61)
    at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:41)
    at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91)
    at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
    at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
    at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
    at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:86)
    at com.sun.proxy.$Proxy65.updateContent(Unknown Source)
    at com.paychex.eba.jenkins.scripts.dvs2731.MassUpdateBitBucketRepositories$3.accept(MassUpdateBitBucketRepositories.xtend:73)
    at com.paychex.eba.jenkins.scripts.dvs2731.MassUpdateBitBucketRepositories$3.accept(MassUpdateBitBucketRepositories.xtend)
    at java.util.LinkedHashMap$LinkedValues.forEach(LinkedHashMap.java:608)
    at com.paychex.eba.jenkins.scripts.dvs2731.MassUpdateBitBucketRepositories.main(MassUpdateBitBucketRepositories.xtend:30)

The response object is:

Commit{errors=[Error{context=Error parsing input: null
{statusCode=200, headers={Keep-Alive=[timeout=20], Transfer-Encoding=[chunked], X-AREQUESTID=[*15PXC7Fx621x19886146x1], X-Content-Type-Options=[nosniff], Connection=[keep-alive], Date=[Fri, 07 May 2021 14:21:35 GMT], X-ASEN=[SEN-5036746], X-AUSERNAME=[mrichar2], Vary=[accept-encoding,x-auserid,cookie,x-ausername,accept-encoding], X-AUSERID=[3475]}, payload=[content=true, contentMetadata=[cacheControl=no-cache, no-transform, contentDisposition=null, contentEncoding=null, contentLanguage=null, contentLength=null, contentMD5=null, contentType=application/json;charset=UTF-8, expires=null], written=false, isSensitive=false]}, message=Failed to parse output: message=com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 8 path $, exceptionName=com.google.gson.JsonSyntaxException, conflicted=false, vetoes=[]}], id=-1, displayId=-1, author=null, authorTimestamp=0, committer=null, committerTimestamp=0, message=null, parents=[]}

Expected Behavior

It works :)

Current Behavior

NPE

Context

Running basic script

Steps to Reproduce (for bugs)

I'm calling client.getApi().getFileApi().updateContent("~mrichar2", "mtest", "test3.txt", "test-replace4", "marktestguildaaa-ddd", null, "9550b92f85df28609d22c66ddf43df2aab6a434c", null)

Your Environment

BB Server 7.3.1 Java 8

MarkRx commented 3 years ago

Looks like the dependency has been updated to 2.3.0 on master: build.gradle

https://github.com/cdancy/bitbucket-rest/commit/adbabe4c066bd1c10722ea3ee6df6d4ac4ab2b3d

I guess I need to wait for a new build. In the mean time I can manually bump up the dependency.

cdancy commented 3 years ago

@MarkRx yes! However ... I have failed to migrate this project over to maven since bintray closed down. I really need to get on that...