Use more macros

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f99223e4
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f99223e4
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f99223e4

Branch: refs/heads/master
Commit: f99223e4a616bbd23bfe1a63f608d7af6dd0c044
Parents: 2b71356
Author: Mikael Ståldal <mikael.stal...@magine.com>
Authored: Sun Jun 19 21:52:27 2016 +0200
Committer: Mikael Ståldal <mikael.stal...@magine.com>
Committed: Sun Jun 19 21:52:27 2016 +0200

----------------------------------------------------------------------
 .../org/apache/logging/log4j/scala/Logger.scala | 16 +++++++--
 .../logging/log4j/scala/LoggerMacro.scala       | 36 +++++++++++++++-----
 .../apache/logging/log4j/scala/LoggerTest.scala | 29 +++++++++++++++-
 .../org/apache/logging/log4j/scala/Logger.scala | 16 +++++++--
 .../logging/log4j/scala/LoggerMacro.scala       | 34 ++++++++++++++----
 .../apache/logging/log4j/scala/LoggerTest.scala | 29 +++++++++++++++-
 6 files changed, 137 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
 
b/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
index 7284f84..182e29a 100644
--- 
a/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
+++ 
b/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
@@ -298,7 +298,8 @@ class Logger(val delegate: ExtendedLogger) {
   def traceEntry(params: Any*): EntryMessage =
   macro LoggerMacro.traceEntryParams
 
-  def traceEntry(message: Message): EntryMessage = delegate.traceEntry(message)
+  def traceEntry(message: Message): EntryMessage =
+  macro LoggerMacro.traceEntryMessage
 
   def traceExit(): Unit = delegate.traceExit()
 
@@ -308,7 +309,8 @@ class Logger(val delegate: ExtendedLogger) {
 
   def traceExit[R](entryMessage: EntryMessage, result: R): R = 
delegate.traceExit(entryMessage, result)
 
-  def traceExit[R](message: Message, result: R): R = 
delegate.traceExit(message, result)
+  def traceExit[R](message: Message, result: R): R =
+  macro LoggerMacro.traceExitMessageResult[R]
 
   def throwing[T <: Throwable](t: T): T = delegate.throwing(t)
 
@@ -362,8 +364,16 @@ class Logger(val delegate: ExtendedLogger) {
     delegate.logMessage(FQCN, level, marker, 
messageFactory.newMessage(message), cause)
   }
 
-  private[scala] def traceEntryWithParams(params: Any*): EntryMessage = {
+  private[scala] def traceEntryParams(params: Any*): EntryMessage = {
     delegate.traceEntry(null, params) // TODO should not do ifEnabled check
   }
 
+  private[scala] def traceEntryMessage(message: Message): EntryMessage = {
+    delegate.traceEntry(message) // TODO should not do ifEnabled check
+  }
+
+  private[scala] def traceExitMessageResult[R](message: Message, result: R): 
Unit = {
+    delegate.traceExit(message, result) // TODO should not do ifEnabled check
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
 
b/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
index a1ebee7..5f119bb 100644
--- 
a/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
+++ 
b/log4j-api-scala_2.10/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
@@ -25,7 +25,7 @@ import scala.reflect.macros.Context
 
 private object LoggerMacro {
 
-  type LoggerContext = Context { type PrefixType = Logger }
+  type LoggerContext = Context {type PrefixType = Logger}
 
 
   def fatalMarkerMsg(c: LoggerContext)(marker: c.Expr[Marker], message: 
c.Expr[Message]) =
@@ -36,7 +36,7 @@ private object LoggerMacro {
 
   def fatalMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: 
c.Expr[AnyRef]) =
     logMarkerObject(c)(c.universe.reify(Level.FATAL), marker, message)
-  
+
   def fatalMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], 
message: c.Expr[Message], cause: c.Expr[Throwable]) =
     logMarkerMsgThrowable(c)(c.universe.reify(Level.FATAL), marker, message, 
cause)
 
@@ -45,7 +45,7 @@ private object LoggerMacro {
 
   def fatalMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], 
message: c.Expr[AnyRef], cause: c.Expr[Throwable]) =
     logMarkerObjectThrowable(c)(c.universe.reify(Level.FATAL), marker, 
message, cause)
-  
+
   def fatalMsg(c: LoggerContext)(message: c.Expr[Message]) =
     logMsg(c)(c.universe.reify(Level.FATAL), message)
 
@@ -249,7 +249,7 @@ private object LoggerMacro {
   def traceObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: 
c.Expr[Throwable]) =
     logObjectThrowable(c)(c.universe.reify(Level.TRACE), message, cause)
 
-  
+
   def logMarkerMsg(c: LoggerContext)(level: c.Expr[Level], marker: 
c.Expr[Marker], message: c.Expr[Message]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) {
@@ -270,7 +270,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, marker.splice, 
message.splice, null)
       }
     )
-  
+
   def logMarkerMsgThrowable(c: LoggerContext)(level: c.Expr[Level], marker: 
c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) {
@@ -291,7 +291,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, marker.splice, 
message.splice, cause.splice)
       }
     )
-  
+
   def logMsg(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message]) 
=
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice)) {
@@ -312,7 +312,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, null, message.splice, null)
       }
     )
-  
+
   def logMsgThrowable(c: LoggerContext)(level: c.Expr[Level], message: 
c.Expr[Message], cause: c.Expr[Throwable]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice)) {
@@ -334,6 +334,7 @@ private object LoggerMacro {
       }
     )
 
+
   def traceEntryParams(c: LoggerContext)(params: c.Expr[Any]*): 
c.Expr[EntryMessage] = {
     import c.universe._
     val isEnabled = Apply(
@@ -347,10 +348,29 @@ private object LoggerMacro {
     )
 
     val log = Apply(
-      Select(c.prefix.tree, newTermName("traceEntryWithParams")),
+      Select(c.prefix.tree, newTermName("traceEntryParams")),
       (params map (_.tree)).toList
     )
     c.Expr[EntryMessage](If(isEnabled, log, reify(null).tree))
   }
 
+
+  def traceEntryMessage(c: LoggerContext)(message: c.Expr[Message]): 
c.Expr[EntryMessage] =
+    c.universe.reify(
+      if (c.prefix.splice.delegate.isEnabled(Level.TRACE, 
AbstractLogger.ENTRY_MARKER, null.asInstanceOf[AnyRef], null)) {
+        c.prefix.splice.traceEntryMessage(message.splice)
+      } else {
+        null
+      }
+    )
+
+  def traceExitMessageResult[R: c.WeakTypeTag](c: LoggerContext)(message: 
c.Expr[Message], result: c.Expr[R]): c.Expr[R] =
+    c.universe.reify(
+      {
+        if (message.splice != null && 
c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, 
message.splice, null)) {
+          c.prefix.splice.traceExitMessageResult(message.splice, result.splice)
+        }
+        result.splice
+      }
+    )
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.10/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.10/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
 
b/log4j-api-scala_2.10/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
index 359281e..3bd4b49 100644
--- 
a/log4j-api-scala_2.10/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
+++ 
b/log4j-api-scala_2.10/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
@@ -40,6 +40,7 @@ class LoggerTest extends FunSuite with Matchers with 
MockitoSugar {
   val objectMsg = Custom(17)
   val cause = new RuntimeException("cause")
   val marker = MarkerManager.getMarker("marker")
+  val result = "foo"
 
   def fixture =
     new {
@@ -452,10 +453,36 @@ class LoggerTest extends FunSuite with Matchers with 
MockitoSugar {
     verify(f.mockLogger).traceEntry()
   }
 
-  test("traceEntry with message") {
+  test("traceEntry enabled with message") {
     val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, 
null.asInstanceOf[AnyRef], null)).thenReturn(true)
     val logger = new Logger(f.mockLogger)
     logger.traceEntry(msg)
     verify(f.mockLogger).traceEntry(eqv(msg))
   }
+
+  test("traceEntry disabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, 
null.asInstanceOf[AnyRef], null)).thenReturn(false)
+    val logger = new Logger(f.mockLogger)
+    logger.traceEntry(msg)
+    verify(f.mockLogger, never).traceEntry(any[Message])
+  }
+
+  test("traceExit enabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, msg, 
null)).thenReturn(true)
+    val logger = new Logger(f.mockLogger)
+    logger.traceExit(msg, result)
+    verify(f.mockLogger).traceExit(eqv(msg), eqv(result))
+  }
+
+  test("traceExit disabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, msg, 
null)).thenReturn(false)
+    val logger = new Logger(f.mockLogger)
+    logger.traceExit(msg, result)
+    verify(f.mockLogger, never).traceExit(any[Message], any[AnyRef])
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
 
b/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
index 7284f84..182e29a 100644
--- 
a/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
+++ 
b/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/Logger.scala
@@ -298,7 +298,8 @@ class Logger(val delegate: ExtendedLogger) {
   def traceEntry(params: Any*): EntryMessage =
   macro LoggerMacro.traceEntryParams
 
-  def traceEntry(message: Message): EntryMessage = delegate.traceEntry(message)
+  def traceEntry(message: Message): EntryMessage =
+  macro LoggerMacro.traceEntryMessage
 
   def traceExit(): Unit = delegate.traceExit()
 
@@ -308,7 +309,8 @@ class Logger(val delegate: ExtendedLogger) {
 
   def traceExit[R](entryMessage: EntryMessage, result: R): R = 
delegate.traceExit(entryMessage, result)
 
-  def traceExit[R](message: Message, result: R): R = 
delegate.traceExit(message, result)
+  def traceExit[R](message: Message, result: R): R =
+  macro LoggerMacro.traceExitMessageResult[R]
 
   def throwing[T <: Throwable](t: T): T = delegate.throwing(t)
 
@@ -362,8 +364,16 @@ class Logger(val delegate: ExtendedLogger) {
     delegate.logMessage(FQCN, level, marker, 
messageFactory.newMessage(message), cause)
   }
 
-  private[scala] def traceEntryWithParams(params: Any*): EntryMessage = {
+  private[scala] def traceEntryParams(params: Any*): EntryMessage = {
     delegate.traceEntry(null, params) // TODO should not do ifEnabled check
   }
 
+  private[scala] def traceEntryMessage(message: Message): EntryMessage = {
+    delegate.traceEntry(message) // TODO should not do ifEnabled check
+  }
+
+  private[scala] def traceExitMessageResult[R](message: Message, result: R): 
Unit = {
+    delegate.traceExit(message, result) // TODO should not do ifEnabled check
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
 
b/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
index 2105ad9..25fc5cf 100644
--- 
a/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
+++ 
b/log4j-api-scala_2.11/src/main/scala/org/apache/logging/log4j/scala/LoggerMacro.scala
@@ -36,7 +36,7 @@ private object LoggerMacro {
 
   def fatalMarkerObject(c: LoggerContext)(marker: c.Expr[Marker], message: 
c.Expr[AnyRef]) =
     logMarkerObject(c)(c.universe.reify(Level.FATAL), marker, message)
-  
+
   def fatalMarkerMsgThrowable(c: LoggerContext)(marker: c.Expr[Marker], 
message: c.Expr[Message], cause: c.Expr[Throwable]) =
     logMarkerMsgThrowable(c)(c.universe.reify(Level.FATAL), marker, message, 
cause)
 
@@ -45,7 +45,7 @@ private object LoggerMacro {
 
   def fatalMarkerObjectThrowable(c: LoggerContext)(marker: c.Expr[Marker], 
message: c.Expr[AnyRef], cause: c.Expr[Throwable]) =
     logMarkerObjectThrowable(c)(c.universe.reify(Level.FATAL), marker, 
message, cause)
-  
+
   def fatalMsg(c: LoggerContext)(message: c.Expr[Message]) =
     logMsg(c)(c.universe.reify(Level.FATAL), message)
 
@@ -249,7 +249,7 @@ private object LoggerMacro {
   def traceObjectThrowable(c: LoggerContext)(message: c.Expr[AnyRef], cause: 
c.Expr[Throwable]) =
     logObjectThrowable(c)(c.universe.reify(Level.TRACE), message, cause)
 
-  
+
   def logMarkerMsg(c: LoggerContext)(level: c.Expr[Level], marker: 
c.Expr[Marker], message: c.Expr[Message]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) {
@@ -270,7 +270,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, marker.splice, 
message.splice, null)
       }
     )
-  
+
   def logMarkerMsgThrowable(c: LoggerContext)(level: c.Expr[Level], marker: 
c.Expr[Marker], message: c.Expr[Message], cause: c.Expr[Throwable]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice, marker.splice)) {
@@ -291,7 +291,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, marker.splice, 
message.splice, cause.splice)
       }
     )
-  
+
   def logMsg(c: LoggerContext)(level: c.Expr[Level], message: c.Expr[Message]) 
=
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice)) {
@@ -312,7 +312,7 @@ private object LoggerMacro {
         c.prefix.splice.logMessage(level.splice, null, message.splice, null)
       }
     )
-  
+
   def logMsgThrowable(c: LoggerContext)(level: c.Expr[Level], message: 
c.Expr[Message], cause: c.Expr[Throwable]) =
     c.universe.reify(
       if (c.prefix.splice.delegate.isEnabled(level.splice)) {
@@ -334,6 +334,7 @@ private object LoggerMacro {
       }
     )
 
+
   def traceEntryParams(c: LoggerContext)(params: c.Expr[Any]*): 
c.Expr[EntryMessage] = {
     import c.universe._
     val isEnabled = Apply(
@@ -347,10 +348,29 @@ private object LoggerMacro {
     )
 
     val log = Apply(
-      Select(c.prefix.tree, newTermName("traceEntryWithParams")),
+      Select(c.prefix.tree, newTermName("traceEntryParams")),
       (params map (_.tree)).toList
     )
     c.Expr[EntryMessage](If(isEnabled, log, reify(null).tree))
   }
 
+
+  def traceEntryMessage(c: LoggerContext)(message: c.Expr[Message]): 
c.Expr[EntryMessage] =
+    c.universe.reify(
+      if (c.prefix.splice.delegate.isEnabled(Level.TRACE, 
AbstractLogger.ENTRY_MARKER, null.asInstanceOf[AnyRef], null)) {
+        c.prefix.splice.traceEntryMessage(message.splice)
+      } else {
+        null
+      }
+    )
+
+  def traceExitMessageResult[R: c.WeakTypeTag](c: LoggerContext)(message: 
c.Expr[Message], result: c.Expr[R]): c.Expr[R] =
+    c.universe.reify(
+      {
+        if (message.splice != null && 
c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, 
message.splice, null)) {
+          c.prefix.splice.traceExitMessageResult(message.splice, result.splice)
+        }
+        result.splice
+      }
+    )
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f99223e4/log4j-api-scala_2.11/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
----------------------------------------------------------------------
diff --git 
a/log4j-api-scala_2.11/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
 
b/log4j-api-scala_2.11/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
index 359281e..3bd4b49 100644
--- 
a/log4j-api-scala_2.11/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
+++ 
b/log4j-api-scala_2.11/src/test/scala/org/apache/logging/log4j/scala/LoggerTest.scala
@@ -40,6 +40,7 @@ class LoggerTest extends FunSuite with Matchers with 
MockitoSugar {
   val objectMsg = Custom(17)
   val cause = new RuntimeException("cause")
   val marker = MarkerManager.getMarker("marker")
+  val result = "foo"
 
   def fixture =
     new {
@@ -452,10 +453,36 @@ class LoggerTest extends FunSuite with Matchers with 
MockitoSugar {
     verify(f.mockLogger).traceEntry()
   }
 
-  test("traceEntry with message") {
+  test("traceEntry enabled with message") {
     val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, 
null.asInstanceOf[AnyRef], null)).thenReturn(true)
     val logger = new Logger(f.mockLogger)
     logger.traceEntry(msg)
     verify(f.mockLogger).traceEntry(eqv(msg))
   }
+
+  test("traceEntry disabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, 
null.asInstanceOf[AnyRef], null)).thenReturn(false)
+    val logger = new Logger(f.mockLogger)
+    logger.traceEntry(msg)
+    verify(f.mockLogger, never).traceEntry(any[Message])
+  }
+
+  test("traceExit enabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, msg, 
null)).thenReturn(true)
+    val logger = new Logger(f.mockLogger)
+    logger.traceExit(msg, result)
+    verify(f.mockLogger).traceExit(eqv(msg), eqv(result))
+  }
+
+  test("traceExit disabled with message") {
+    val f = fixture
+    when(f.mockLogger.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, msg, 
null)).thenReturn(false)
+    val logger = new Logger(f.mockLogger)
+    logger.traceExit(msg, result)
+    verify(f.mockLogger, never).traceExit(any[Message], any[AnyRef])
+  }
+
 }

Reply via email to