Reputation: 6018
I have a simple spring mvc piece of code written as below,
@RequestMapping(value = "/swxapps", method = RequestMethod.POST)
public ModelAndView createSWXApps(
@RequestParam(value = "customerid", required = true) long customerId,
@RequestBody String requestBody,
HttpServletRequest request, HttpServletResponse response) throws Exception{
Map<String, Object> model = new HashMap<String, Object>();
model.put(modelAndViewData.getModelAttributeName(),
swxAppsService.createSWXApps(customerId, requestBody));
return new ModelAndView(modelAndViewData.getViewName(), model);
}
I fire a simple POST request to this method call and expect below json in return as below,
{results={"_id":16593,"Created At":"Wed Dec 19 19:16:32 IST 2018"}}
But I get below staacktrace in return in POSTMAN,
<html>
<head>
<title>Apache Tomcat/6.0.44 - Error report</title>
<style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->
</style>
</head>
<body>
<h1>HTTP Status 500 - (was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap["results"]->com.google.gson.JsonObject["asLong"])</h1>
<HR size="1" noshade="noshade">
<p>
<b>type</b> Exception report
</p>
<p>
<b>message</b>
<u>(was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap["results"]->com.google.gson.JsonObject["asLong"])</u>
</p>
<p>
<b>description</b>
<u>The server encountered an internal error that prevented it from fulfilling this request.</u>
</p>
<p>
<b>exception</b>
<pre>org.codehaus.jackson.map.JsonMappingException: (was java.lang.UnsupportedOperationException) (through reference chain: java.util.HashMap["results"]->com.google.gson.JsonObject["asLong"])
org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218)
org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183)
org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140)
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158)
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:262)
org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:186)
org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:23)
org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613)
org.springframework.web.servlet.view.json.MappingJacksonJsonView.renderMergedOutputModel(MappingJacksonJsonView.java:151)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
</pre>
</p>
<p>
<b>root cause</b>
<pre>java.lang.UnsupportedOperationException
com.google.gson.JsonElement.getAsLong(JsonElement.java:223)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:622)
org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483)
org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418)
org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:262)
org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:186)
org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:23)
org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613)
org.springframework.web.servlet.view.json.MappingJacksonJsonView.renderMergedOutputModel(MappingJacksonJsonView.java:151)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
</pre>
</p>
<p>
<b>note</b>
<u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.44 logs.</u>
</p>
<HR size="1" noshade="noshade">
<h3>Apache Tomcat/6.0.44</h3>
</body>
</html>
Upvotes: 0
Views: 3309
Reputation: 66
In the stacktrace, it is giving Json mapping Exception. It happens when Model and View mapping doesn't match. Here view return to controller is gson View and model is of Jackson View.
Upvotes: 2