Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JsonMarker#apply to use an Encoder on a scala object #210

Merged
merged 1 commit into from
Aug 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.github.nafg.cloudlogging.marker

import org.slf4j.Marker

import java.util
import scala.jdk.CollectionConverters._

// based on org.slf4j.helpers.BasicMarker
protected class BasicMarker(name: String, references: Seq[Marker])
extends Marker {
override def getName: String = name
override def add(reference: Marker): Unit =
throw new UnsupportedOperationException
override def hasReferences: Boolean = references.nonEmpty
//noinspection ScalaDeprecation
override def hasChildren: Boolean = hasReferences
override def iterator: util.Iterator[Marker] = references.iterator.asJava
override def remove(referenceToRemove: Marker): Boolean =
throw new UnsupportedOperationException
override def contains(other: Marker): Boolean =
this == other || references.exists(_.contains(other))
override def contains(name: String): Boolean =
this.name == name || references.exists(_.contains(name))
override def equals(obj: Any): Boolean =
if (obj == this)
true
else if (obj == null)
false
else
obj match {
case other: Marker => name == other.getName
case _ => false
}
override def hashCode: Int = name.hashCode
override def toString: String =
getName +
(if (!this.hasReferences) ""
else " [ " + references.map(_.getName).mkString(", ") + " ]")
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
package io.github.nafg.cloudlogging.marker

import scala.jdk.CollectionConverters._

import io.circe.Json
import io.circe.{Encoder, Json}
import org.slf4j.Marker


case class JsonMarker(name: String, data: Json, references: Marker*) extends Marker {
override def getName = name
override def add(reference: Marker): Unit = throw new NotImplementedError
override def remove(reference: Marker) = throw new NotImplementedError
override def hasChildren = hasReferences
override def hasReferences = references.nonEmpty
override def iterator() = references.asJava.iterator()
override def contains(other: Marker) =
this == other || references.exists(_.contains(other))
override def contains(name: String) =
this.name == name || references.exists(_.contains(name))
case class JsonMarker(name: String, data: Json, references: Marker*)
extends BasicMarker(name, references)
object JsonMarker {
def apply[A: Encoder](name: String,
references: Marker*)(data: A): JsonMarker =
JsonMarker(name, Encoder[A].apply(data), references: _*)
}