Object toJson()

in modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/externalize/RelJson.java [260:314]


    Object toJson(Object value) {
        if (value == null
                || value instanceof Number
                || value instanceof String
                || value instanceof Boolean) {
            return value;
        } else if (value instanceof Enum) {
            return toJson((Enum) value);
        } else if (value instanceof RexNode) {
            return toJson((RexNode) value);
        } else if (value instanceof RexWindow) {
            return toJson((RexWindow) value);
        } else if (value instanceof RexFieldCollation) {
            return toJson((RexFieldCollation) value);
        } else if (value instanceof RexWindowBound) {
            return toJson((RexWindowBound) value);
        } else if (value instanceof CorrelationId) {
            return toJson((CorrelationId) value);
        } else if (value instanceof List) {
            List<Object> list = list();
            for (Object o : (Iterable) value) {
                list.add(toJson(o));
            }
            return list;
        } else if (value instanceof ImmutableBitSet) {
            List<Object> list = list();
            for (Integer integer : (Iterable<Integer>) value) {
                list.add(toJson(integer));
            }
            return list;
        } else if (value instanceof Set) {
            Set<Object> set = set();
            for (Object o : (Iterable) value) {
                set.add(toJson(o));
            }
            return set;
        } else if (value instanceof DistributionTrait) {
            return toJson((DistributionTrait) value);
        } else if (value instanceof AggregateCall) {
            return toJson((AggregateCall) value);
        } else if (value instanceof RelCollationImpl) {
            return toJson((RelCollationImpl) value);
        } else if (value instanceof RelDataType) {
            return toJson((RelDataType) value);
        } else if (value instanceof RelDataTypeField) {
            return toJson((RelDataTypeField) value);
        } else if (value instanceof ByteString) {
            return toJson((ByteString) value);
        } else if (value instanceof SearchBounds) {
            return toJson((SearchBounds) value);
        } else {
            throw new UnsupportedOperationException("type not serializable: "
                    + value + " (type " + value.getClass().getCanonicalName() + ")");
        }
    }