Search in sources :

Example 11 with HazelcastJsonValue

use of com.hazelcast.core.HazelcastJsonValue in project hazelcast by hazelcast.

the class HazelcastJsonUpsertTargetTest method test_set.

@Test
public void test_set() {
    UpsertTarget target = new HazelcastJsonUpsertTarget();
    UpsertInjector nullInjector = target.createInjector("null", QueryDataType.OBJECT);
    UpsertInjector objectInjector = target.createInjector("object", QueryDataType.OBJECT);
    UpsertInjector stringInjector = target.createInjector("string", QueryDataType.VARCHAR);
    UpsertInjector booleanInjector = target.createInjector("boolean", QueryDataType.BOOLEAN);
    UpsertInjector byteInjector = target.createInjector("byte", QueryDataType.TINYINT);
    UpsertInjector shortInjector = target.createInjector("short", QueryDataType.SMALLINT);
    UpsertInjector intInjector = target.createInjector("int", QueryDataType.INT);
    UpsertInjector longInjector = target.createInjector("long", QueryDataType.BIGINT);
    UpsertInjector floatInjector = target.createInjector("float", QueryDataType.REAL);
    UpsertInjector doubleInjector = target.createInjector("double", QueryDataType.DOUBLE);
    UpsertInjector decimalInjector = target.createInjector("decimal", QueryDataType.DECIMAL);
    UpsertInjector timeInjector = target.createInjector("time", QueryDataType.TIME);
    UpsertInjector dateInjector = target.createInjector("date", QueryDataType.DATE);
    UpsertInjector timestampInjector = target.createInjector("timestamp", QueryDataType.TIMESTAMP);
    UpsertInjector timestampTzInjector = target.createInjector("timestampTz", QueryDataType.TIMESTAMP_WITH_TZ_OFFSET_DATE_TIME);
    target.init();
    nullInjector.set(null);
    objectInjector.set(new JsonObject());
    stringInjector.set("string");
    booleanInjector.set(true);
    byteInjector.set((byte) 127);
    shortInjector.set((short) 32767);
    intInjector.set(2147483647);
    longInjector.set(9223372036854775807L);
    floatInjector.set(1234567890.1F);
    doubleInjector.set(123451234567890.1D);
    decimalInjector.set(new BigDecimal("9223372036854775.123"));
    timeInjector.set(LocalTime.of(12, 23, 34));
    dateInjector.set(LocalDate.of(2020, 9, 9));
    timestampInjector.set(LocalDateTime.of(2020, 9, 9, 12, 23, 34, 100_000_000));
    timestampTzInjector.set(OffsetDateTime.of(2020, 9, 9, 12, 23, 34, 200_000_000, UTC));
    Object hazelcastJson = target.conclude();
    assertThat(hazelcastJson).isEqualTo(new HazelcastJsonValue("{" + "\"null\":null" + ",\"object\":{}" + ",\"string\":\"string\"" + ",\"boolean\":true" + ",\"byte\":127" + ",\"short\":32767" + ",\"int\":2147483647" + ",\"long\":9223372036854775807" + ",\"float\":1.23456794E9" + ",\"double\":1.234512345678901E14" + ",\"decimal\":\"9223372036854775.123\"" + ",\"time\":\"12:23:34\"" + ",\"date\":\"2020-09-09\"" + ",\"timestamp\":\"2020-09-09T12:23:34.100\"" + ",\"timestampTz\":\"2020-09-09T12:23:34.200Z\"" + "}"));
}
Also used : HazelcastJsonValue(com.hazelcast.core.HazelcastJsonValue) JsonObject(com.hazelcast.internal.json.JsonObject) JsonObject(com.hazelcast.internal.json.JsonObject) BigDecimal(java.math.BigDecimal) Test(org.junit.Test)

Example 12 with HazelcastJsonValue

use of com.hazelcast.core.HazelcastJsonValue in project hazelcast by hazelcast.

the class HazelcastJsonUpsertTargetTest method when_typeIsObject_then_allValuesAreAllowed.

@Test
@Parameters(method = "values")
public void when_typeIsObject_then_allValuesAreAllowed(Object value, String expected) {
    UpsertTarget target = new HazelcastJsonUpsertTarget();
    UpsertInjector injector = target.createInjector("object", QueryDataType.OBJECT);
    target.init();
    injector.set(value);
    Object hazelcastJson = target.conclude();
    assertThat(hazelcastJson).isEqualTo(new HazelcastJsonValue("{\"object\":" + expected + "}"));
}
Also used : HazelcastJsonValue(com.hazelcast.core.HazelcastJsonValue) JsonObject(com.hazelcast.internal.json.JsonObject) Parameters(junitparams.Parameters) Test(org.junit.Test)

Example 13 with HazelcastJsonValue

use of com.hazelcast.core.HazelcastJsonValue in project hazelcast by hazelcast.

the class SqlPageCodec method encode.

@SuppressWarnings({ "unchecked", "checkstyle:CyclomaticComplexity", "checkstyle:MethodLength" })
public static void encode(ClientMessage clientMessage, SqlPage sqlPage) {
    clientMessage.add(BEGIN_FRAME.copy());
    // Write the "last" flag.
    byte[] content = new byte[] { (byte) (sqlPage.isLast() ? 1 : 0) };
    clientMessage.add(new ClientMessage.Frame(content));
    // Write column types.
    List<SqlColumnType> columnTypes = sqlPage.getColumnTypes();
    List<Integer> columnTypeIds = new ArrayList<>(columnTypes.size());
    for (SqlColumnType columnType : columnTypes) {
        columnTypeIds.add(columnType.getId());
    }
    ListIntegerCodec.encode(clientMessage, columnTypeIds);
    // Write columns.
    for (int i = 0; i < sqlPage.getColumnCount(); i++) {
        SqlColumnType columnType = columnTypes.get(i);
        Iterable<?> column = sqlPage.getColumnValuesForServer(i);
        switch(columnType) {
            case VARCHAR:
                ListMultiFrameCodec.encodeContainsNullable(clientMessage, (Iterable<String>) column, StringCodec::encode);
                break;
            case BOOLEAN:
                ListCNBooleanCodec.encode(clientMessage, (Iterable<Boolean>) column);
                break;
            case TINYINT:
                ListCNByteCodec.encode(clientMessage, (Iterable<Byte>) column);
                break;
            case SMALLINT:
                ListCNShortCodec.encode(clientMessage, (Iterable<Short>) column);
                break;
            case INTEGER:
                ListCNIntegerCodec.encode(clientMessage, (Iterable<Integer>) column);
                break;
            case BIGINT:
                ListCNLongCodec.encode(clientMessage, (Iterable<Long>) column);
                break;
            case REAL:
                ListCNFloatCodec.encode(clientMessage, (Iterable<Float>) column);
                break;
            case DOUBLE:
                ListCNDoubleCodec.encode(clientMessage, (Iterable<Double>) column);
                break;
            case DATE:
                ListCNLocalDateCodec.encode(clientMessage, (Iterable<LocalDate>) column);
                break;
            case TIME:
                ListCNLocalTimeCodec.encode(clientMessage, (Iterable<LocalTime>) column);
                break;
            case TIMESTAMP:
                ListCNLocalDateTimeCodec.encode(clientMessage, (Iterable<LocalDateTime>) column);
                break;
            case TIMESTAMP_WITH_TIME_ZONE:
                ListCNOffsetDateTimeCodec.encode(clientMessage, (Iterable<OffsetDateTime>) column);
                break;
            case DECIMAL:
                ListMultiFrameCodec.encode(clientMessage, (Iterable<BigDecimal>) column, BigDecimalCodec::encodeNullable);
                break;
            case NULL:
                int size = 0;
                for (Object ignore : column) {
                    size++;
                }
                byte[] sizeBuffer = new byte[FixedSizeTypesCodec.INT_SIZE_IN_BYTES];
                FixedSizeTypesCodec.encodeInt(sizeBuffer, 0, size);
                clientMessage.add(new ClientMessage.Frame(sizeBuffer));
                break;
            case OBJECT:
                assert SqlPage.convertToData(columnType);
                ListMultiFrameCodec.encode(clientMessage, (Iterable<Data>) column, DataCodec::encodeNullable);
                break;
            case JSON:
                ListMultiFrameCodec.encodeContainsNullable(clientMessage, (Iterable<HazelcastJsonValue>) column, HazelcastJsonValueCodec::encode);
                break;
            default:
                throw new IllegalStateException("Unknown type " + columnType);
        }
    }
    clientMessage.add(END_FRAME.copy());
}
Also used : LocalDateTime(java.time.LocalDateTime) ArrayList(java.util.ArrayList) ClientMessage(com.hazelcast.client.impl.protocol.ClientMessage) SqlColumnType(com.hazelcast.sql.SqlColumnType) LocalDate(java.time.LocalDate) LocalTime(java.time.LocalTime) HazelcastJsonValue(com.hazelcast.core.HazelcastJsonValue) Data(com.hazelcast.internal.serialization.Data) BigDecimal(java.math.BigDecimal) OffsetDateTime(java.time.OffsetDateTime) HazelcastJsonValueCodec(com.hazelcast.client.impl.protocol.codec.custom.HazelcastJsonValueCodec)

Example 14 with HazelcastJsonValue

use of com.hazelcast.core.HazelcastJsonValue in project hazelcast by hazelcast.

the class AbstractJsonGetterTest method testRepeatQueriesUseTheCachedContext.

@Test
public void testRepeatQueriesUseTheCachedContext() throws Exception {
    String jsonText = Json.object().add("at1", "val1").add("at2", "val2").toString();
    HazelcastJsonValue jsonValue = new HazelcastJsonValue(jsonText);
    JsonSchemaNode node = JsonSchemaHelper.createSchema(factory.createParser(jsonText));
    assertEquals("val1", getter.getValue(jsonValue, "at1", node));
    assertEquals("val1", getter.getValue(jsonValue, "at1", node));
    assertEquals("val1", getter.getValue(jsonValue, "at1", node));
    assertEquals("val1", getter.getValue(jsonValue, "at1", node));
    assertEquals(1, getter.getContextCacheSize());
}
Also used : HazelcastJsonValue(com.hazelcast.core.HazelcastJsonValue) JsonSchemaNode(com.hazelcast.json.internal.JsonSchemaNode) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 15 with HazelcastJsonValue

use of com.hazelcast.core.HazelcastJsonValue in project hazelcast by hazelcast.

the class AbstractJsonGetterTest method testRandomOrderObjectRepetitiveQuerying.

private void testRandomOrderObjectRepetitiveQuerying(final int queryCount) throws Exception {
    for (int i = 0; i < queryCount; i++) {
        HazelcastJsonValue value = createJsonValueWithRandomStructure(new String[] { "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10" }, new String[] { "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10" });
        JsonSchemaNode schema = createMetadata(value);
        assertEquals("v1", getter.getValue(value, "a1", schema));
        assertEquals("v2", getter.getValue(value, "a2", schema));
        assertEquals("v3", getter.getValue(value, "a3", schema));
        assertEquals("v4", getter.getValue(value, "a4", schema));
        assertEquals("v5", getter.getValue(value, "a5", schema));
        assertEquals("v6", getter.getValue(value, "a6", schema));
        assertEquals("v7", getter.getValue(value, "a7", schema));
        assertEquals("v8", getter.getValue(value, "a8", schema));
        assertEquals("v9", getter.getValue(value, "a9", schema));
        assertEquals("v10", getter.getValue(value, "a10", schema));
    }
    assertTrue(getter.getContextCacheSize() <= 10);
}
Also used : HazelcastJsonValue(com.hazelcast.core.HazelcastJsonValue) JsonSchemaNode(com.hazelcast.json.internal.JsonSchemaNode)

Aggregations

HazelcastJsonValue (com.hazelcast.core.HazelcastJsonValue)99 Test (org.junit.Test)80 QuickTest (com.hazelcast.test.annotation.QuickTest)74 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)67 JsonObject (com.hazelcast.internal.json.JsonObject)25 JsonValue (com.hazelcast.internal.json.JsonValue)19 NavigableJsonInputAdapter (com.hazelcast.internal.serialization.impl.NavigableJsonInputAdapter)12 JsonArray (com.hazelcast.internal.json.JsonArray)9 IMap (com.hazelcast.map.IMap)9 Map (java.util.Map)7 HazelcastInstance (com.hazelcast.core.HazelcastInstance)6 Data (com.hazelcast.internal.serialization.Data)5 JsonSchemaNode (com.hazelcast.json.internal.JsonSchemaNode)3 ConnectionResponse (com.hazelcast.internal.ascii.HTTPCommunicator.ConnectionResponse)2 InternalSerializationService (com.hazelcast.internal.serialization.InternalSerializationService)2 DefaultSerializationServiceBuilder (com.hazelcast.internal.serialization.impl.DefaultSerializationServiceBuilder)2 CompactGenericRecord (com.hazelcast.internal.serialization.impl.compact.CompactGenericRecord)2 PortableGenericRecord (com.hazelcast.internal.serialization.impl.portable.PortableGenericRecord)2 StringUtil.bytesToString (com.hazelcast.internal.util.StringUtil.bytesToString)2 ExpressionValue (com.hazelcast.jet.sql.impl.support.expressions.ExpressionValue)2