DBZ-1185 Use Boolean instead of Optional

This commit is contained in:
Jiri Pechanec 2019-03-21 13:15:24 +01:00 committed by Gunnar Morling
parent 958d207121
commit 13f49f02a9

View File

@ -10,7 +10,6 @@
import java.sql.Types; import java.sql.Types;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.apache.kafka.connect.data.Field; import org.apache.kafka.connect.data.Field;
import org.apache.kafka.connect.data.Schema; import org.apache.kafka.connect.data.Schema;
@ -39,7 +38,7 @@ public class ColumnDefinitionParserListener extends MySqlParserBaseListener {
private final TableEditor tableEditor; private final TableEditor tableEditor;
private ColumnEditor columnEditor; private ColumnEditor columnEditor;
private boolean uniqueColumn; private boolean uniqueColumn;
private Optional<Boolean> optionalColumn; private Boolean optionalColumn;
private final MySqlValueConverters converters; private final MySqlValueConverters converters;
private final MySqlDefaultValuePreConverter defaultValuePreConverter = new MySqlDefaultValuePreConverter(); private final MySqlDefaultValuePreConverter defaultValuePreConverter = new MySqlDefaultValuePreConverter();
@ -66,14 +65,16 @@ public Column getColumn() {
@Override @Override
public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { public void enterColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
uniqueColumn = false; uniqueColumn = false;
optionalColumn = Optional.empty(); optionalColumn = null;
resolveColumnDataType(ctx.dataType()); resolveColumnDataType(ctx.dataType());
super.enterColumnDefinition(ctx); super.enterColumnDefinition(ctx);
} }
@Override @Override
public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) { public void exitColumnDefinition(MySqlParser.ColumnDefinitionContext ctx) {
optionalColumn.ifPresent(optional -> columnEditor.optional(optional.booleanValue())); if (optionalColumn != null) {
columnEditor.optional(optionalColumn.booleanValue());
}
if (uniqueColumn && !tableEditor.hasPrimaryKey()) { if (uniqueColumn && !tableEditor.hasPrimaryKey()) {
// take the first unique constrain if no primary key is set // take the first unique constrain if no primary key is set
tableEditor.addColumn(columnEditor.create()); tableEditor.addColumn(columnEditor.create());
@ -92,7 +93,7 @@ public void enterUniqueKeyColumnConstraint(MySqlParser.UniqueKeyColumnConstraint
public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) { public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstraintContext ctx) {
// this rule will be parsed only if no primary key is set in a table // this rule will be parsed only if no primary key is set in a table
// otherwise the statement can't be executed due to multiple primary key error // otherwise the statement can't be executed due to multiple primary key error
optionalColumn = Optional.of(Boolean.FALSE); optionalColumn = Boolean.FALSE;
tableEditor.addColumn(columnEditor.create()); tableEditor.addColumn(columnEditor.create());
tableEditor.setPrimaryKeyNames(columnEditor.name()); tableEditor.setPrimaryKeyNames(columnEditor.name());
super.enterPrimaryKeyColumnConstraint(ctx); super.enterPrimaryKeyColumnConstraint(ctx);
@ -100,7 +101,7 @@ public void enterPrimaryKeyColumnConstraint(MySqlParser.PrimaryKeyColumnConstrai
@Override @Override
public void enterNullNotnull(MySqlParser.NullNotnullContext ctx) { public void enterNullNotnull(MySqlParser.NullNotnullContext ctx) {
optionalColumn = Optional.of(Boolean.valueOf(ctx.NOT() == null)); optionalColumn = Boolean.valueOf(ctx.NOT() == null);
super.enterNullNotnull(ctx); super.enterNullNotnull(ctx);
} }
@ -266,8 +267,8 @@ else if (dataTypeName.equals("SERIAL")) {
} }
private void serialColumn() { private void serialColumn() {
if (!optionalColumn.isPresent()) { if (optionalColumn == null) {
optionalColumn = Optional.of(Boolean.FALSE); optionalColumn = Boolean.FALSE;
} }
uniqueColumn = true; uniqueColumn = true;
columnEditor.autoIncremented(true); columnEditor.autoIncremented(true);
@ -275,7 +276,9 @@ private void serialColumn() {
} }
private void convertDefaultValueToSchemaType(ColumnEditor columnEditor) { private void convertDefaultValueToSchemaType(ColumnEditor columnEditor) {
optionalColumn.ifPresent(optional -> columnEditor.optional(optional.booleanValue())); if (optionalColumn != null) {
columnEditor.optional(optionalColumn.booleanValue());
}
final Column column = columnEditor.create(); final Column column = columnEditor.create();
// if converters is not null and the default value is not null, we need to convert default value // if converters is not null and the default value is not null, we need to convert default value
if (converters != null && columnEditor.defaultValue() != null) { if (converters != null && columnEditor.defaultValue() != null) {