REST heißt HATEOAS

Häufig existieren REST Schnittstellen, die Resourcen im Json Formate zurückliefern, die keinerlei Verknüpfung zu anderen Resourcen besitzen. Schlimmer noch, sie offenbaren interne Werte, damit der Client die Möglichkeit hat, andere Resourcen zu adressieren oder zu manipulieren. Häufig ist es dies der Schlüssel der Resourcen in der Datenbank.

Auf einsamen Pfaden mit Jackson oder wie man mit einem JsonPointer punkten kann

Java Bibliotheken

Immer seltener passiert es, dass ein Entwickler sich mit der Bibliothek Jackson beschäftigen muss. Viele Frameworks, wie etwa Jersey und Spring Boot verwenden die Bibliothek intern zum Mappen zwischen JSON und ihren POJOs. Dabei greifen sie auf die Möglichkeiten des Jackson ObjektMappers zu, unter Angabe einer Klasse und einer JSON Quelle, fertig gefüllte Instanzen dieser Klasse zu erzeugen.

Hin und Her mit MapStruct

Ein neues privates Projekt nimmt langsam Formen an und die ersten Features sind auch schon skizziert. In der Fachdomäne sind einige der Objekte und Rollen identifiziert, u.a. Person, Mitarbeiter, Leitung, Vertretung, Einrichtung, Firma und Geschäftsführung. Notwendig ist eine Persistenzschicht und das Backend soll vom Frontend durch eine REST Schnittstelle getrennt sein. Da sich das Entwickler-Team … Read more

Wir testen, was wir haben und nicht was wir brauchen

Das Zauberwort Code Coverage führt in vielen Projekten zu grotesken Stilblüten bei Unit Tests.
Häufig ist es dem Umstand zu verdanken, nachträglich eine Codebasis mit Tests zu versehen. Entweder, weil die QA Richtlinien es so vorschreiben oder die Entwickler nicht die Vorteile des Test Driven Developments (TDD) verinnerlicht haben.

Optionales einsammeln

Die Verwendung der Optional Klasse für API Rückgabewerte, macht viele Dinge bei der Verwendung einer API sehr viel einfacher. Beispiele dafür gab es ja schon in dem Beitrag Befreit die APIs von Nullen. Manches mal sorgt der Optional als Rückgabewert für Verdruss. Im folgenden Beispiel sollen alle Väter der Personen aus der Liste eingesammelt werden. … Read more

Optionals für Methodenketten

It is a mistake to look too far ahead. Only one link of the chain of destiny can be handled at a time. Winston Churchill Obwohl das Law Of Demeter den folgenden Aufruf zu Recht verteufelt, hat man es, in der holprigen Projektwelt, immer wieder mal mit solchen Verkettungen zu tun. In diesem Beispiel kennt … Read more

Magisches Validieren in Spring Boot

Spricht man mit manchen Kollegen über den Spring Boot Framework, dann erscheint ihnen vieles daran suspekt. Aus einigen wenigen Klassen werden durch ein Dutzend Annotationen an der richtigen Stelle vollwertige REST Schnittstellen.

Vermutlich erinnern die Annotationen an verfluchte Hexenzeichen, die dem markierten Objekt magische Eigenschaften verleihen. Annotationen sind aber nur Konfigurationshinweise für den Framework, damit der eigentliche Anwendungscode nicht zwischen den, ansonsten notwendigen Boilerplate Code, verloren geht.

Du sprechen ANSEL?

Es ist noch nicht so lange her, da lebte die Computer Industrie in einem Sprachwirrwar biblischen Ausmaßes. Als wäre der Turm zu Babel direkt über den Computerterminals zusammengebrochen, ersannen alle Organisationen und Hersteller ihre eigenen Zeichensatzkodierungen.

Einsammeln und portionieren mit Stream Collector

Die Aufgabenstellung klingt dieses mal trivial. Eine Methode wird benötigt, um ein großes Set in viele kleine zu zerlegen. Die Legacy Variante verwendet, eine Methode, die nur auf Listen arbeitet. Daher wird aus dem Set eine List, daraus eine List von List und daraus am Ende eine Collection von Set. Da das ursprüngliche Set, als Endprodukt eines Stream Ausdrucks das Licht der Welt erblickt, wäre eine dazu passende Lösung vorteilhaft.

Enums für die Ewigkeit

Ein schönes Feature der Persistenz unter Java ist das automatische Speichern von Enum-Werten. Wenn nicht weiter spezifiziert, wird der Ordinalwert der Enum Konstante in der Datenbank gespeichert. In unserem Beispiel gäbe es also den Wert 0 für GROUCHO und den Wert 3 für KARL in der Datenbank. Beim Rückmapping wird der Ordinalwert verwendet um wieder … Read more