FreshMarker 3.1.0 Released
I’m excited to announce the release of FreshMarker 3.1.0! This minor version brings some interesting new features for the template engine.
Thoughts on agile software development
I’m excited to announce the release of FreshMarker 3.1.0! This minor version brings some interesting new features for the template engine.
Sometimes an extension starts with a question that sounds unremarkable at first: Can I use the files from an OCI-based file system in a FreshMarker template? FreshMarker File already supports java.nio.file.Path. An OCI file system like Oras Filesystem also returns Path objects. So, in theory, the integration should work. However, during practical testing, I discovered an assumption in my code that works for local paths but not for other file systems: I had converted a Path back to a java.io.File in several places. This investigation led to a general extension of FreshMarker File. The existing Path operations now use Java NIO, and templates can additionally list directories and examine symbolic links.
The new version of Bank Account Validator updates the bank data for Germany, Austria, and Switzerland. CSV processing for Austria has been revised; for Switzerland, the library now uses the current CSV V3 format from SIX and accounts for successor institutions. Corrections to character encoding also ensure that bank names containing umlauts are imported correctly.
An application wants to read a file. However, the file is not located on a hard drive but exists as an artifact in an OCI registry. Does the application therefore need to know how to resolve manifests, query tags, and download blobs?
This is exactly where the ORAS filesystem comes in: It translates the world of OCI artifacts into the familiar interfaces of Java NIO. From a developer’s perspective, the boundary between these two worlds is particularly interesting. A path can be constructed relatively easily. Mapping a remote, content-addressed artifact in such a way that file access remains meaningful requires significantly more decision-making.
In my 2021 post titled „Leitweg ID – Ihre Nummer für die Behörde“, I presented a Java implementation for an identifier that is rarely discussed outside the context of electronic invoicing. The task was straightforward: recognize a Leitweg-ID, extract its components, verify the checksum, and generate a correct text representation.
FreshMarker is a modern Java template engine that offers a clear, type-safe API and a lightweight runtime environment for server-side HTML rendering. This article provides an overview of the FreshMarker Spring Boot Starter. An integration without boilerplate code that integrates FreshMarker into Spring Boot 4 MVC applications, offering automatic configuration, localization-aware template resolution, transparent caching, and a set of clearly defined extension points.
I’m excited to announce the release of FreshMarker 3.0.0! This major version brings significant improvements and modernizations to the template engine.
Some algorithms are real classics and yet nobody really knows them. Day in, day out, everyone is happy about the beautiful wrapping of their text in the word processor, but why does the text actually look so beautiful spread across the lines?
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.
Tunnel constructions are classic waterfall projects in which extensive planning is carried out and then construction can be completed without major changes. There are geological surprises from time to time, but a tunnel plan is, quite literally, set in stone.
Almost every team today runs a container registry: Artifactory, AWS, Azure, GitHub, GitLab, Harbor, or a self-hosted one. However, many use them only for Docker images. An OCI registry, however, can do more. It stores any type of file, versions them using tags, makes them immutable via digests, and handles authentication and permissions. When I was once again faced with the question of where to store my artifacts and how to distribute them, the usual options came to mind. In the end, I didn’t go with any of them. I used the existing registry and ORAS Java.
With the @Schedule annotation, you can very quickly set up recurring tasks in your Spring Boot application. It’s a bit frustrating, though, that you can only choose between two very limited configuration options. Isn’t there more to Spring Boot than that?
Not long ago, I wrote about public parameterless methods for records. Now let’s take it a step further and let a whole host of other methods run wild in our templates. The parameterless methods for records were added for the sake of symmetry. Now we’re going to expand the application with a truly new feature.
In the age of AI, not only does everything happen faster, but you also always have a user by your side who shows you what isn’t quite as it should be yet. An experiment with AI led to a new little feature. But first things first. A long-cherished dream for FreshMarker was brought to life … Read more