REST endpoints with filters

Java Bibliotheken

This article is a slightly updated English version of the article “REST Endpunkte mit Filtern”.

In addition to sorting and pagination, filtering is a fairly common action on REST endpoints. In contrast to the first two, however, there is no adequate solution for filtering in the Spring Boot framework. With little effort, however, this can be elegantly implemented with the Spring Boot tools.

Better names for JUnit 5 Test

Java Bibliotheken

The JUnit 5 test library offers a wide range of options for extending the framework and thus simplifying the work of software developers. One of these options is the DisplayNameGenerator, which can be used to modify the generation of test names in the console output. When creating exercises for a course, I was surprised to find that there is a DisplayNameGenerator that replaces underscores with spaces, but none that handles the camel case form. Fortunately, this can be changed.

Eigene DSL mit CongoCC erstellen (2)

Java Bibliotheken

Im ersten Beitrag zum Thema wurde eine einfache DSL zur Verarbeitung von CSV Dateien vorgestellt. In diesem Beitrag soll die DSL um einige weitere Feature ergänzt werden.

Eigene DSL mit CongoCC erstellen

Java Bibliotheken

Für viele Aufgabenbereiche werden keine vollständigen Programmiersprachen benötigen, stattdessen können sogenannte Domain-Specific Languages (DSL) verwendet werden. Eine DSL ist auf eine spezielle Domäne zugeschnitten und Probleme können in ihr sehr spezifisch formuliert werden. Statt eine Anwendung für ein spezielles Problem zu entwickeln, kann also auch eine DSL verwendet werden oder aber auch eine neue DSL für die Domäne entwickelt werden.

CongoCC – der Congo Parser Generator

Java Bibliotheken

Zum Ende des Jahres lässt man all die vielen unerledigten Dinge Revue passieren und versucht noch das eine oder andere abzuarbeiten. Als letzter Beitrag des Jahres 2023 wird deshalb noch CongoCC vorgestellt. Der Congo Parser Generator ist der Nachfolger von JavaCC 21 und dem noch älteren JavaCC. Einige der hier vorgestellten Features existierten bereits in JavaCC 21, aber unter der Haube von CongoCC wurde in der Zwischenzeit eine Menge getan. Mittlerweile glänzt CongoCC mit Contextual Predicates, Context-sensitive Tokenization. Full 32-bit Unicode Support, Code Injection, Include Directive, Up-to-here Marker, Grammars for Java 19, Lua, Python and C#.

Deutsche Drama Numbers validieren

Die deutsche Bundesnetzagentur stellt eine Reihe Drama Numbers für Medienproduktionen bereit. Diese Telefonnummern sind für die Nutzung in Fernsehen, Radio, Broschüren und anderen Medien gedacht, in denen keine tatsächlich genutzten Telefonnummern auftauchen sollten. Der Spider Murphy Gang mag man die Wahl der Telefonnummer +40 69 32168 verzeihen, denn die bestehenden Drama Numbers passen alle nicht in das Versmaß.Eine Drama Number in einem Beispiel zu nutzen ist eine freundliche Geste um niemanden Anrufe durch Witzbolde aufzubürden, andererseits sollte niemand eine Drama Number in ein Pflichtfeld der eigenen Web-Anwendung eingeben können. Daher sollte eine Validierung der Telefonnummer auch die deutschen Drama Numbers erkennen können. Die Telephone Bibliothek bietet solch eine Validierung über die @GermanDramaNumber Annotation.

Java Expressions durch MapStruct Qualifier ersetzen

MapStruct ist eine beliebte Bibliothek um Daten zwischen unterschiedlichen Datentypen zu konvertieren. Für POJO Konvertierungen wird im einfachsten Fall jedes Attribut auf ein gleichnamiges Attribut in der Ziel-Instanz gemapped. In Sonderfällen muss auf die Annotation @Mapping zurückgegriffen werden um eine spezielle Konvertierung zu erzwingen. Häufig werden die nachteiligen Java Expressions genutzt. Die bessere Alternative ist der Einsatz von Qualifiern.

Deutsche Ortsnetzkennzahlen validieren

In diesem Beitrag geht es um eine weitere Ergänzung im kleinen Zoo der Validatoren der Telephone Bibliothek. Bislang existierten Validatoren für die Länderkennzahl und die deutschen Mobilvorwahlen, es fehlte die Validierung der deutschen Ortsnetzkennzahlen. Die Validierung der deutschen Ortsnetzkennzahlen fehlte bislang in der Bibliothek, weil es insgesamt 5200 von ihnen gibt. Dis bisher existierende Validierung für Mobilvorwahlen kümmerte sich nur um 54 Vorwahlen, die mit Hilfe einer einfachen Platzhaltersyntax auf 10 Vergleichswerte reduziert wurden.

IBAN Validierung aus der Schweiz

Die bank-account-validator Bibliothek validiert bislang BIC und IBAN Angaben auf syntaktische Korrektheit. Bei deutschen und österreichischen BIC und IBAN werden die Angaben zusätzlich gegen nationale Bankenlisten geprüft. Eine Liste Schweizer Banken ist von der SIX erhältlich. Basierend auf dieser Liste ist eine erweiterte Validierung von BIC und IBAN für der gesamten DACH Region möglich.

IBAN Validierung aus Österreich

Die bank-account-validator Bibliothek validiert bislang BIC und IBAN Angaben auf syntaktische Korrektheit. Bei deutschen BIC und IBAN werden die Angaben zusätzlich gegen eine Bankenliste der Deutschen Bundesbank geprüft. Damit wird zwar nicht die Existenz der Bankverbindung bewiesen, aber die Korrektheit der Bankangaben innerhalb des BIC und der IBAN.

Erfreulicherweise bietet die Österreichische Nationalbank eine Liste von Banken in Österreich an. Damit kann auch die Validierung von österreichischen Bankangaben verbessert werden. Bislang wird der EASYATW1 als valider österreichische BIC akzeptiert. Dies soll nun verhindert werden.