Skip to content

Commit 0aeeee4

Browse files
author
Thomas Heslin
committed
Added implicit conversion for filtering servers down to EmbeddedK or EmbeddedZ.
1 parent 4c41672 commit 0aeeee4

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

embedded-kafka/src/main/scala/net/manub/embeddedkafka/EmbeddedKafka.scala

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,7 @@ object EmbeddedKafka extends EmbeddedKafkaSupport {
9797
* Stops all in memory Zookeeper instances, preserving the logs directories.
9898
*/
9999
def stopZooKeeper(): Unit = {
100-
val factories = servers
101-
.filter(_.isInstanceOf[EmbeddedZ])
102-
.asInstanceOf[Seq[EmbeddedZ]]
100+
val factories: Seq[EmbeddedZ] = servers.toFilteredSeq(isEmbeddedZ)
103101

104102
factories
105103
.foreach(_.stop(false))
@@ -111,9 +109,7 @@ object EmbeddedKafka extends EmbeddedKafkaSupport {
111109
* Stops all in memory Kafka instances, preserving the logs directories.
112110
*/
113111
def stopKafka(): Unit = {
114-
val brokers = servers
115-
.filter(_.isInstanceOf[EmbeddedK])
116-
.asInstanceOf[Seq[EmbeddedK]]
112+
val brokers: Seq[EmbeddedK] = servers.toFilteredSeq(isEmbeddedK)
117113

118114
brokers
119115
.foreach(_.stop(false))
@@ -123,12 +119,21 @@ object EmbeddedKafka extends EmbeddedKafkaSupport {
123119

124120
/**
125121
* Returns whether the in memory Kafka and Zookeeper are running.
122+
*
123+
* `brokers` val is required for type information.
126124
*/
127-
def isRunning: Boolean =
128-
servers
129-
.filter(_.isInstanceOf[EmbeddedK])
130-
.asInstanceOf[Seq[EmbeddedK]]
131-
.exists(_.factory.isDefined)
125+
def isRunning: Boolean = {
126+
val brokers: Seq[EmbeddedK] = servers.toFilteredSeq(isEmbeddedK)
127+
brokers.exists(_.factory.isDefined)
128+
}
129+
130+
private def isEmbeddedK(server: EmbeddedServer): Boolean = server.isInstanceOf[EmbeddedK]
131+
private def isEmbeddedZ(server: EmbeddedServer): Boolean = server.isInstanceOf[EmbeddedZ]
132+
133+
implicit class ServerOps[T <: EmbeddedServer](servers: Seq[EmbeddedServer]) {
134+
def toFilteredSeq(implicit filter: EmbeddedServer => Boolean): Seq[T] =
135+
servers.filter(filter).asInstanceOf[Seq[T]]
136+
}
132137
}
133138

134139
sealed trait EmbeddedKafkaSupport {

0 commit comments

Comments
 (0)