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\"" + "}"));
}
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 + "}"));
}
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());
}
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());
}
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);
}
Aggregations