jenkinsci / jenkinsci/java-client-api

build.details() throws MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of VALUE_STRING token

Open
#410 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
913
Forks
466
PR merge metrics
No merged PRs in 30d

Description

Java-client-api version : 0.4.0-SNAPSHOT
Jenkins Server Version : 2.164.2

BuildWithDetails build = trigger.triggerJobAndWaitUntilFinished(strJobName);

throws following Exception

`Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of VALUE_STRING token
at [Source: (byte[])"{"_class":"org.jenkinsci.plugins.workflow.job.WorkflowRun","actions":[{"_class":"hudson.model.CauseAction","causes":[{"_class":"hudson.model.Cause$UserIdCause","shortDescription":"Started by user demouser","userId":"demouser","userName":"demouser"}]},{},{},{},{},{"_class":"org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"},{},{"_class":"org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"},{},{},{}],"artifacts":[],"building":true,"description""[truncated 616 bytes]; line: 1, column: 81] (through reference chain: com.offbytwo.jenkins.model.BuildWithDetails["actions"]->java.util.ArrayList[0]->java.util.LinkedHashMap["_class"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1343)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1139)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1093)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:332)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:265)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3091)
at com.offbytwo.jenkins.client.JenkinsHttpClient.objectFromResponse(JenkinsHttpClient.java:501)
at com.offbytwo.jenkins.client.JenkinsHttpClient.get(JenkinsHttpClient.java:152)
at com.offbytwo.jenkins.model.Build.details(Build.java:109)
at com.offbytwo.jenkins.JenkinsTriggerHelper.triggerJobAndWaitUntilFinished(JenkinsTriggerHelper.java:188)
at com.offbytwo.jenkins.JenkinsTriggerHelper.triggerJobAndWaitUntilFinished(JenkinsTriggerHelper.java:154)
at com.offbytwo.jenkins.JenkinsTriggerHelper.triggerJobAndWaitUntilFinished(JenkinsTriggerHelper.java:50)
at scb.desktop.StandardUtils.DeployUtil.doTriggerJenkinsBuildAPI(DeployUtil.java:182)
at scb.desktop.StandardUtils.DeployUtil.main(DeployUtil.java:66)`

-------------------------------------------------------------
the api/json of build URL returns following JSON

`{"_class":"org.jenkinsci.plugins.workflow.job.WorkflowRun","actions":[{"_class":"hudson.model.CauseAction","causes":[{"_class":"hudson.model.Cause$UserIdCause","shortDescription":"Started by user Pola,Santhosh","userId":"1424295","userName":"Pola,Santhosh"}]},{},{},{},{},{"_class":"org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction"},{},{"_class":"org.jenkinsci.plugins.workflow.job.views.FlowGraphAction"},{},{},{}],"artifacts":[],"building":true,"description":null,"displayName":"#2990","duration":0,"estimatedDuration":81619,"executor":{"_class":"hudson.model.OneOffExecutor"},"fullDisplayName":"demoproj » demoproj-cd » master » sit-pipeline-exceptional #2990","id":"2990","keepLog":false,"number":2990,"queueId":73469,"result":null,"timestamp":1558587765857,"url":"https://jenkinsdemohost/job/demoproj/job/demoproj-cd/job/master/job/sit-pipeline-exceptional/2990/","changeSets":[],"culprits":[],"nextBuild":null,"previousBuild":{"number":2989,"url":"https://jenkinsdemohost/job/demoproj/job/demoproj-cd/job/master/job/sit-pipeline-exceptional/2989/"}}`

-------------------------------------------

When I remove "_class" json entries manually (in "actions" json entry) and test standalone parsing, JSON is successfully parsed. Not sure on the appropriate target JSON structure for com.offbytwo.jenkins.model.BuildWithDetails (for actions attrubute).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.