diff --git a/core/src/main/scala/kafka/admin/ListTopicCommand.scala b/core/src/main/scala/kafka/admin/ListTopicCommand.scala index f91eca2..baeb099 100644 --- a/core/src/main/scala/kafka/admin/ListTopicCommand.scala +++ b/core/src/main/scala/kafka/admin/ListTopicCommand.scala @@ -26,7 +26,7 @@ object ListTopicCommand { def main(args: Array[String]): Unit = { val parser = new OptionParser - val topicOpt = parser.accepts("topic", "REQUIRED: The topic to be deleted.") + val topicOpt = parser.accepts("topic", "REQUIRED: The topic to be listed. Defaults to all existing topics.") .withRequiredArg .describedAs("topic") .ofType(classOf[String]) @@ -55,7 +55,7 @@ object ListTopicCommand { zkClient = new ZkClient(zkConnect, 30000, 30000, ZKStringSerializer) if (topic == "") - topicList = ZkUtils.getChildren(zkClient, ZkUtils.BrokerTopicsPath) + topicList = ZkUtils.getChildren(zkClient, ZkUtils.BrokerTopicsPath).sorted else topicList = List(topic) diff --git a/core/src/main/scala/kafka/api/TopicMetadata.scala b/core/src/main/scala/kafka/api/TopicMetadata.scala index 409de76..f822678 100644 --- a/core/src/main/scala/kafka/api/TopicMetadata.scala +++ b/core/src/main/scala/kafka/api/TopicMetadata.scala @@ -108,6 +108,17 @@ case class PartitionMetadata(partitionId: Int, buffer.putInt(isr.size) isr.foreach(r => buffer.putInt(r.id)) } + + override def toString(): String = { + val partitionMetadataString = new StringBuilder + partitionMetadataString.append("\tpartition " + partitionId) + partitionMetadataString.append("\tleader: " + (if(leader.isDefined) formatBroker(leader.get) else "none")) + partitionMetadataString.append("\treplicas: " + replicas.map(formatBroker).mkString(",")) + partitionMetadataString.append("\tisr: " + isr.map(formatBroker).mkString(",")) + partitionMetadataString.toString() + } + + private def formatBroker(broker: Broker) = broker.id + " (" + broker.host + ":" + broker.port + ")" }