@Override public GenericRow toKsqlRow(final Schema connectSchema, final Object connectData) { if (!schema.type().equals(Schema.Type.STRUCT)) { throw new KsqlException("Schema for a KSQL row should be a struct"); } final Struct rowStruct = (Struct) toKsqlValue(schema, connectSchema, connectData, ""); if (rowStruct == null) { return null; } // streams are expensive, so we don't use them from serdes. build the row using forEach final List<Object> fields = new ArrayList<>(schema.fields().size()); schema.fields().forEach(field -> fields.add(rowStruct.get(field))); return new GenericRow(fields); }
/** * Determine the type/format of the timestamp based on the schema */ private String timestampTypeFromSchema(Schema schema) { if (Timestamp.LOGICAL_NAME.equals(schema.name())) { return TYPE_TIMESTAMP; } else if (org.apache.kafka.connect.data.Date.LOGICAL_NAME.equals(schema.name())) { return TYPE_DATE; } else if (Time.LOGICAL_NAME.equals(schema.name())) { return TYPE_TIME; } else if (schema.type().equals(Schema.Type.STRING)) { // If not otherwise specified, string == user-specified string format for timestamps return TYPE_STRING; } else if (schema.type().equals(Schema.Type.INT64)) { // If not otherwise specified, long == unix time return TYPE_UNIX; } throw new ConnectException("Schema " + schema + " does not correspond to a known timestamp type format"); }
public static List<FieldSchema> convertSchema(Schema schema) { List<FieldSchema> columns = new ArrayList<>(); if (Schema.Type.STRUCT.equals(schema.type())) { for (Field field: schema.fields()) { columns.add(new FieldSchema( field.name(), convert(field.schema()).getTypeName(), field.schema().doc())); } } return columns; }
private void validateType(final String pathStr, final Schema schema, final Schema connectSchema, final Schema.Type[] validTypes) { // don't use stream here for (final Schema.Type type : validTypes) { if (connectSchema.type().equals(type)) { return; } } throwTypeMismatchException(pathStr, schema, connectSchema); }
public boolean matches(final Schema schema) { if (schema == null) { return isOptional; } return type.equals(schema.type()); } }
private void validateType(final String pathStr, final Schema schema, final Schema connectSchema) { if (!connectSchema.type().equals(schema.type())) { throwTypeMismatchException(pathStr, schema, connectSchema); } }