/**
* This class is used while creating ModelAndView object in controllers. To crate a view for JSON Data type.
* If you want to send any data in JSON format to client, create a object of this class and pass to ModelAndView constructor while making ModelAndView Object.
*/
package com.intel.mountwilson.util;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.View;
public class JSONView implements View {
private boolean isKeyRequired;
public JSONView() {
this(true);
}
//Pass false if you dont want the keys to be part of json
public JSONView(boolean isKeyRequired) {
this.isKeyRequired = isKeyRequired;
}
//Method to set Content type for response to JSON Type.
@Override
public String getContentType() {
return "application/json";
}
@SuppressWarnings("rawtypes")
@Override
public void render(Map jsonDetailsMap, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType(getContentType());
if(isKeyRequired){
response.getWriter().write(new Gson().toJson(jsonDetailsMap));
}else{
if(jsonDetailsMap.size() == 1){
Iterator iterator = jsonDetailsMap.values().iterator();
if (iterator.hasNext()) {
response.getWriter().write(new Gson().toJson(iterator.next()));
}
}else{
response.getWriter().write(new Gson().toJson(jsonDetailsMap.values()));
}
}
}
}