package org.opennms.features.gwt.ksc.add.client; import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.http.client.Response; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; public class KscReportRestResponseMapper { public static List<KscReport> translate(final Response response) { final String jsonText = response.getText(); return translate(jsonText); } public static List<KscReport> translate(final String jsonText) { final List<KscReport> reports = new ArrayList<KscReport>(); final JSONObject jsonObject = JSONParser.parseStrict(jsonText).isObject(); if(jsonObject != null && jsonObject.containsKey("kscReport")) { if(jsonObject.get("kscReport").isArray() != null) { final JSONArray jArray = jsonObject.get("kscReport").isArray(); final JsArray<KscReport> jsReports = translateJsonReportList(jArray.getJavaScriptObject()); for(int i = 0; i < jsReports.length(); i++) { reports.add(jsReports.get(i)); } } else if (jsonObject.get("kscReport").isObject() != null) { final KscReport report = translateJsonReport(jsonObject.get("kscReport").isObject().getJavaScriptObject()); reports.add(report); } else { GWT.log("invalid object response: " + jsonObject); } } else { GWT.log("invalid object response: " + jsonObject); } return reports; } private static native KscReport translateJsonReport(final JavaScriptObject jso) /*-{ return jso; }-*/; private static native JsArray<KscReport> translateJsonReportList(final JavaScriptObject jso) /*-{ return jso; }-*/; }