trait JsonLocal[-A] extends AnyRef
Displays locale specific JSON string for any object.
JsonLocal
is a type class that adds the jsonLocal
extension method
to any object. The method takes an implicit java.util.Locale
defining the
language to use for language specific strings. An implicit implementation
of the JsonLocal trait must exist in scope
for the method to be available.
Example:
val error = Error(MessageBundle("Errors"), "Bad Error") implicit val locale = Locale.ENGLISH error.jsonLocal error.jsonLocal(Locale.GERMAN)
Output:
{"message":"A bad error","code":"BadError"} {"message":"Ein schlimmer Fehler","code":"BadError"}
The jsonLocal
extension method can be defined for any class A
provided
an implementation of JsonLocal[A]
exists implicitly and is in scope. The
code below shows the implementation of JsonLocal[Error]
:
implicit val utilJsonLocalForError: JsonLocal[Error] = new JsonLocal[Error] { def jsonLocal(error: Error)(implicit locale: Locale): String = { error.map.toList.map { case (key, (value, format, _)) => s""""${escape(key)}":${format.jsonLocal(value)}""" } .mkString("{", ",", "}") } }
- A
type for which a language specific JSON string is generated
- Source
- JsonLocal.scala
- Alphabetic
- By Inheritance
- JsonLocal
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def jsonLocal(a: A)(implicit locale: Locale): String
Produces a language specific JSON string for an object
Produces a language specific JSON string for an object
The
jsonLocal
method returns a JSON encoded string for a given object output using the supplied locale. The JSON string is fully escaped. Each class wanting to be able to output itself as JSON must implement this trait for the class type.The method is extended to classes that have a defined
JsonLocal
implementation and is invoked by:// implicit invocation implicit val locale = Locale.GERMAN object.jsonLocal // explicit invocation object.jsonLocal(Locale.GERMAN)
- a
object to show language specific JSON string for
- locale
defining the language to use for the JSON string
- returns
language specific JSON string describing the object
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Documentation for the Axiell Utilities Project
Overview
The Axiell Utilities Project attempts to provide a small library of classes and object applicable to most Axiell developments. The library is not geared towards any one project and so should be useful for new projects as well as existing ones.
The library is based on a few simple principles, namely:
Package structure
The
package consists of a number of utilities, where each utility provides a single piece of functionality.com.axiell.util
Notable utilities are:
Configure
generic configuration reader allowing application settings defined as resources to be interrogated.Error
generic error handling class defining a locale independent error message along with details relating to the context of the error. The context may include an exception and other relevant values.Formatter
retrieves and formats a locale specific string from a specified resource bundle. The formatting is specified in aC
printf style.Implicits
implements implicit methods and classes used to pimp methods onto existing classes (e.g.fold()
method toBoolean
class) and to provide implicit implementations for the JsonLocal and ShowLocal type classes.JsonLocal
type class used to output locale specific JSON structures. Implementations exist for Message and Error.Message
provides a locale independent mechanism for handling strings. The strings for a given locale are stored in resource bundles that are accessed when the message is to be displayed.ShowLocal
type class used to show locale specific strings. Allows Message and Error to be converted to a given language string.Dependencies
The list of dependencies are:
Typesafe Config
a generic configuration file reader. The library is used by theConfigure
class to access settings stored as resources within an application.