package org.wikipedia.page; import android.support.annotation.NonNull; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.wikipedia.dataclient.WikiSite; import static org.wikipedia.util.JsonUtil.jsonArrayToStringArray; import static org.wikipedia.util.UriUtil.decodeURL; public final class PageInfoUnmarshaller { @NonNull public static PageInfo unmarshal(@NonNull PageTitle title, @NonNull WikiSite wiki, @NonNull JSONObject jsonObj) { DisambigResult[] disambiguations; String[] issues; try { disambiguations = parseDisambigJson(wiki, jsonObj.getJSONArray("disambiguations")); issues = jsonArrayToStringArray(jsonObj.getJSONArray("issues")); } catch (JSONException e) { throw new RuntimeException(e); } return new PageInfo(title, disambiguations, issues); } private static DisambigResult[] parseDisambigJson(WikiSite wiki, JSONArray array) throws JSONException { if (array == null) { return null; } DisambigResult[] stringArray = new DisambigResult[array.length()]; for (int i = 0; i < array.length(); i++) { stringArray[i] = new DisambigResult(wiki.titleForInternalLink(decodeURL(array.getString(i)))); } return stringArray; } private PageInfoUnmarshaller() { } }