diff --git a/debezium-connector-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerPartition.java b/debezium-connector-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerPartition.java index c7df71005..800a7b769 100644 --- a/debezium-connector-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerPartition.java +++ b/debezium-connector-sqlserver/src/main/java/io/debezium/connector/sqlserver/SqlServerPartition.java @@ -18,21 +18,20 @@ import io.debezium.config.Configuration; import io.debezium.pipeline.spi.Partition; +import io.debezium.relational.AbstractPartition; import io.debezium.util.Collect; -import io.debezium.util.LoggingContext; -public class SqlServerPartition implements Partition { +public class SqlServerPartition extends AbstractPartition implements Partition { private static final String SERVER_PARTITION_KEY = "server"; private static final String DATABASE_PARTITION_KEY = "database"; private final String serverName; - private final String databaseName; private final Map sourcePartition; private final int hashCode; public SqlServerPartition(String serverName, String databaseName, boolean multiPartitionMode) { + super(databaseName); this.serverName = serverName; - this.databaseName = databaseName; this.sourcePartition = Collect.hashMapOf(SERVER_PARTITION_KEY, serverName); if (multiPartitionMode) { @@ -47,11 +46,6 @@ public Map getSourcePartition() { return sourcePartition; } - @Override - public Map getLoggingContext() { - return Collections.singletonMap(LoggingContext.DATABASE_NAME, databaseName); - } - /** * Returns the SQL Server database name corresponding to the partition. */ diff --git a/debezium-core/src/main/java/io/debezium/relational/AbstractPartition.java b/debezium-core/src/main/java/io/debezium/relational/AbstractPartition.java new file mode 100644 index 000000000..bc195fc40 --- /dev/null +++ b/debezium-core/src/main/java/io/debezium/relational/AbstractPartition.java @@ -0,0 +1,31 @@ +/* + * Copyright Debezium Authors. + * + * Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package io.debezium.relational; + +import java.util.Collections; +import java.util.Map; + +import io.debezium.pipeline.spi.Partition; +import io.debezium.util.LoggingContext; + +/** + * An abstract implementation of {@link io.debezium.pipeline.spi.Partition} which provides default facilities for logging. + * + * @author vjuranek + */ +public abstract class AbstractPartition implements Partition { + + protected final String databaseName; + + public AbstractPartition(String databaseName) { + this.databaseName = databaseName; + } + + @Override + public Map getLoggingContext() { + return Collections.singletonMap(LoggingContext.DATABASE_NAME, databaseName); + } +}