return Date.builder(); return org.apache.kafka.connect.data.Date.builder(); case Types.TIME: if(adaptiveTimeMicrosecondsPrecisionMode) {
return SchemaBuilder.array(io.debezium.time.Date.builder().optional().build()); return SchemaBuilder.array(org.apache.kafka.connect.data.Date.builder().optional().build()); case PgOid.TIME_ARRAY: case PgOid.TIMETZ_ARRAY:
static Schema schema(Class<?> logClass, String logFieldName) { final SchemaBuilder builder; if (LocalDate.class.equals(logClass)) { builder = Date.builder(); } else if (LocalTime.class.equals(logClass)) { builder = Time.builder(); } else if (Integer.class.equals(logClass)) { builder = SchemaBuilder.int32(); } else if (Long.class.equals(logClass)) { builder = SchemaBuilder.int64(); } else if (String.class.equals(logClass)) { builder = SchemaBuilder.string(); } else { throw new UnsupportedOperationException( String.format("%s is not a supported type.", logClass.getName()) ); } builder.optional(); return builder.build(); }
@TestFactory @DisplayName("tests for logical type date field conversions") public List<DynamicTest> testDateFieldConverter() { SinkFieldConverter converter = new DateFieldConverter(); List<DynamicTest> tests = new ArrayList<>(); new ArrayList<>(Arrays.asList( java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()), java.util.Date.from(ZonedDateTime.of(LocalDate.of(1983,7,31), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()), java.util.Date.from(ZonedDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()) )).forEach( el -> tests.add(dynamicTest("conversion with " + converter.getClass().getSimpleName() + " for "+el, () -> assertEquals(el.toInstant().getEpochSecond()*1000, ((BsonDateTime)converter.toBson(el)).getValue()) )) ); tests.add(dynamicTest("optional type conversions", () -> { Schema valueOptionalDefault = Date.builder().optional().defaultValue( java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()) ); assertAll("checks", () -> assertThrows(DataException.class, () -> converter.toBson(null, Date.SCHEMA)), () -> assertEquals(new BsonNull(), converter.toBson(null, Date.builder().optional())), () -> assertEquals(((java.util.Date)valueOptionalDefault.defaultValue()).toInstant().getEpochSecond()*1000, ((BsonDateTime)converter.toBson(null, valueOptionalDefault)).getValue()) ); })); return tests; }
fieldSchema = Date.builder() .optional() .parameter(LOGFIELD_PARAM, logFieldName)
SchemaBuilder dateSchemaBuilder = Date.builder(); if (optional) { dateSchemaBuilder.optional();
return Date.builder(); return org.apache.kafka.connect.data.Date.builder(); case Types.TIME: if(adaptiveTimeMicrosecondsPrecisionMode) {
builder = Date.builder(); break;
return SchemaBuilder.array(io.debezium.time.Date.builder().optional().build()); return SchemaBuilder.array(org.apache.kafka.connect.data.Date.builder().optional().build()); case PgOid.TIME_ARRAY: case PgOid.TIMETZ_ARRAY: