Skip to content

Commit 37e9344

Browse files
committed
debugging
1 parent 2d296f7 commit 37e9344

File tree

4 files changed

+66
-35
lines changed

4 files changed

+66
-35
lines changed

src/main/scala/com/campudus/vertx/busmod/ScalaBusMod.scala

+24-6
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,40 @@ trait ScalaBusMod extends MessageHelper with VertxExecutionContext with (Message
1313
override def apply(msg: Message[JsonObject]) = {
1414
val action = msg.body.getString("action")
1515

16+
System.err.println("ja hallo")
17+
1618
val fut: Future[Reply] = try {
17-
receive(msg).applyOrElse(action, {
18-
str: String => Future.failed(new UnknownActionException(action))
19-
})
19+
if (receive(msg).isDefinedAt(action)) {
20+
val res = receive(msg).apply(action)
21+
System.err.println("got sync result:" + res)
22+
Future.successful(res)
23+
} else {
24+
System.err.println("got async...")
25+
asyncReceive(msg).applyOrElse(action, {
26+
str: String =>
27+
System.err.println("unknown action async result!")
28+
Future.failed(new UnknownActionException(action))
29+
})
30+
}
2031
} catch {
2132
// case ex: BusException => Future.failed(ex)
22-
case ex: Throwable => Future.failed(ex)
33+
case ex: Throwable =>
34+
System.err.println("there was an exception!")
35+
Future.failed(ex)
2336
}
2437

25-
fut map { reply => msg.reply(reply.toJson) } recover {
38+
fut map { reply =>
39+
System.err.println("replying back to sender: " + reply.toJson)
40+
msg.reply(reply.toJson)
41+
} recover {
2642
// case x: BusException => msg.reply(new JsonObject().putString("status", "error").putString("message", x.getMessage()).putString("id", x.getId()))
2743
case x =>
44+
System.err.println("got an exception: " + x.getMessage())
2845
x.printStackTrace(System.err)
2946
msg.reply(new JsonObject().putString("status", "error").putString("message", x.getMessage()))
3047
}
3148
}
3249

33-
def receive(msg: org.vertx.scala.core.eventbus.Message[JsonObject]): PartialFunction[String, Future[Reply]]
50+
def receive(msg: Message[JsonObject]): PartialFunction[String, Reply] = Map.empty
51+
def asyncReceive(msg: Message[JsonObject]): PartialFunction[String, Future[Reply]] = Map.empty
3452
}

src/main/scala/com/campudus/vertx/database/ConnectionHandler.scala

+18-11
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,27 @@ import com.campudus.vertx.busmod.ScalaBusMod
1010
import scala.concurrent.Future
1111
import com.campudus.vertx.database.pool.AsyncConnectionPool
1212
import org.vertx.scala.core.Vertx
13+
import com.campudus.vertx.Verticle
1314

14-
class ConnectionHandler(vertx: Vertx, dbType: String, config: Configuration) extends ScalaBusMod {
15+
class ConnectionHandler(verticle: Verticle, dbType: String, config: Configuration) extends ScalaBusMod {
16+
val pool = AsyncConnectionPool(verticle.vertx, dbType, config)
1517

16-
val pool = AsyncConnectionPool(vertx, dbType, config)
17-
18-
override def receive(msg: Message[JsonObject]) = {
19-
case "query" => pool.withConnection({ c: Connection =>
20-
c.sendQuery(msg.body.getString("query")) map { qr =>
21-
qr.rows match {
22-
case Some(resultSet) => Ok(new JsonObject().putString("result", resultSet.head(0).toString))
23-
case None => Error("Nothing returned.")
18+
override def asyncReceive(msg: Message[JsonObject]) = {
19+
case "query" =>
20+
verticle.container.logger.info("got a query")
21+
pool.withConnection({ c: Connection =>
22+
verticle.container.logger.info("got a connection")
23+
c.sendQuery(msg.body.getString("query")) map { qr =>
24+
qr.rows match {
25+
case Some(resultSet) =>
26+
verticle.container.logger.info("got a Some: " + resultSet)
27+
Ok(new JsonObject().putString("result", resultSet.head(0).toString))
28+
case None =>
29+
verticle.container.logger.info("got a None")
30+
Error("Nothing returned.")
31+
}
2432
}
25-
}
26-
})
33+
})
2734
}
2835

2936
def close() = pool.close

src/main/scala/com/campudus/vertx/database/Starter.scala

+21-17
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import org.vertx.scala.core.eventbus.EventBus._
1414

1515
class Starter extends Verticle {
1616

17-
var connection: String = null
18-
var configuration: Configuration = null
1917
var handler: ConnectionHandler = null
2018

2119
override def start(startedResult: org.vertx.scala.core.Future[Void]) = {
@@ -25,23 +23,11 @@ class Starter extends Verticle {
2523
try {
2624
val config = Option(new JsonObject(container.config().toString())).getOrElse(new JsonObject)
2725

28-
connection = config.getString("connection", "postgresql").toLowerCase match {
29-
case "postgresql" => "postgresql"
30-
case "mysql" => "mysql"
31-
case x => throw new IllegalArgumentException("unknown connection type " + x)
32-
}
33-
3426
val address = config.getString("address", "campudus.asyncdb")
27+
val dbType = getDatabaseType(config)
28+
val configuration = getConfiguration(config, dbType)
3529

36-
val host = config.getString("host", "localhost")
37-
val port = config.getInteger("port", defaultPortFor(connection))
38-
val username = config.getString("username", defaultUserFor(connection))
39-
val password = Option(config.getString("password")).orElse(defaultPasswordFor(connection))
40-
val database = Option(config.getString("database")).orElse(defaultDatabaseFor(connection))
41-
42-
configuration = Configuration(username, host, port, password, database)
43-
44-
handler = new ConnectionHandler(vertx, connection, configuration)
30+
handler = new ConnectionHandler(this, dbType, configuration)
4531
vertx.eventBus.registerHandler(address)(handler)
4632

4733
logger.error("Async database module for MySQL and PostgreSQL started with config " + configuration)
@@ -58,6 +44,24 @@ class Starter extends Verticle {
5844
Option(handler).map(_.close)
5945
}
6046

47+
private def getDatabaseType(config: JsonObject) = {
48+
config.getString("connection", "postgresql").toLowerCase match {
49+
case "postgresql" => "postgresql"
50+
case "mysql" => "mysql"
51+
case x => throw new IllegalArgumentException("unknown connection type " + x)
52+
}
53+
}
54+
55+
private def getConfiguration(config: JsonObject, dbType: String) = {
56+
val host = config.getString("host", "localhost")
57+
val port = config.getInteger("port", defaultPortFor(dbType))
58+
val username = config.getString("username", defaultUserFor(dbType))
59+
val password = Option(config.getString("password")).orElse(defaultPasswordFor(dbType))
60+
val database = Option(config.getString("database")).orElse(defaultDatabaseFor(dbType))
61+
62+
Configuration(username, host, port, password, database)
63+
}
64+
6165
private def defaultPortFor(connection: String): Integer = connection match {
6266
case "postgresql" => 5432
6367
case "mysql" => 3306

src/test/scala/com/campudus/test/postgresql/PostgreSQLTest.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ class PostgreSQLTest extends TestVerticle with VertxScalaHelpers {
3030
val p = Promise[JsonObject]
3131
logger.info("sending " + q.encode() + " to " + address)
3232
vertx.eventBus.send(address, q, { reply: Message[JsonObject] =>
33+
logger.info("got a reply: " + reply.body().encode())
3334
p.success(reply.body())
3435
})
3536
p.future
3637
}
3738

3839
private def expectOk(q: JsonObject): Future[JsonObject] = ebSend(q) map { reply =>
39-
logger.error("got reply: " + reply.encode())
4040
assertEquals("ok", reply.getString("status"))
4141
reply
4242
}
@@ -50,6 +50,8 @@ class PostgreSQLTest extends TestVerticle with VertxScalaHelpers {
5050

5151
@Test
5252
def simpleConnection() {
53+
logger.info("started simple connection test-info")
54+
5355
expectOk(query("SELECT 0")) map { reply =>
5456
assertEquals(0, reply.getInteger("result"))
5557
testComplete()

0 commit comments

Comments
 (0)