jolshan commented on a change in pull request #9769:
URL: https://github.com/apache/kafka/pull/9769#discussion_r664075804
##########
File path:
clients/src/main/java/org/apache/kafka/clients/admin/DescribeTopicsResult.java
##########
@@ -32,28 +34,87 @@
*/
@InterfaceStability.Evolving
public class DescribeTopicsResult {
- private final Map<String, KafkaFuture<TopicDescription>> futures;
+ private final Map<Uuid, KafkaFuture<TopicDescription>> topicIdFutures;
+ private final Map<String, KafkaFuture<TopicDescription>> nameFutures;
- protected DescribeTopicsResult(Map<String, KafkaFuture<TopicDescription>>
futures) {
- this.futures = futures;
+ protected DescribeTopicsResult(Map<Uuid, KafkaFuture<TopicDescription>>
topicIdFutures, Map<String, KafkaFuture<TopicDescription>> nameFutures) {
+ if (topicIdFutures != null && nameFutures != null)
+ throw new IllegalArgumentException("topicIdFutures and nameFutures
cannot both be specified.");
+ if (topicIdFutures == null && nameFutures == null)
+ throw new IllegalArgumentException("topicIdFutures and nameFutures
cannot both be null.");
+ this.topicIdFutures = topicIdFutures;
+ this.nameFutures = nameFutures;
+ }
+
+ static DescribeTopicsResult ofTopicIds(Map<Uuid,
KafkaFuture<TopicDescription>> topicIdFutures) {
+ return new DescribeTopicsResult(topicIdFutures, null);
+ }
+
+ static DescribeTopicsResult ofTopicNames(Map<String,
KafkaFuture<TopicDescription>> nameFutures) {
+ return new DescribeTopicsResult(null, nameFutures);
+ }
+
+ /**
+ * Use when {@link Admin#describeTopics(TopicCollection,
DescribeTopicsOptions)} used a TopicIdCollection
+ *
+ * @return a map from topic IDs to futures which can be used to check the
status of
+ * individual topics if the request used topic IDs, otherwise
return null.
+ */
+ public Map<Uuid, KafkaFuture<TopicDescription>> topicIdValues() {
+ return topicIdFutures;
}
+ /**
+ * Use when {@link Admin#describeTopics(TopicCollection,
DescribeTopicsOptions)} used a TopicNameCollection
+ *
+ * @return a map from topic names to futures which can be used to check
the status of
+ * individual topics if the request used topic names, otherwise
return null.
+ */
+ public Map<String, KafkaFuture<TopicDescription>> topicNameValues() {
+ return nameFutures;
+ }
+
+
/**
* Return a map from topic names to futures which can be used to check the
status of
* individual topics.
*/
+ @Deprecated
public Map<String, KafkaFuture<TopicDescription>> values() {
- return futures;
+ return nameFutures;
}
/**
* Return a future which succeeds only if all the topic descriptions
succeed.
*/
public KafkaFuture<Map<String, TopicDescription>> all() {
- return KafkaFuture.allOf(futures.values().toArray(new KafkaFuture[0])).
+ return all(nameFutures);
Review comment:
We should deprecate this one too I believe.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]