aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2017-11-10 10:34:15 -0300
committerDiego <diegolparra@gmail.com>2017-11-10 10:34:15 -0300
commit7d2640085293073adf23df0aa268d3c94b7feeb6 (patch)
tree771fc0fdc6c78eeeff935320930a32a3dbe29a6f
parentfdbac7aa95a2103ee823894c44e5fc2f354cbd4a (diff)
downloadKamon-7d2640085293073adf23df0aa268d3c94b7feeb6.tar.gz
Kamon-7d2640085293073adf23df0aa268d3c94b7feeb6.tar.bz2
Kamon-7d2640085293073adf23df0aa268d3c94b7feeb6.zip
Metric::refine with java.util.Map
-rw-r--r--kamon-core/src/main/scala/kamon/metric/Metric.scala27
-rw-r--r--kamon-core/src/main/scala/kamon/metric/Timer.scala11
-rw-r--r--kamon-core/src/main/scala/kamon/package.scala1
3 files changed, 29 insertions, 10 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/Metric.scala b/kamon-core/src/main/scala/kamon/metric/Metric.scala
index 90e5ede7..db5ff9c0 100644
--- a/kamon-core/src/main/scala/kamon/metric/Metric.scala
+++ b/kamon-core/src/main/scala/kamon/metric/Metric.scala
@@ -16,29 +16,29 @@
package kamon
package metric
+import java.time.Duration
import java.util.concurrent.atomic.AtomicReference
+import java.util.concurrent.{ScheduledExecutorService, ScheduledFuture, TimeUnit}
import kamon.metric.InstrumentFactory.InstrumentType
import kamon.metric.InstrumentFactory.InstrumentTypes._
-
-import scala.collection.concurrent.TrieMap
-import java.time.Duration
-import java.util.concurrent.{ScheduledExecutorService, ScheduledFuture, TimeUnit}
-
import org.slf4j.LoggerFactory
+import scala.collection.JavaConverters._
+import scala.collection.concurrent.TrieMap
import scala.util.Try
-
trait Metric[T] {
def name: String
def unit: MeasurementUnit
+ def refine(tags: JTags): T
def refine(tags: Tags): T
def refine(tags: (String, String)*): T
def refine(tag: String, value: String): T
+ def remove(tags: JTags): Boolean
def remove(tags: Tags): Boolean
def remove(tags: (String, String)*): Boolean
def remove(tag: String, value: String): Boolean
@@ -55,17 +55,23 @@ private[kamon] abstract sealed class BaseMetric[T, S](val instrumentType: Instru
private[kamon] val instruments = TrieMap.empty[Tags, T]
protected lazy val baseInstrument: T = instruments.atomicGetOrElseUpdate(Map.empty, createInstrument(Map.empty))
+ override def refine(tags: JTags):T =
+ refine(tags.asScala.toMap)
+
+ override def refine(tags: Map[String, String]): T =
+ instruments.atomicGetOrElseUpdate(tags, createInstrument(tags))
+
override def refine(tag: String, value: String): T = {
val instrumentTags = Map(tag -> value)
instruments.atomicGetOrElseUpdate(instrumentTags, createInstrument(instrumentTags))
}
- override def refine(tags: Map[String, String]): T =
- instruments.atomicGetOrElseUpdate(tags, createInstrument(tags))
-
override def refine(tags: (String, String)*): T =
refine(tags.toMap)
+ override def remove(tags: JTags):Boolean =
+ remove(tags.asScala.toMap)
+
override def remove(tags: Tags): Boolean =
if(tags.nonEmpty) instruments.remove(tags).nonEmpty else false
@@ -141,6 +147,9 @@ private[kamon] final class MinMaxCounterMetricImpl(val name: String, val unit: M
mmCounter
}
+ override def remove(tags: JTags): Boolean =
+ removeAndStopSampler(tags.asScala.toMap)
+
override def remove(tags: Tags): Boolean =
removeAndStopSampler(tags)
diff --git a/kamon-core/src/main/scala/kamon/metric/Timer.scala b/kamon-core/src/main/scala/kamon/metric/Timer.scala
index d3ccb840..74d203a9 100644
--- a/kamon-core/src/main/scala/kamon/metric/Timer.scala
+++ b/kamon-core/src/main/scala/kamon/metric/Timer.scala
@@ -15,7 +15,7 @@
package kamon.metric
-import kamon.Tags
+import kamon.{JTags, Tags}
trait Timer extends Histogram {
def start(): StartedTimer
@@ -61,6 +61,9 @@ private[kamon] final class TimerImpl(val histogram: Histogram) extends Timer {
private[kamon] final class TimerMetricImpl(val underlyingHistogram: HistogramMetric) extends TimerMetric {
+ import scala.collection.JavaConverters._
+
+
override def unit: MeasurementUnit =
underlyingHistogram.unit
@@ -76,6 +79,9 @@ private[kamon] final class TimerMetricImpl(val underlyingHistogram: HistogramMet
override def name: String =
underlyingHistogram.name
+ override def refine(tags: JTags): Timer =
+ refine(tags.asScala.toMap)
+
override def refine(tags: Tags): Timer =
new TimerImpl(underlyingHistogram.refine(tags))
@@ -85,6 +91,9 @@ private[kamon] final class TimerMetricImpl(val underlyingHistogram: HistogramMet
override def refine(tag: String, value: String): Timer =
new TimerImpl(underlyingHistogram.refine(Map(tag -> value)))
+ override def remove(tags: JTags): Boolean =
+ remove(tags.asScala.toMap)
+
override def remove(tags: Tags): Boolean =
underlyingHistogram.remove(tags)
diff --git a/kamon-core/src/main/scala/kamon/package.scala b/kamon-core/src/main/scala/kamon/package.scala
index 274f43f8..c746efa1 100644
--- a/kamon-core/src/main/scala/kamon/package.scala
+++ b/kamon-core/src/main/scala/kamon/package.scala
@@ -24,6 +24,7 @@ import scala.collection.concurrent.TrieMap
package object kamon {
type Tags = Map[String, String]
+ type JTags = java.util.Map[String, String]
/**