Prepare migrating to next version
To ease the migration to the next version of Atoti, we deprecated some classes and methods in the current version. You can already adopt the new way of doing things in the current version to make the future migration smoother and to have an opportunity to provide feedback on the changes.
Sources
The general direction of the source API is the following:
- keep the same concepts and abstractions
- remove some useless interfaces and rely directly on POJOs
- rely more on builders to create configurations
- make the API immutable (POJOs without any setters)
CSV Source
To configure the CSV parser, use directly the POJO CsvParserConfiguration
instead of the interface ICsvParserConfiguration
.
Everywhere a method take as input/returns an ICsvParserConfiguration
, it will return a CsvParserConfiguration
in 6.2 instead.
In order to create such configuration, a builder has been added and will be the only way to create such a configuration (see CsvParserConfiguration#builder()
).
To configure the CSV source, use directly the POJO CsvSourceConfiguration
instead of the interface ICsvSourceConfiguration
.
Everywhere a method take as input/returns an ICsvSourceConfiguration
, it will return a CsvSourceConfiguration
in 6.2 instead.
In order to create such configuration, a builder has been added and will be the only way to create such a configuration (see CsvSourceConfiguration#builder()
and CsvSourceConfiguration#builderForLocalFiles()
).
Do not use the properties ActiveViamProperties.PARSING_REPORT_ENABLED
("activeviam.msg.csv.reporting.enabled") and ActiveViamProperties.CSV_PARSING_REPORT_MAX_ANOMALIES
("activeviam.msg.csv.reporting.maxAnomalies") anymore.
Instead, use the CsvSourceConfiguration.builder().parsingReportEnabled(boolean)
and CsvSourceConfiguration.builder().maxParsingAnomalies(int)
methods.
Do not use CsvFactory#create
. Use instead ICsvSource#builder
and ICsvSource#builderForLocalFiles
.
JDBC Source
To create a CSV topic, use the fluent builder JdbcTopic#builder()
instead of the constructors of JdbcTopic
.
The interface IJdbcTopic
has been deprecated.
All methods accepting as argument/returning an IJdbcTopic
in 6.1 will only accept/return a JdbcTopic
in 6.2.
The parameter JdbcSourceBuilder#withAppendBatchSize()
is configurable at the topic level form now on JdbcTopic#builder().batchSize()
.
Do not use the properties ActiveViamProperties.PARSING_REPORT_ENABLED
("activeviam.msg.csv.reporting.enabled") anymore.
Instead, use the IJdbSource.builder().parsingReportEnabled(boolean)
method.
Cloud sources
To configure CloudFetchingConfig
, use the builder CloudFetchingConfig.builder()
instead of the constructors and the setters.
DirectQuery
Snowflake
SnowflakeDialectSettings#arrayAggWrapperFunctionName()
will be removed.
It's better not to set it, so the queries use the SQL built-in function ARRAY_AGG
(which has been improved by Snowflake).
Distribution
Distributing levels
The term "distributing levels" should be used in place of "distributing fields" as they are indeed levels and not selection fields.
The methods defining the distributing levels as String (like IClusterDefinitionBuilder#withDistributingFields
) are
deprecated in favor of methods using LevelIdentifier (like IClusterDefinitionBuilder#withDistributingLevels
).
This allows the user to define a distributing level that do not have the same name as its underlying selection field.