You need to sign in to do that
Don't have an account?
JSON exception in BulkConnection.getBatchResult
I'm working with the Bulk API, using the WSC to query records from Salesforce. When I submit the getBatchResult request to BulkConnection and pass in the optional ContentType.JSON parameter, i get an error that seems to indicate a JSON Parsing error. I know JSON support for this is new this release, perhaps a bug? If I set the job Content Type as JSON, I have to use it consistently.
Details: Query against the Contact Object, Job executes fine, but cannot get BatchResult with JSON. Here is the exception from the terminal:
Key line from log: Caused by: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class com.sforce.async.Result] from JSON String; no single-String constructor/factory method
Full Exception Message:
[AsyncApiException exceptionCode='ClientInputError'
exceptionMessage='Failed to get result '
]
at com.sforce.async.BulkConnection.getBatchResult(BulkConnection.java:600)
at SObjectSynch.bulkFetch(SObjectSynch.java:261)
at CacheSynch$4.onMessage(CacheSynch.java:175)
at org.cometd.common.AbstractClientSession$AbstractSessionChannel.notifyOnMessage(AbstractClientSession.java:394)
at org.cometd.common.AbstractClientSession$AbstractSessionChannel.notifyMessageListeners(AbstractClientSession.java:385)
at org.cometd.common.AbstractClientSession.receive(AbstractClientSession.java:225)
at org.cometd.client.BayeuxClient.processMessage(BayeuxClient.java:736)
at org.cometd.client.BayeuxClient$PublishTransportListener.processMessage(BayeuxClient.java:1111)
at org.cometd.client.BayeuxClient$ConnectTransportListener.processMessage(BayeuxClient.java:1166)
at org.cometd.client.BayeuxClient$PublishTransportListener.onMessages(BayeuxClient.java:1086)
at org.cometd.client.transport.LongPollingTransport$TransportExchange.onResponseComplete(LongPollingTransport.java:297)
at org.eclipse.jetty.client.HttpExchange$Listener.onResponseComplete(HttpExchange.java:968)
at org.eclipse.jetty.client.HttpExchange.setStatus(HttpExchange.java:279)
at org.eclipse.jetty.client.HttpConnection$Handler.messageComplete(HttpConnection.java:619)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:862)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:275)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class com.sforce.async.Result] from JSON String; no single-String constructor/factory method
at org.codehaus.jackson.map.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:379)
at org.codehaus.jackson.map.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:268)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:765)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:585)
at org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:104)
at org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:18)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1909)
at com.sforce.async.BulkConnection.deserializeJsonToObject(BulkConnection.java:806)
at com.sforce.async.BulkConnection.getBatchResult(BulkConnection.java:587)
... 20 more
Details: Query against the Contact Object, Job executes fine, but cannot get BatchResult with JSON. Here is the exception from the terminal:
Key line from log: Caused by: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class com.sforce.async.Result] from JSON String; no single-String constructor/factory method
Full Exception Message:
[AsyncApiException exceptionCode='ClientInputError'
exceptionMessage='Failed to get result '
]
at com.sforce.async.BulkConnection.getBatchResult(BulkConnection.java:600)
at SObjectSynch.bulkFetch(SObjectSynch.java:261)
at CacheSynch$4.onMessage(CacheSynch.java:175)
at org.cometd.common.AbstractClientSession$AbstractSessionChannel.notifyOnMessage(AbstractClientSession.java:394)
at org.cometd.common.AbstractClientSession$AbstractSessionChannel.notifyMessageListeners(AbstractClientSession.java:385)
at org.cometd.common.AbstractClientSession.receive(AbstractClientSession.java:225)
at org.cometd.client.BayeuxClient.processMessage(BayeuxClient.java:736)
at org.cometd.client.BayeuxClient$PublishTransportListener.processMessage(BayeuxClient.java:1111)
at org.cometd.client.BayeuxClient$ConnectTransportListener.processMessage(BayeuxClient.java:1166)
at org.cometd.client.BayeuxClient$PublishTransportListener.onMessages(BayeuxClient.java:1086)
at org.cometd.client.transport.LongPollingTransport$TransportExchange.onResponseComplete(LongPollingTransport.java:297)
at org.eclipse.jetty.client.HttpExchange$Listener.onResponseComplete(HttpExchange.java:968)
at org.eclipse.jetty.client.HttpExchange.setStatus(HttpExchange.java:279)
at org.eclipse.jetty.client.HttpConnection$Handler.messageComplete(HttpConnection.java:619)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:862)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
at org.eclipse.jetty.client.HttpConnection.handle(HttpConnection.java:275)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class com.sforce.async.Result] from JSON String; no single-String constructor/factory method
at org.codehaus.jackson.map.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:379)
at org.codehaus.jackson.map.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:268)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:765)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:585)
at org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:104)
at org.codehaus.jackson.map.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:18)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1909)
at com.sforce.async.BulkConnection.deserializeJsonToObject(BulkConnection.java:806)
at com.sforce.async.BulkConnection.getBatchResult(BulkConnection.java:587)
... 20 more