/******************************************************************************* * Copyright (c) 2017 Red Hat. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat - Initial Contribution *******************************************************************************/ package org.eclipse.che.api.languageserver.generator; import java.io.PrintWriter; public class ServerJsonImpl implements JsonImpl { @Override public String element() { return "JsonElement"; } @Override public String object() { return "JsonObject"; } @Override public String array() { return "JsonArray"; } @Override public String nullValue() { return "JsonNull.INSTANCE"; } @Override public Object string() { return "JsonPrimitive"; } @Override public Object number() { return "JsonPrimitive"; } @Override public String boolValue(String value) { return String.format("new JsonPrimitive(%1$s)", value); } @Override public Object objectValue(String value) { return String.format("%1$s.getAsJsonObject()", value); } @Override public String arrayValue(String valueName) { return String.format("%1$s.getAsJsonArray()", valueName); } @Override public String asBoolean(String valueName) { return String.format("%1$s.getAsBoolean()", valueName); } @Override public String asDouble(String valueName) { return String.format("%1$s.getAsDouble()", valueName); } @Override public String asString(String valueName) { return String.format("%1$s.getAsString()", valueName); } @Override public String parse(String valueName) { return String.format("new JsonParser().parse(%1$s)", valueName); } @Override public String put() { return "add"; } public String add(String arrayName, String valueName) { return String.format("%1$s.add(%2$s);", arrayName, valueName); } @Override public void iterateObject(String indent, PrintWriter out, String objectName, PropertyHandler handler) { String entryName = objectName + "e"; out.println(indent + String.format("for(Entry<String, JsonElement> %1$s : %2$s.entrySet()) {", entryName, objectName)); handler.handle(String.format("%1$s.getKey()", entryName), String.format("%1$s.getValue()", entryName)); out.println(indent + "}"); } @Override public String isNull(String jsonValName) { return jsonValName + ".isJsonNull()"; } @Override public void writeImports(PrintWriter out) { out.println("import com.google.gson.JsonParser;"); out.println("import com.google.gson.JsonObject;"); out.println("import com.google.gson.JsonArray;"); out.println("import com.google.gson.JsonPrimitive;"); out.println("import com.google.gson.JsonElement;"); out.println("import com.google.gson.JsonNull;"); } }