From 7ee5faa800407e7efb8e08bc85e96f110f68ee78 Mon Sep 17 00:00:00 2001 From: Akshay Rai Date: Sun, 28 Jun 2026 17:59:51 +0000 Subject: [PATCH 1/2] Checkstyle class-design cleanup: add private utility ctors, mark final, drop redundant modifiers, add missing @Override Bundle of four mechanical class-design fixes the LinkedIn-internal checkstyle (a stricter superset of the OSS Checker) flags on the current OSS Brooklin tree. No behavior change in any file; every fix is a declaration-level no-op that documents intent the language already enforces, or that the class was implicitly relying on. None of the targeted rules are currently enabled in OSS Brooklin's own checkstyle.xml -- two of them (HideUtilityClassConstructorCheck, MissingOverrideCheck) are present-but-commented-out -- so this PR addresses the latent violations without proposing a config change. 49 fixes across 41 files, by rule: HideUtilityClassConstructorCheck (26) Adds an explicit `private ClassName()` constructor to each utility class (all-static-API classes) so the synthesized public default constructor doesn't accidentally let consumers instantiate them. Each ctor is a one-liner; no other changes in these files. Touched modules: datastream-{client, common, kafka, kafka-connector, server, testcommon, tools, utils}. FinalClassCheck (6) Marks five top-level classes (DatastreamRestClientCli, DynamicMetricsManager, MetricsTestUtils, EmbeddedDatastreamCluster, FutureUtils) and one nested class (KafkaMirrorMakerConnector.PartitionDiscoveryThread) `final`. Each already had only private constructors, so the `final` keyword just makes the existing not-meant-to-be-subclassed intent explicit -- the JVM was already enforcing it. RedundantModifierCheck (16) Drops the `public` modifier from constructors of nested types whose enclosing class is `private` (or, for ResettableGauge, whose own class is package-private). The `public` modifier on a constructor of a private/package-private type is redundant because the constructor cannot be invoked from anywhere the type itself isn't visible. Touched ZkAdapter's five private inner zk-listener classes, three CommonConnectorMetrics nested metric-bucket classes, Coordinator.CoordinatorMetrics, StickyPartitionAssignmentStrategy.ElasticTaskAssignmentInfo, RetryUtils.ExceptionTrackingMethodCaller, FileProcessor (package-private), BaseRestClientFactory.DaemonNamedThreadFactory, ResettableGauge x2, DatabaseChunkedReaderMetrics. MissingOverrideCheck (1) Adds @Override to AbstractKafkaConnector#getActiveTasks(), which already had `{@inheritDoc}` Javadoc but was missing the annotation the Javadoc implies. Motivation outside OSS Brooklin: brooklin-server consumes Brooklin in-tree (subtree-merge at brooklin-core/) and runs a stricter checkstyle on the merged code; the four rules above fire 49 times total today, forcing a build-level carve-out. With this PR merged upstream, brooklin-server's next OSS sync inherits the cleanup and the four rules drop out of its checkstyle-suppress list. --- .../com/linkedin/datastream/BaseRestClientFactory.java | 2 +- .../datastream/DatastreamRestClientFactory.java | 4 ++++ .../ServerComponentHealthRestClientFactory.java | 4 ++++ .../datastream/common/AvroMessageEncoderUtil.java | 4 ++++ .../common/BrooklinEnvelopeMetadataConstants.java | 3 +++ .../datastream/common/DatastreamMetadataConstants.java | 3 +++ .../java/com/linkedin/datastream/common/JsonUtils.java | 4 ++++ .../linkedin/datastream/common/ReflectionUtils.java | 4 ++++ .../dbreader/DatabaseChunkedReaderMetrics.java | 2 +- .../datastream/connectors/CommonConnectorMetrics.java | 6 +++--- .../kafka/KafkaDatastreamMetadataConstants.java | 3 +++ .../datastream/metrics/DynamicMetricsManager.java | 2 +- .../datastream/metrics/JmxReporterFactory.java | 4 ++++ .../linkedin/datastream/metrics/ResettableGauge.java | 4 ++-- .../datastream/connectors/file/FileProcessor.java | 2 +- .../connectors/kafka/AbstractKafkaConnector.java | 1 + .../connectors/kafka/KafkaConnectorDiagUtils.java | 4 ++++ .../kafka/mirrormaker/KafkaMirrorMakerConnector.java | 2 +- .../KafkaMirrorMakerDatastreamMetadata.java | 3 +++ .../datastream/kafka/KafkaTransportProviderUtils.java | 4 ++++ .../com/linkedin/datastream/server/Coordinator.java | 2 +- .../server/DatastreamServerConfigurationConstants.java | 3 +++ .../assignment/StickyPartitionAssignmentStrategy.java | 2 +- .../com/linkedin/datastream/server/zk/ZkAdapter.java | 10 +++++----- .../datastream/server/EmbeddedDatastreamCluster.java | 2 +- .../datastream/testutil/DatastreamTestUtils.java | 4 ++++ .../linkedin/datastream/testutil/MetricsTestUtils.java | 2 +- .../datastream/tools/DatastreamRestClientCli.java | 2 +- .../com/linkedin/datastream/tools/OptionConstants.java | 3 +++ .../com/linkedin/datastream/tools/OptionUtils.java | 3 +++ .../java/com/linkedin/datastream/common/AvroUtils.java | 3 +++ .../java/com/linkedin/datastream/common/FileUtils.java | 3 +++ .../com/linkedin/datastream/common/FutureUtils.java | 2 +- .../java/com/linkedin/datastream/common/LogUtils.java | 4 ++++ .../com/linkedin/datastream/common/NetworkUtils.java | 3 +++ .../java/com/linkedin/datastream/common/PollUtils.java | 3 +++ .../com/linkedin/datastream/common/RestliUtils.java | 4 ++++ .../com/linkedin/datastream/common/RetryUtils.java | 5 ++++- .../datastream/common/ThreadTerminationMonitor.java | 3 +++ .../com/linkedin/datastream/common/ThreadUtils.java | 4 ++++ .../linkedin/datastream/common/TopicPartitionUtil.java | 3 +++ 41 files changed, 113 insertions(+), 22 deletions(-) diff --git a/datastream-client/src/main/java/com/linkedin/datastream/BaseRestClientFactory.java b/datastream-client/src/main/java/com/linkedin/datastream/BaseRestClientFactory.java index f3b0fb3a3..a603d52d1 100644 --- a/datastream-client/src/main/java/com/linkedin/datastream/BaseRestClientFactory.java +++ b/datastream-client/src/main/java/com/linkedin/datastream/BaseRestClientFactory.java @@ -152,7 +152,7 @@ private static String getKey(String uri, Map httpConfig) { * shutdown, hence it is okay for us to make the threads daemon. */ private class DaemonNamedThreadFactory extends NamedThreadFactory { - public DaemonNamedThreadFactory(String name) { + DaemonNamedThreadFactory(String name) { super(name + " " + StringUtils.substringAfterLast(_logger.getName(), ".")); } diff --git a/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClientFactory.java b/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClientFactory.java index 9ddf7b96b..7a88170f6 100644 --- a/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClientFactory.java +++ b/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClientFactory.java @@ -23,6 +23,10 @@ * DatastreamRestClient, without doing a major refactoring of the code. */ public final class DatastreamRestClientFactory { + + private DatastreamRestClientFactory() { + } + private static final Logger LOG = LoggerFactory.getLogger(DatastreamRestClientFactory.class); private static final BaseRestClientFactory FACTORY = new BaseRestClientFactory<>(DatastreamRestClient.class, LOG); diff --git a/datastream-client/src/main/java/com/linkedin/diagnostics/ServerComponentHealthRestClientFactory.java b/datastream-client/src/main/java/com/linkedin/diagnostics/ServerComponentHealthRestClientFactory.java index c7775088d..ec8e3c25e 100644 --- a/datastream-client/src/main/java/com/linkedin/diagnostics/ServerComponentHealthRestClientFactory.java +++ b/datastream-client/src/main/java/com/linkedin/diagnostics/ServerComponentHealthRestClientFactory.java @@ -21,6 +21,10 @@ * Factory class for obtaining {@link ServerComponentHealthRestClient} objects. */ public final class ServerComponentHealthRestClientFactory { + + private ServerComponentHealthRestClientFactory() { + } + private static final Logger LOG = LoggerFactory.getLogger(DatastreamRestClientFactory.class); private static final BaseRestClientFactory FACTORY = new BaseRestClientFactory<>(ServerComponentHealthRestClient.class, LOG); diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java b/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java index f6c9372be..e283fd3e7 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java @@ -26,6 +26,10 @@ * Utility class to simplify Avro message encoding */ public class AvroMessageEncoderUtil { + + private AvroMessageEncoderUtil() { + } + public static final byte MAGIC_BYTE = 0x0; /** diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java index 1515869b0..0024e7a41 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java @@ -10,6 +10,9 @@ */ public class BrooklinEnvelopeMetadataConstants { + private BrooklinEnvelopeMetadataConstants() { + } + /** * Codes to identify the different data change operations */ diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java index efcc226d8..8bbd769f5 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java @@ -10,6 +10,9 @@ */ public class DatastreamMetadataConstants { + private DatastreamMetadataConstants() { + } + /** * Represents whether the datastream has an User managed destination (a.k.a BYOT - Bring your own topic) */ diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/JsonUtils.java b/datastream-common/src/main/java/com/linkedin/datastream/common/JsonUtils.java index bc96fa7c7..ee0560db9 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/JsonUtils.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/JsonUtils.java @@ -32,6 +32,10 @@ * for checking the */ public final class JsonUtils { + + private JsonUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(JsonUtils.class.getName()); private static final ObjectMapper MAPPER = new ObjectMapper(); diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java b/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java index fd53d1b7c..3f6fbddce 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java @@ -19,6 +19,10 @@ * Utility class to simplify usage of Java reflection. */ public class ReflectionUtils { + + private ReflectionUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(ReflectionUtils.class); private static final Class[][] COMPATIBLE_TYPES = { diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/databases/dbreader/DatabaseChunkedReaderMetrics.java b/datastream-common/src/main/java/com/linkedin/datastream/common/databases/dbreader/DatabaseChunkedReaderMetrics.java index a3101bc66..b1c3d36f1 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/databases/dbreader/DatabaseChunkedReaderMetrics.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/databases/dbreader/DatabaseChunkedReaderMetrics.java @@ -52,7 +52,7 @@ class DatabaseChunkedReaderMetrics extends BrooklinMetrics { * @param source Aggregate metrics for source .i.e. at the Database table level * @param key Metrics at the reader level, identified by key */ - public DatabaseChunkedReaderMetrics(String source, String key) { + DatabaseChunkedReaderMetrics(String source, String key) { super(CLASS_NAME, key); _source = source; diff --git a/datastream-common/src/main/java/com/linkedin/datastream/connectors/CommonConnectorMetrics.java b/datastream-common/src/main/java/com/linkedin/datastream/connectors/CommonConnectorMetrics.java index e670dfce9..4eeac2799 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/connectors/CommonConnectorMetrics.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/connectors/CommonConnectorMetrics.java @@ -68,7 +68,7 @@ static class EventProcMetrics extends BrooklinMetrics { final Meter _aggregatedErrorRate; final Meter _aggregatedProcessingAboveThreshold; - public EventProcMetrics(String className, String key) { + EventProcMetrics(String className, String key) { super(className, key); _lastEventReceivedTime = Instant.now(); _eventsProcessedRate = DYNAMIC_METRICS_MANAGER.registerMetric(_className, _key, EVENTS_PROCESSED_RATE, @@ -139,7 +139,7 @@ static class PollMetrics extends BrooklinMetrics { final Counter _aggregatedClientPollOverTimeout; final Counter _aggregatedClientPollIntervalOverSessionTimeout; - public PollMetrics(String className, String key) { + PollMetrics(String className, String key) { super(className, key); _numPolls = DYNAMIC_METRICS_MANAGER.registerMetric(_className, _key, NUM_POLLS, Meter.class); _eventCountsPerPoll = DYNAMIC_METRICS_MANAGER.registerMetric(_className, _key, EVENT_COUNTS_PER_POLL, @@ -203,7 +203,7 @@ static class PartitionMetrics extends BrooklinMetrics { private final AtomicLong _numPartitions; private final AtomicLong _numStuckPartitions; - public PartitionMetrics(String className, String key) { + PartitionMetrics(String className, String key) { super(className, key); _fullMetricsKey = MetricRegistry.name(_className, _key); _rebalanceRate = DYNAMIC_METRICS_MANAGER.registerMetric(_className, _key, REBALANCE_RATE, Meter.class); diff --git a/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java index 2fffeb24c..60128a6ae 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java @@ -10,6 +10,9 @@ */ public class KafkaDatastreamMetadataConstants { + private KafkaDatastreamMetadataConstants() { + } + // Can be used by the transport provider to send to a particular Kafka cluster public static final String DESTINATION_KAFKA_BROKERS = "system.destination.KafkaBrokers"; diff --git a/datastream-common/src/main/java/com/linkedin/datastream/metrics/DynamicMetricsManager.java b/datastream-common/src/main/java/com/linkedin/datastream/metrics/DynamicMetricsManager.java index 39ef431e2..ec8062507 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/metrics/DynamicMetricsManager.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/metrics/DynamicMetricsManager.java @@ -28,7 +28,7 @@ /** * Manages dynamic metrics and supports creating/updating metrics on the fly. */ -public class DynamicMetricsManager { +public final class DynamicMetricsManager { static final String NO_KEY_PLACEHOLDER = "NO_KEY"; private static final Logger LOG = LoggerFactory.getLogger(DynamicMetricsManager.class); private static DynamicMetricsManager _instance = null; diff --git a/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java b/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java index 6f83f4d4b..4417d72e4 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java @@ -22,6 +22,10 @@ * names are decided according to {@link BrooklinObjectNameFactory}. */ public class JmxReporterFactory { + + private JmxReporterFactory() { + } + private static final ObjectNameFactory OBJECT_NAME_FACTORY = new BrooklinObjectNameFactory(); /** diff --git a/datastream-common/src/main/java/com/linkedin/datastream/metrics/ResettableGauge.java b/datastream-common/src/main/java/com/linkedin/datastream/metrics/ResettableGauge.java index 50c3e8ef7..d0f72a1c1 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/metrics/ResettableGauge.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/metrics/ResettableGauge.java @@ -18,10 +18,10 @@ class ResettableGauge implements Gauge { private Supplier _supplier; - public ResettableGauge() { + ResettableGauge() { } - public ResettableGauge(Supplier supplier) { + ResettableGauge(Supplier supplier) { _supplier = supplier; } diff --git a/datastream-file-connector/src/main/java/com/linkedin/datastream/connectors/file/FileProcessor.java b/datastream-file-connector/src/main/java/com/linkedin/datastream/connectors/file/FileProcessor.java index fa4bb3e1e..ae117a0f4 100644 --- a/datastream-file-connector/src/main/java/com/linkedin/datastream/connectors/file/FileProcessor.java +++ b/datastream-file-connector/src/main/java/com/linkedin/datastream/connectors/file/FileProcessor.java @@ -50,7 +50,7 @@ class FileProcessor implements Runnable { private boolean _cancelRequested; private boolean _isStopped; - public FileProcessor(DatastreamTask datastreamTask, DatastreamEventProducer producer) throws FileNotFoundException { + FileProcessor(DatastreamTask datastreamTask, DatastreamEventProducer producer) throws FileNotFoundException { _task = datastreamTask; _fileName = datastreamTask.getDatastreamSource().getConnectionString(); _positionKey = new FilePositionKey(_task.getTaskPrefix(), _task.getDatastreamTaskName(), Instant.now(), _fileName); diff --git a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/AbstractKafkaConnector.java b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/AbstractKafkaConnector.java index f5b40aaf2..b20ba3166 100644 --- a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/AbstractKafkaConnector.java +++ b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/AbstractKafkaConnector.java @@ -789,6 +789,7 @@ public Map> getConsumptionLagForTask(DatastreamTask t /** * {@inheritDoc} */ + @Override public List getActiveTasks() { List tasks = new ArrayList<>(); diff --git a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java index 0a60767ee..dd16246c4 100644 --- a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java +++ b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java @@ -23,6 +23,10 @@ * Utility class for Kafka based connectors */ public class KafkaConnectorDiagUtils { + + private KafkaConnectorDiagUtils() { + } + /** * Reduce/Merge the KafkaTopicPartitionStatsResponse responses of a collection of host/instance into one response */ diff --git a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerConnector.java b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerConnector.java index 3fcfad26e..80d5f41da 100644 --- a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerConnector.java +++ b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerConnector.java @@ -268,7 +268,7 @@ private void validateSourceConnectionString(Datastream stream) throws Datastream * PartitionDiscoveryThread listens to Kafka partitions periodically using the _consumer.listTopic() * to fetch the latest subscribed partitions for a given datastreamGroup */ - class PartitionDiscoveryThread extends Thread { + final class PartitionDiscoveryThread extends Thread { // The datastream group that this partitionDiscoveryThread is responsible to handle private final DatastreamGroup _datastreamGroup; diff --git a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerDatastreamMetadata.java b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerDatastreamMetadata.java index b78f3d491..87db68d4c 100644 --- a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerDatastreamMetadata.java +++ b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/mirrormaker/KafkaMirrorMakerDatastreamMetadata.java @@ -15,6 +15,9 @@ */ public final class KafkaMirrorMakerDatastreamMetadata { + private KafkaMirrorMakerDatastreamMetadata() { + } + public static final String IDENTITY_PARTITIONING_ENABLED = "system.destination.identityPartitioningEnabled"; /** diff --git a/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java b/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java index 543296c71..8c082c475 100644 --- a/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java +++ b/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java @@ -18,6 +18,10 @@ * Utility methods for {@link KafkaTransportProvider} */ public class KafkaTransportProviderUtils { + + private KafkaTransportProviderUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(KafkaTransportProviderUtils.class.getName()); // Mapping destination URI to topic name private final static Map URI_TOPICS = new ConcurrentHashMap<>(); diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java b/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java index 743a1ad4e..4debb02c0 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java @@ -2482,7 +2482,7 @@ private static class CoordinatorMetrics { private final List _metricInfos; private final DynamicMetricsManager _dynamicMetricsManager; - public CoordinatorMetrics(Coordinator coordinator) { + CoordinatorMetrics(Coordinator coordinator) { _coordinator = coordinator; _metricInfos = new ArrayList<>(); _dynamicMetricsManager = DynamicMetricsManager.getInstance(); diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/DatastreamServerConfigurationConstants.java b/datastream-server/src/main/java/com/linkedin/datastream/server/DatastreamServerConfigurationConstants.java index d9b0507e5..5b50ca4a2 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/DatastreamServerConfigurationConstants.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/DatastreamServerConfigurationConstants.java @@ -10,6 +10,9 @@ */ public final class DatastreamServerConfigurationConstants { + private DatastreamServerConfigurationConstants() { + } + public static final String CONFIG_PREFIX = "brooklin.server."; public static final String CONFIG_CONNECTOR_NAMES = CONFIG_PREFIX + "connectorNames"; public static final String CONFIG_HTTP_PORT = CONFIG_PREFIX + "httpPort"; diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/assignment/StickyPartitionAssignmentStrategy.java b/datastream-server/src/main/java/com/linkedin/datastream/server/assignment/StickyPartitionAssignmentStrategy.java index f5e85f275..46bb13104 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/assignment/StickyPartitionAssignmentStrategy.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/assignment/StickyPartitionAssignmentStrategy.java @@ -778,7 +778,7 @@ private static class ElasticTaskAssignmentInfo { private final int _actualPartitionsPerTask; private final boolean _needsAdjustment; - public ElasticTaskAssignmentInfo(int actualPartitionsPerTask, boolean needsAdjustment) { + ElasticTaskAssignmentInfo(int actualPartitionsPerTask, boolean needsAdjustment) { _actualPartitionsPerTask = actualPartitionsPerTask; _needsAdjustment = needsAdjustment; } diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/zk/ZkAdapter.java b/datastream-server/src/main/java/com/linkedin/datastream/server/zk/ZkAdapter.java index af6a59e98..a868dc6dc 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/zk/ZkAdapter.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/zk/ZkAdapter.java @@ -1699,7 +1699,7 @@ private class ZkBackedDMSDatastreamList implements IZkChildListener, IZkDataList /** * Sets up a watch on the {@code /{cluster}/dms} tree, so it can be notified of future changes. */ - public ZkBackedDMSDatastreamList() { + ZkBackedDMSDatastreamList() { _path = KeyBuilder.datastreams(_cluster); _zkclient.ensurePath(KeyBuilder.datastreams(_cluster)); LOG.info("ZkBackedDMSDatastreamList::Subscribing to the changes under the path " + _path); @@ -1768,7 +1768,7 @@ private class ZkBackedLiveInstanceListProvider implements IZkChildListener { * Sets up a watch on the {@code /{cluster}/liveinstances} tree, so it can be notified * of future changes. */ - public ZkBackedLiveInstanceListProvider() { + ZkBackedLiveInstanceListProvider() { _path = KeyBuilder.liveInstances(_cluster); _zkclient.ensurePath(_path); LOG.info("ZkBackedLiveInstanceListProvider::Subscribing to the under the path " + _path); @@ -1850,7 +1850,7 @@ private class ZkBackedTaskListProvider implements IZkChildListener, IZkDataListe * Constructor * @param instanceName Instance for which the datastream task assignment is to be watched. */ - public ZkBackedTaskListProvider(String cluster, String instanceName) { + ZkBackedTaskListProvider(String cluster, String instanceName) { _path = KeyBuilder.instanceAssignments(cluster, instanceName); LOG.info("ZkBackedTaskListProvider::Subscribing to the changes under the path " + _path); _zkclient.subscribeChildChanges(_path, this); @@ -1901,7 +1901,7 @@ private class ZkTargetAssignmentProvider implements IZkDataListener { /** * Constructor */ - public ZkTargetAssignmentProvider(Set connectorTypes) { + ZkTargetAssignmentProvider(Set connectorTypes) { for (String connectorType : connectorTypes) { String path = KeyBuilder.getTargetAssignmentBase(_cluster, connectorType); _zkclient.subscribeDataChanges(path, this); @@ -1956,7 +1956,7 @@ private class ZkStateChangeListener implements IZkStateListener { new ThreadFactoryBuilder().setDaemon(true).setNameFormat("SessionExpiryScheduler-%d").build()); private Future _zkSessionExpiryFuture = CompletableFuture.completedFuture("completed"); - public ZkStateChangeListener() { + ZkStateChangeListener() { _zkclient.subscribeStateChanges(this); } diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/server/EmbeddedDatastreamCluster.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/server/EmbeddedDatastreamCluster.java index 72dc070e6..c8350b36b 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/server/EmbeddedDatastreamCluster.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/server/EmbeddedDatastreamCluster.java @@ -28,7 +28,7 @@ /** * Provides a Datastream cluster, including a ZooKeeper cluster and Kafka cluster (if necessary), for testing purposes. */ -public class EmbeddedDatastreamCluster { +public final class EmbeddedDatastreamCluster { public static final String CONFIG_ZK_CONNECT = "zookeeper.connect"; public static final String BOOTSTRAP_SERVERS_CONFIG = "bootstrap.servers"; diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java index 50399d51a..3bf778fc5 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java @@ -28,6 +28,10 @@ * Utility class for writing tests that deal with Datastream objects. */ public class DatastreamTestUtils { + + private DatastreamTestUtils() { + } + /** * Creates variable number of Datastreams from a list of names with * fields populated with default values except for name and connector type. diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/MetricsTestUtils.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/MetricsTestUtils.java index 0f85e662b..2821cf2c9 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/MetricsTestUtils.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/MetricsTestUtils.java @@ -35,7 +35,7 @@ * Test utilities for verifying metrics * @see MetricsAware */ -public class MetricsTestUtils { +public final class MetricsTestUtils { // Mapping of BrooklinMetricInfo sub-types -> com.codahale.metrics types private static final Map, Class> METRICS_TYPE_MAPPING = ImmutableMap.of( BrooklinCounterInfo.class, Counter.class, diff --git a/datastream-tools/src/main/java/com/linkedin/datastream/tools/DatastreamRestClientCli.java b/datastream-tools/src/main/java/com/linkedin/datastream/tools/DatastreamRestClientCli.java index c150af818..17f95f32b 100644 --- a/datastream-tools/src/main/java/com/linkedin/datastream/tools/DatastreamRestClientCli.java +++ b/datastream-tools/src/main/java/com/linkedin/datastream/tools/DatastreamRestClientCli.java @@ -35,7 +35,7 @@ /** * The main class containing the entry point of the Datastream REST client command line utility */ -public class DatastreamRestClientCli { +public final class DatastreamRestClientCli { private DatastreamRestClientCli() { } diff --git a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java index 3a6770e85..c0ed5e159 100644 --- a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java +++ b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java @@ -10,6 +10,9 @@ */ public class OptionConstants { + private OptionConstants() { + } + public static final String OPT_SHORT_MGMT_URI = "u"; public static final String OPT_LONG_MGMT_URI = "uri"; public static final String OPT_ARG_MGMT_URI = "MANAGEMENT_URI"; diff --git a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java index f28cb5826..2ab00cd8c 100644 --- a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java +++ b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java @@ -13,6 +13,9 @@ */ public class OptionUtils { + private OptionUtils() { + } + /** * Create a command line option * @param shortOpt short representation of the option diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java index fa6922ae1..524c9d02b 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java @@ -33,6 +33,9 @@ */ public class AvroUtils { + private AvroUtils() { + } + /** * Encode an Avro record into byte array * diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java index ca2b05625..d19240633 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java @@ -19,6 +19,9 @@ */ public class FileUtils { + private FileUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(FileUtils.class.getName()); /** diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/FutureUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/FutureUtils.java index 481842e61..20e00c63b 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/FutureUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/FutureUtils.java @@ -22,7 +22,7 @@ /** * Utilities to work with {@link Future} */ -public class FutureUtils { +public final class FutureUtils { private static final int EXECUTOR_CORE_POOL_SIZE = 4; private static final ScheduledExecutorService SCHEDULED_EXECUTOR_SERVICE = Executors.newScheduledThreadPool( diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java index 5c5a41f87..0b582df23 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java @@ -21,6 +21,10 @@ * Util class for logging-related methods */ public class LogUtils { + + private LogUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(LogUtils.class.getName()); private static final double BUFFER_1KB = 1024; diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java index 57740bbc1..28a9a9cdc 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java @@ -14,6 +14,9 @@ */ public class NetworkUtils { + private NetworkUtils() { + } + /** * Get the next available port that can be used for opening a socket connection. */ diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/PollUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/PollUtils.java index 2b1b763a0..752dbe57a 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/PollUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/PollUtils.java @@ -16,6 +16,9 @@ */ public final class PollUtils { + private PollUtils() { + } + /** * Interruptable version of {@link java.util.function.Supplier} for use with Poll functions * diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/RestliUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/RestliUtils.java index 5f5c57b9d..7c7e1df35 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/RestliUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/RestliUtils.java @@ -16,6 +16,10 @@ * Utility class to simplify usage of Restli. */ public final class RestliUtils { + + private RestliUtils() { + } + private static final String URI_SCHEME = "http://"; private static final String URI_SCHEME_SSL = "https://"; diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java index b6a4d3bac..176a75e2c 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java @@ -17,6 +17,9 @@ */ public class RetryUtils { + private RetryUtils() { + } + private static final Logger LOG = LoggerFactory.getLogger(RetryUtils.class.getName()); /** @@ -45,7 +48,7 @@ private static class ExceptionTrackingMethodCaller implements BooleanSupplier private U _value; private Exception _lastException; - public ExceptionTrackingMethodCaller(Supplier func) { + ExceptionTrackingMethodCaller(Supplier func) { _func = func; } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java index 14632db87..a8457e8f0 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java @@ -26,6 +26,9 @@ */ public class ThreadTerminationMonitor { + private ThreadTerminationMonitor() { + } + private static final String ABNORMAL_TERMINATIONS = "abnormalTerminations"; private static final String MODULE = ThreadTerminationMonitor.class.getSimpleName(); diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadUtils.java index e1804f018..9b3373747 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadUtils.java @@ -16,6 +16,10 @@ * Utility methods for dealing with threading-related concerns. */ public final class ThreadUtils { + + private ThreadUtils() { + } + /** * Gracefully shutdown an executor service and force terminate if the worker threads * do not exit within the specified time out. Adapted from JDK javadoc: diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java index ffef2be82..09379d3c0 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java @@ -13,6 +13,9 @@ */ public class TopicPartitionUtil { + private TopicPartitionUtil() { + } + /** * Create a topic partition instance from String */ From 4c26ad782c79b978d34eae95078afd543ba3b7c8 Mon Sep 17 00:00:00 2001 From: Akshay Rai Date: Mon, 29 Jun 2026 17:02:38 +0530 Subject: [PATCH 2/2] Mark Utils / Constants classes as final to complete FinalClassCheck closure Follow-up to reviewer feedback on the previous commit: adding a private no-arg constructor to the 18 utility / constants classes flipped them from "synthesized public default ctor" to "only private ctors", which makes the existing FinalClassCheck rule fire on them (the rule requires final when a class has only private constructors and no descendants). The previous commit addressed FinalClass on 6 classes that were already in that state pre-patch; this commit closes the loop by marking the 18 classes whose new private ctor put them in the same state. No behavior change: every class was already non-extendable in practice (only private constructors). The final keyword just makes the intent explicit at the class declaration and satisfies the FinalClassCheck rule the previous commit otherwise leaves with new violations. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../com/linkedin/datastream/common/AvroMessageEncoderUtil.java | 2 +- .../datastream/common/BrooklinEnvelopeMetadataConstants.java | 2 +- .../linkedin/datastream/common/DatastreamMetadataConstants.java | 2 +- .../java/com/linkedin/datastream/common/ReflectionUtils.java | 2 +- .../datastream/kafka/KafkaDatastreamMetadataConstants.java | 2 +- .../com/linkedin/datastream/metrics/JmxReporterFactory.java | 2 +- .../datastream/connectors/kafka/KafkaConnectorDiagUtils.java | 2 +- .../linkedin/datastream/kafka/KafkaTransportProviderUtils.java | 2 +- .../com/linkedin/datastream/testutil/DatastreamTestUtils.java | 2 +- .../java/com/linkedin/datastream/tools/OptionConstants.java | 2 +- .../main/java/com/linkedin/datastream/tools/OptionUtils.java | 2 +- .../src/main/java/com/linkedin/datastream/common/AvroUtils.java | 2 +- .../src/main/java/com/linkedin/datastream/common/FileUtils.java | 2 +- .../src/main/java/com/linkedin/datastream/common/LogUtils.java | 2 +- .../main/java/com/linkedin/datastream/common/NetworkUtils.java | 2 +- .../main/java/com/linkedin/datastream/common/RetryUtils.java | 2 +- .../linkedin/datastream/common/ThreadTerminationMonitor.java | 2 +- .../java/com/linkedin/datastream/common/TopicPartitionUtil.java | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java b/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java index e283fd3e7..f39c102f6 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/AvroMessageEncoderUtil.java @@ -25,7 +25,7 @@ /** * Utility class to simplify Avro message encoding */ -public class AvroMessageEncoderUtil { +public final class AvroMessageEncoderUtil { private AvroMessageEncoderUtil() { } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java index 0024e7a41..b09238795 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/BrooklinEnvelopeMetadataConstants.java @@ -8,7 +8,7 @@ /** * Constants used in the metadata field of {@link BrooklinEnvelope} */ -public class BrooklinEnvelopeMetadataConstants { +public final class BrooklinEnvelopeMetadataConstants { private BrooklinEnvelopeMetadataConstants() { } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java index 8bbd769f5..ea426541c 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamMetadataConstants.java @@ -8,7 +8,7 @@ /** * Various well known config keys used in datastream metadata. */ -public class DatastreamMetadataConstants { +public final class DatastreamMetadataConstants { private DatastreamMetadataConstants() { } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java b/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java index 3f6fbddce..4fb24fecf 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java @@ -18,7 +18,7 @@ /** * Utility class to simplify usage of Java reflection. */ -public class ReflectionUtils { +public final class ReflectionUtils { private ReflectionUtils() { } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java b/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java index 60128a6ae..ba3cfc21a 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/kafka/KafkaDatastreamMetadataConstants.java @@ -8,7 +8,7 @@ /** * Metadata constants that are specific to Kafka (or Kafka MirrorMaker) datastreams. */ -public class KafkaDatastreamMetadataConstants { +public final class KafkaDatastreamMetadataConstants { private KafkaDatastreamMetadataConstants() { } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java b/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java index 4417d72e4..695895948 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/metrics/JmxReporterFactory.java @@ -21,7 +21,7 @@ * A factory for {@link JmxReporter} objects that generates metrics whose * names are decided according to {@link BrooklinObjectNameFactory}. */ -public class JmxReporterFactory { +public final class JmxReporterFactory { private JmxReporterFactory() { } diff --git a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java index dd16246c4..0f59bd91f 100644 --- a/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java +++ b/datastream-kafka-connector/src/main/java/com/linkedin/datastream/connectors/kafka/KafkaConnectorDiagUtils.java @@ -22,7 +22,7 @@ /** * Utility class for Kafka based connectors */ -public class KafkaConnectorDiagUtils { +public final class KafkaConnectorDiagUtils { private KafkaConnectorDiagUtils() { } diff --git a/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java b/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java index 8c082c475..ba423ab11 100644 --- a/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java +++ b/datastream-kafka/src/main/java/com/linkedin/datastream/kafka/KafkaTransportProviderUtils.java @@ -17,7 +17,7 @@ /** * Utility methods for {@link KafkaTransportProvider} */ -public class KafkaTransportProviderUtils { +public final class KafkaTransportProviderUtils { private KafkaTransportProviderUtils() { } diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java index 3bf778fc5..52bf013fe 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/DatastreamTestUtils.java @@ -27,7 +27,7 @@ /** * Utility class for writing tests that deal with Datastream objects. */ -public class DatastreamTestUtils { +public final class DatastreamTestUtils { private DatastreamTestUtils() { } diff --git a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java index c0ed5e159..7f1cb3c2c 100644 --- a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java +++ b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionConstants.java @@ -8,7 +8,7 @@ /** * String constants for options used with {@link DatastreamRestClientCli} */ -public class OptionConstants { +public final class OptionConstants { private OptionConstants() { } diff --git a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java index 2ab00cd8c..7fb8175c7 100644 --- a/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java +++ b/datastream-tools/src/main/java/com/linkedin/datastream/tools/OptionUtils.java @@ -11,7 +11,7 @@ /** * Utility class for creating command line {@link Option}s */ -public class OptionUtils { +public final class OptionUtils { private OptionUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java index 524c9d02b..304d78741 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/AvroUtils.java @@ -31,7 +31,7 @@ /** * Utility methods for encoding/decoding data into/from Avro. */ -public class AvroUtils { +public final class AvroUtils { private AvroUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java index d19240633..eb36e4a30 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/FileUtils.java @@ -17,7 +17,7 @@ /** * Class that contains the helper utility methods for File system operations. */ -public class FileUtils { +public final class FileUtils { private FileUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java index 0b582df23..278a8493e 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/LogUtils.java @@ -20,7 +20,7 @@ /** * Util class for logging-related methods */ -public class LogUtils { +public final class LogUtils { private LogUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java index 28a9a9cdc..cc35fa371 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/NetworkUtils.java @@ -12,7 +12,7 @@ /** * Class that contains the helper utility methods for Network operations. */ -public class NetworkUtils { +public final class NetworkUtils { private NetworkUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java index 176a75e2c..d18afee3a 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/RetryUtils.java @@ -15,7 +15,7 @@ /** * Utilities for retrying function invocations */ -public class RetryUtils { +public final class RetryUtils { private RetryUtils() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java index a8457e8f0..b62c15cda 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/ThreadTerminationMonitor.java @@ -24,7 +24,7 @@ * reports abnormal terminations and reports them as metric. * However, it doesn't attempt to recover the condition. */ -public class ThreadTerminationMonitor { +public final class ThreadTerminationMonitor { private ThreadTerminationMonitor() { } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java index 09379d3c0..bbf88df5a 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/TopicPartitionUtil.java @@ -11,7 +11,7 @@ /** * Utility class for converting String to TopicPartitions */ -public class TopicPartitionUtil { +public final class TopicPartitionUtil { private TopicPartitionUtil() { }