Defaultwerte für NULL Parameter

Java Bibliotheken

Manche nützliche Erweiterung in der Standard Java Bibliothek entdeckt man erst, wenn man in der API nach etwas gänzlich anderem sucht. Die NULL Wertebehandlung in der Klasse Objects hat seit Java 9 Zuwachs erhalten. Neben dem Objects.requireNonNull existieren nun auch Objects.requireNonNullElse und Objects.requireNonNullElseGet. In der Vergangenheit mussten häufig Guard Clauses verwendet werden, um Parameter auf … Read more

Kalenderspielereien mit Java

“Nichts ist getan, wenn noch etwas zu tun übrig ist.” Carl Friedrich Gauß Hin und wieder muss ein Entwickler überprüfen, ob ein bestimmtes Datum ein Feiertag ist oder nicht. Erstaunlicherweise bieten die Java Standardbibliotheken zum Thema Feiertage recht wenig. Nicht einmal eine Methode zur Osterberechnung ist zu finden. Dabei wäre es doch sehr angenehm ein … Read more

Massentest mit JUnit 5

Immer wieder kommt es vor, dass Softwareentwickler ihren alten Quellcode bearbeiten müssen. Dabei ist der Entwickler mit dem Werk der letzten sechs Wochen immer recht zufrieden. Dinge, die noch nicht älter als sechs Monate sind, werden mit einer oberlehrerhaften Skepsis betrachtet und im Kopf werden eifrig Änderungen notiert, die das frühere Ich vergessen hat. Was älter ist als sechs Monate, wird behandelt, als wäre es von fremder Hand erstellt. Zum einen, weil viele Codeänderungen schon längst vergessen sind, oder weil man nicht akzeptieren will, diesen Schund selbst geschrieben zu haben.

Rest mit Spring Data JPA Projections

Die Entwicklung von Rest Schnittstellen mit Spring Boot wird durch viele Features des Frameworks begünstigt. Insbesondere durch die einfache Umsetzung der Rest Controller mit Hilfe einer Vielzahl von Annotationen und die Persistenz mit Spring Data JPA.

Während die Persistenzschicht mit ihren Repositories auf Entity Klassen arbeitet, werden vom Rest Controller DTOs verwenden. Entities und DTO arbeiten auf der Grundlagen identischer Domänenobjekte, unterscheiden sich aber zwangsläufig durch ihre sehr unterschiedliche Nutzung. So besitzen Entities häufig Attribute zur Speicherung des Änderungsdatums und eines eindeutigen Datenbankschlüssels.

Assertions mit Optionals

Optionals sind ein wahrer Segen in den Java API. Sie reduzieren eine Menge Boiler-Plate Code bei der Behandlung von fehlenden Rückgabewerten auf ein Minimum und verbessern die Semantik ungemein. In Legacy Code findet sich noch häufig folgende Behandlung. Sehr viel einfacher und lesbarer ist die Verwendung eines Optionals als Ruckgabewert. Neben der kompakteren Form hat … Read more

Morden mit Mockito

Einer der wichtigsten Frameworks, um Unit Tests in Java zu schreiben, ist wohl Mockito. Kaum ein Projekt kommt ohne die Möglichkeit aus, Abhängigkeiten in den Testmethoden durch Mock Objekte zu ersetzen.

Leider ist jedes hilfreiche Framework in der Software Entwicklung auch eine Pandora Büchse

Double Array Tries (Teil 4)

In den ersten drei Beiträgen dieser Reihe wurde das Thema Löschen aus einem Double Array Trie immer wieder umgangen. Eine kleine Sünde, die in diesem Beitrag nun endlich ihr Ende findet. Außerdem wird die Einsatzmöglichkeit des Trie erweitert, in dem eine Map Implementierung basierend auf dem Double Array Trie Algorithmus vorgestellt wird.

Stammbaumprüfung mit BPMN

Häufig bleiben interessante Erweiterungen für Anwendungen liegen, weil der Aufwand für die Ablauflogik zu hoch erscheint. Eine solche Erweiterung ist die Automatisierte Stammbaumfreigabe für den Ancestor Rest Service aus dem Beitrag REST in Peace.

Double Array Tries (Teil 3)

Im dritten Beitrag über Double Array Tries wird der Code aus Teil 2 weiter bearbeitet und einige Ergänzungen und Verbesserungen vorgestellt. Um uns am obigen Zitat von Kent Beck zu orientieren, sind nun “make it right” und “make it fast” an der Reihe.

Double Array Tries (Teil 2)

In einem früheren Beitrag wurde die Datenstruktur Double Array Trie (DAT) vorgestellt. Zur schnellen Suche von Wörtern werden diese in einer linearisierten Baumstruktur gespeichert. Die einzelnen Knoten des Baumes werden dabei überlappend in die Liste eingefügt. Enthält ein Knoten Lücken, dann können diese durch Werte anderer Knoten aufgefüllt werden. In diesem Beitrag werden Einfügen und Auslesen der DAT Struktur erläutert.