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

com.xlrit.gears.runner.scenario.ObjectToJsonVisitor Maven / Gradle / Ivy

There is a newer version: 1.17.1
Show newest version
package com.xlrit.gears.runner.scenario;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.*;

public class ObjectToJsonVisitor extends ScenarioBaseVisitor {
	private final ObjectMapper objectMapper = new ObjectMapper();

	@Override
	public JsonNode visitObjectExpression(ScenarioParser.ObjectExpressionContext ctx) {
		return ctx.objectExpr().accept(this);
	}

	@Override
	public JsonNode visitListExpression(ScenarioParser.ListExpressionContext ctx) {
		ArrayNode arrayNode = objectMapper.createArrayNode();
		for (ScenarioParser.ExprContext expr : ctx.listExpr().expr()) {
			arrayNode.add(expr.accept(this));
		}
		return arrayNode;
	}

	@Override
	public JsonNode visitLiteralExpression(ScenarioParser.LiteralExpressionContext ctx) {
		ScenarioParser.LiteralExprContext literal = ctx.literalExpr();
		if (literal.Integer() != null) {
			return new LongNode(Long.parseLong(literal.Integer().getSymbol().getText()));
		} else if (literal.Decimal() != null) {
			return new DoubleNode(Double.parseDouble(literal.Decimal().getSymbol().getText()));
		} else if (literal.Text() != null) {
			String text = literal.Text().getSymbol().getText();
			//                 v remove leading and trailing quotes v
			return new TextNode(text.substring(1, text.length() - 1));
		} else if (literal.Boolean() != null) {
			String value = literal.Boolean().getSymbol().getText();
			return BooleanNode.valueOf(Boolean.parseBoolean(value));
		} else {
			throw new IllegalArgumentException(
					String.format("Unknown literal value: %s", ctx.literalExpr().getText())
			);
		}
	}

	@Override
	public JsonNode visitObjectExpr(ScenarioParser.ObjectExprContext ctx) {
		ObjectNode objectNode = objectMapper.createObjectNode();
		for (ScenarioParser.AttributeExprContext attr : ctx.attributeExpr()) {
			objectNode.set(attr.Identifier().getSymbol().getText(), attr.expr().accept(this));
		}
		return objectNode;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy