Zum Inhalt springen
Anjunar/ DOCS

Properties für APIs

PropertySupport verbindet einen Deskriptor mit seinem Accessor. Das ist der Griff, den eine API braucht, wenn Nutzer Properties im Code benennen: Schemas, Formulare, Filter, Query-Builder.

Eine Property

makeProperty

Das Ergebnis kennt seinen Namen, weiß, ob es schreibbar ist, und liest und schreibt eine Instanz.

property.name
name
property.isWriteable
false
property.get(Person("Ada", 37))
Ada
makeProperty[Settings, String](_.theme).isWriteable
true
scala
val property = PropertySupport.makeProperty[Person, String](_.name) property.get(Person("Ada", 37))
So funktionieren json-mapper-Schemas

EntitySchema.property(_.title) ist ein Inline-Aufruf von makeProperty. Das Schema bekommt Name und Accessor der Property aus dem Selektor, geprüft vom Compiler.

Alle Properties

extractPropertiesWithAccessors

Jede Property eines Typs mit ihrem Accessor, geerbte eingeschlossen.

id
1
createdBy
system
title
Reflection
scala
trait Audited { val createdBy: String = "system" } class Document(val id: String, val title: String) extends Audited val document = Document("1", "Reflection") PropertySupport.extractPropertiesWithAccessors[Document] .filterNot(_.name == "##") // 1.1.4 lists the hash code method as well .foreach(property => println(s"${property.name} = ${property.get(document)}"))