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

com.owlike.genson.ext.jsr353.GensonJsonBuilderFactory Maven / Gradle / Ivy

package com.owlike.genson.ext.jsr353;

import javax.json.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;

public class GensonJsonBuilderFactory implements JsonBuilderFactory {

  @Override
  public JsonObjectBuilder createObjectBuilder() {
    return new JsonObjectBuilder() {
      private final Map values = new LinkedHashMap();

      @Override
      public JsonObjectBuilder add(String name, JsonValue value) {
        if (value == null) addNull(name);
        else values.put(name, value);

        return this;
      }

      @Override
      public JsonObjectBuilder add(String name, String value) {
        if (value == null) return addNull(name);
        else return add(name, new GensonJsonString(value));
      }

      @Override
      public JsonObjectBuilder add(String name, BigInteger value) {
        if (value == null) return addNull(name);
        else return add(name, new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonObjectBuilder add(String name, BigDecimal value) {
        if (value == null) return addNull(name);
        else return add(name, new GensonJsonNumber.DoubleJsonNumber(value));
      }

      @Override
      public JsonObjectBuilder add(String name, int value) {
        return add(name, new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonObjectBuilder add(String name, long value) {
        return add(name, new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonObjectBuilder add(String name, double value) {
        return add(name, new GensonJsonNumber.DoubleJsonNumber(value));
      }

      @Override
      public JsonObjectBuilder add(String name, boolean value) {
        return add(name, value ? JsonValue.TRUE : JsonValue.FALSE);
      }

      @Override
      public JsonObjectBuilder addNull(String name) {
        return add(name, JsonValue.NULL);
      }

      @Override
      public JsonObjectBuilder add(String name, JsonObjectBuilder builder) {
        if (builder == null) return addNull(name);
        else return add(name, builder.build());
      }

      @Override
      public JsonObjectBuilder add(String name, JsonArrayBuilder builder) {
        if (builder == null) return addNull(name);
        else return add(name, builder.build());
      }

      @Override
      public JsonObject build() {
        return new GensonJsonObject(Collections.unmodifiableMap(values));
      }
    };
  }

  @Override
  public JsonArrayBuilder createArrayBuilder() {
    return new JsonArrayBuilder() {
      private final List values = new ArrayList();

      @Override
      public JsonArrayBuilder add(JsonValue value) {
        if (value == null) addNull();
        else values.add(value);

        return this;
      }

      @Override
      public JsonArrayBuilder add(String value) {
        if (value == null) return addNull();
        else return add(new GensonJsonString(value));
      }

      @Override
      public JsonArrayBuilder add(BigDecimal value) {
        if (value == null) return addNull();
        else return add(new GensonJsonNumber.DoubleJsonNumber(value));
      }

      @Override
      public JsonArrayBuilder add(BigInteger value) {
        if (value == null) return addNull();
        else return add(new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonArrayBuilder add(int value) {
        return add(new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonArrayBuilder add(long value) {
        return add(new GensonJsonNumber.IntJsonNumber(value));
      }

      @Override
      public JsonArrayBuilder add(double value) {
        return add(new GensonJsonNumber.DoubleJsonNumber(value));
      }

      @Override
      public JsonArrayBuilder add(boolean value) {
        return add(value ? JsonValue.TRUE : JsonValue.FALSE);
      }

      @Override
      public JsonArrayBuilder addNull() {
        return add(JsonValue.NULL);
      }

      @Override
      public JsonArrayBuilder add(JsonObjectBuilder builder) {
        if (builder == null) return addNull();
        else return add(builder.build());
      }

      @Override
      public JsonArrayBuilder add(JsonArrayBuilder builder) {
        if (builder == null) return addNull();
        else return add(builder.build());
      }

      @Override
      public JsonArray build() {
        return new GensonJsonArray(Collections.unmodifiableList(values));
      }
    };
  }

  @Override
  public Map getConfigInUse() {
    return Collections.emptyMap();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy