All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.vertx.codetrans.JsonObjectModel Maven / Gradle / Ivy

package io.vertx.codetrans;

import io.vertx.codegen.TypeInfo;

import java.util.List;

/**
 * @author Julien Viet
 */
public class JsonObjectModel extends ExpressionModel {

  final ExpressionModel expression;

  public JsonObjectModel(ExpressionModel expression) {
    this.expression = expression;
  }

  @Override
  public ExpressionModel onMethodInvocation(String methodName, List parameterTypes, List argumentModels, List argumenTypes) {
    switch (methodName) {
      case "put":
        return ExpressionModel.render(writer -> {
          writer.getLang().renderJsonObjectAssign(expression, argumentModels.get(0), argumentModels.get(1), writer);
        });
      case "encodePrettily": {
        return ExpressionModel.render(writer -> {
          writer.getLang().renderJsonObjectToString(expression, writer);
        });
      }
      case "getString":
      case "getJsonObject":
      case "getInteger":
      case "getLong":
      case "getFloat":
      case "getDouble":
      case "getBoolean":
      case "getJsonArray":
      case "getValue":
        if (argumentModels.size() == 1) {
          return ExpressionModel.render( writer -> {
            writer.getLang().renderJsonObjectMemberSelect(expression, argumentModels.get(0), writer);
          });
        } else {
          throw unsupported("Invalid arguments " + argumentModels);
        }
      default:
        throw unsupported("Method " + methodName);
    }
  }
  @Override
  public void render(CodeWriter writer) {
    expression.render(writer);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy