SimpleVisitor

trait SimpleVisitor[-T, +J] extends Visitor[T, J]

A visitor that throws an error for all the visit methods which it does not define, letting you only define the handlers you care about.

trait Visitor[T, J]
trait AutoCloseable
class Object
trait Matchable
class Any
trait SimpleTo[T]
class CaseR[V]
class SingletonR[T]
trait TaggedFromTo[T]
class Leaf[T]
class Node[T]
trait TaggedTo[T]
class Leaf[T]
class Node[T]
class TupleNTo[V]

Value members

Abstract methods

def expectedMsg: String

Concrete methods

def visitArray(length: Int): ArrVisitor[T, J]
def visitBinary(bytes: Array[Byte], offset: Int, len: Int): J
def visitChar(c: Char): J
def visitExt(tag: Byte, bytes: Array[Byte], offset: Int, len: Int): J
def visitFalse(): J
def visitFloat32(d: Float): J
def visitFloat64(d: Double): J
def visitFloat64String(s: String): J
def visitFloat64StringParts(cs: CharSequence, decIndex: Int, expIndex: Int): J
def visitInt32(i: Int): J
def visitInt64(l: Long): J
def visitNull(): J
def visitObject(length: Int): ObjVisitor[T, J]
def visitString(cs: CharSequence): J
def visitTimestamp(instant: Instant): J
def visitTrue(): J
def visitUInt64(ul: Long): J

Inherited methods

override
def close(): Unit

==Responsibility== Generally, whoever creates the visitor should be responsible for closing it, i.e. not intermediate transform(v: Visitor) methods themselves.

==Responsibility== Generally, whoever creates the visitor should be responsible for closing it, i.e. not intermediate transform(v: Visitor) methods themselves.

==Self Closing== Given that common usage is most often single-valued (e.g. "{}"), rather than multi-valued (e.g. "{} {} {}"), Visitors may self-close (e.g. visitor.map{v => Try(v.close); v)} after a single value to prevent resource leaks, but are encouraged to expose both forms (i.e. single/multiple), if supportable.

==Multiple close() calls/Idempotency== Visitors are encouraged to respond gracefully if close() is called multiple times. If an underlying resource would throw if already closed, this may mean adding a private var isClosed: Boolean field to prevent multiple calls.

Definition Classes
Visitor -> AutoCloseable
Inherited from
Visitor
def map[Z](f: J => Z): Visitor[T, Z]
Inherited from
Visitor
def mapNulls[Z](f: J => Z): Visitor[T, Z]
Inherited from
Visitor