Kalenderspielereien mit Java (3)

Bevor in diesem Beitrag die Initialisierung der Feiertagsklassen aus Teil 1 und Teil 2 besprochen werden, wird noch eine fehlende Feiertagsberechnung nachgereicht. Im Saarland ist der Buß und Bettag ein gesetzlicher Feiertag und er fällt jedes Jahr auf den Mittwoch vor dem 23. November. Die Berechnung erscheint im ersten Moment kompliziert, mit der Java Time … Weiterlesen

Kalenderspielereien mit Java (2)

Im vorherigen Beitrag wurde die Berechnung von festen und beweglichen Feiertagen in Deutschland besprochen. Der Aufruf mit einem Länder Locale gestattet eine Unterscheidung der Feiertage nach Ländern. Leider sind viele Feiertage nicht an Landesgrenzen gebunden, sondern sind regionale Besonderheiten. So existieren neben den bundesweiten Feiertagen eine Reihe von Feiertagen, die nur in einigen Bundesländern oder … Weiterlesen

Defaultwerte für NULL Parameter

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 … Weiterlesen

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 … Weiterlesen

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 … Weiterlesen

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.