This is an automated email from the ASF dual-hosted git repository.
chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 4e18307c2b0 MINOR: Update collections with Java 11 equivalents in
generator, examples, and jmh-benchmarks (#21620)
4e18307c2b0 is described below
commit 4e18307c2b0d4f6c1029ae90fb6991aba5e4f230
Author: Maros Orsak <[email protected]>
AuthorDate: Thu Mar 5 19:36:44 2026 +0100
MINOR: Update collections with Java 11 equivalents in generator, examples,
and jmh-benchmarks (#21620)
This PR is one of the upcoming trying to modernise the code of the
Kafka. I have started with smaller modules.
Reviewers: Christo Lolov <[email protected]>, Chia-Ping Tsai
<[email protected]>, Ken Huang <[email protected]>
---
.../java/kafka/examples/ExactlyOnceMessageProcessor.java | 11 +++++------
.../org/apache/kafka/message/ApiMessageTypeGenerator.java | 3 +--
.../src/main/java/org/apache/kafka/message/FieldSpec.java | 5 +----
.../main/java/org/apache/kafka/message/MessageGenerator.java | 5 ++---
.../src/main/java/org/apache/kafka/message/MessageSpec.java | 5 ++---
generator/src/main/java/org/apache/kafka/message/Target.java | 4 ++--
.../kafka/jmh/producer/RecordAccumulatorFlushBenchmark.java | 12 ++++++------
7 files changed, 19 insertions(+), 26 deletions(-)
diff --git
a/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java
b/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java
index d4249526f3b..62f1c8d6762 100644
--- a/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java
+++ b/examples/src/main/java/kafka/examples/ExactlyOnceMessageProcessor.java
@@ -36,15 +36,14 @@ import
org.apache.kafka.common.errors.UnsupportedVersionException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.CountDownLatch;
import static java.time.Duration.ofMillis;
-import static java.util.Collections.emptyList;
-import static java.util.Collections.singleton;
/**
* This class implements a read-process-write application.
@@ -121,7 +120,7 @@ public class ExactlyOnceMessageProcessor extends Thread
implements ConsumerRebal
"processor-group", Optional.of(groupInstanceId),
readCommitted, -1, null).createKafkaConsumer()) {
// called first and once to fence zombies and abort any pending
transaction
producer.initTransactions();
- consumer.subscribe(singleton(inputTopic), this);
+ consumer.subscribe(Set.of(inputTopic), this);
Utils.printOut("Processing new records");
while (!closed && remainingRecords > 0) {
@@ -155,7 +154,7 @@ public class ExactlyOnceMessageProcessor extends Thread
implements ConsumerRebal
} catch (OffsetOutOfRangeException |
NoOffsetForPartitionException e) {
// invalid or no offset found without auto.reset.policy
Utils.printOut("Invalid or no offset found, using latest");
- consumer.seekToEnd(emptyList());
+ consumer.seekToEnd(List.of());
consumer.commitSync();
retries = 0;
} catch (KafkaException e) {
@@ -244,7 +243,7 @@ public class ExactlyOnceMessageProcessor extends Thread
implements ConsumerRebal
if (offsetAndMetadata != null) {
consumer.seek(tp, offsetAndMetadata.offset());
} else {
- consumer.seekToBeginning(Collections.singleton(tp));
+ consumer.seekToBeginning(Set.of(tp));
}
});
retries++;
diff --git
a/generator/src/main/java/org/apache/kafka/message/ApiMessageTypeGenerator.java
b/generator/src/main/java/org/apache/kafka/message/ApiMessageTypeGenerator.java
index 9448c3cf35c..56a978fd812 100644
---
a/generator/src/main/java/org/apache/kafka/message/ApiMessageTypeGenerator.java
+++
b/generator/src/main/java/org/apache/kafka/message/ApiMessageTypeGenerator.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.EnumMap;
import java.util.Iterator;
import java.util.List;
@@ -213,7 +212,7 @@ public final class ApiMessageTypeGenerator implements
TypeClassGenerator {
final Collection<String> listeners;
if (apiData.requestSpec.listeners() == null) {
- listeners = Collections.emptyList();
+ listeners = List.of();
} else {
listeners = apiData.requestSpec.listeners().stream()
.map(RequestListenerType::name)
diff --git a/generator/src/main/java/org/apache/kafka/message/FieldSpec.java
b/generator/src/main/java/org/apache/kafka/message/FieldSpec.java
index a6b8cc62f2b..fcbfc2f8ed3 100644
--- a/generator/src/main/java/org/apache/kafka/message/FieldSpec.java
+++ b/generator/src/main/java/org/apache/kafka/message/FieldSpec.java
@@ -21,9 +21,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
import java.util.Base64;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -87,8 +85,7 @@ public final class FieldSpec {
throw new RuntimeException("You must specify the version of the " +
name + " structure.");
}
- this.fields = Collections.unmodifiableList(fields == null ?
- Collections.emptyList() : new ArrayList<>(fields));
+ this.fields = fields == null ? List.of() : List.copyOf(fields);
this.type = FieldType.parse(Objects.requireNonNull(type));
this.mapKey = mapKey;
this.nullableVersions = Versions.parse(nullableVersions,
Versions.NONE);
diff --git
a/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java
b/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java
index e64f8524823..f235bfa17dc 100644
--- a/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java
+++ b/generator/src/main/java/org/apache/kafka/message/MessageGenerator.java
@@ -36,7 +36,6 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@@ -188,7 +187,7 @@ public final class MessageGenerator {
private static List<TypeClassGenerator> createTypeClassGenerators(String
packageName,
List<String> types) {
- if (types == null) return Collections.emptyList();
+ if (types == null) return List.of();
List<TypeClassGenerator> generators = new ArrayList<>();
for (String type : types) {
switch (type) {
@@ -216,7 +215,7 @@ public final class MessageGenerator {
private static List<MessageClassGenerator>
createMessageClassGenerators(String packageName,
List<String> types) {
- if (types == null) return Collections.emptyList();
+ if (types == null) return List.of();
List<MessageClassGenerator> generators = new ArrayList<>();
for (String type : types) {
switch (type) {
diff --git a/generator/src/main/java/org/apache/kafka/message/MessageSpec.java
b/generator/src/main/java/org/apache/kafka/message/MessageSpec.java
index 5638b4c3dca..332cd3f030c 100644
--- a/generator/src/main/java/org/apache/kafka/message/MessageSpec.java
+++ b/generator/src/main/java/org/apache/kafka/message/MessageSpec.java
@@ -20,7 +20,6 @@ package org.apache.kafka.message;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -56,14 +55,14 @@ public final class MessageSpec {
this.struct = new StructSpec(name, validVersions, deprecatedVersions,
fields);
this.apiKey = apiKey == null ? Optional.empty() : Optional.of(apiKey);
this.type = Objects.requireNonNull(type);
- this.commonStructs = commonStructs == null ? Collections.emptyList() :
+ this.commonStructs = commonStructs == null ? List.of() :
List.copyOf(commonStructs);
// If the struct has no valid versions (the typical use case is to
completely remove support for
// an existing protocol api while ensuring the api key id is not
reused), we configure the spec
// to effectively be empty
if (struct.versions().empty()) {
this.flexibleVersions = Versions.NONE;
- this.listeners = Collections.emptyList();
+ this.listeners = List.of();
this.latestVersionUnstable = false;
} else {
if (flexibleVersions == null) {
diff --git a/generator/src/main/java/org/apache/kafka/message/Target.java
b/generator/src/main/java/org/apache/kafka/message/Target.java
index a43cf2c3e9f..7561da7df96 100644
--- a/generator/src/main/java/org/apache/kafka/message/Target.java
+++ b/generator/src/main/java/org/apache/kafka/message/Target.java
@@ -17,7 +17,7 @@
package org.apache.kafka.message;
-import java.util.Collections;
+import java.util.List;
import java.util.function.Function;
public final class Target {
@@ -63,7 +63,7 @@ public final class Target {
FieldType.ArrayType arrayType = (FieldType.ArrayType) field.type();
FieldSpec elementField = new FieldSpec(field.name() + "Element",
field.versions().toString(),
- Collections.emptyList(),
+ List.of(),
arrayType.elementType().toString(),
false,
Versions.NONE.toString(),
diff --git
a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/producer/RecordAccumulatorFlushBenchmark.java
b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/producer/RecordAccumulatorFlushBenchmark.java
index add8ca935c3..0b47bc36f53 100644
---
a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/producer/RecordAccumulatorFlushBenchmark.java
+++
b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/producer/RecordAccumulatorFlushBenchmark.java
@@ -50,10 +50,10 @@ import org.openjdk.jmh.annotations.Warmup;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -122,12 +122,12 @@ public class RecordAccumulatorFlushBenchmark {
MetadataSnapshot metadataCache = new MetadataSnapshot(
null,
nodes,
- Collections.singletonList(partMetadata),
- Collections.emptySet(),
- Collections.emptySet(),
- Collections.emptySet(),
+ List.of(partMetadata),
+ Set.of(),
+ Set.of(),
+ Set.of(),
null,
- Collections.emptyMap()
+ Map.of()
);
return metadataCache.cluster();
}