Rocinante – project automation
After the Rocinante project has mastered some basic functionalities of Protocol Buffer, the project automation is now to be improved by a Maven plugin.
Thoughts on agile software development
After the Rocinante project has mastered some basic functionalities of Protocol Buffer, the project automation is now to be improved by a Maven plugin.
The third article on Rocinante finally deals with the interesting part of the protocol. How the parts of a message are encoded into the binary Protocol Buffer representation and decoded again. Rocinante uses a two-stage approach. The basis is formed by a ProtoInputStream and a ProtoOutputStream, in which the basic mechanisms are implemented. For each message a generated Proto class with individual read and write methods is based on this.
In the first article on Project Rocinante, we discussed the processing of Protocol Buffer definition files with CongoCC. In this post we will create the first Java classes based on this definitions.
For a software developer who wants to improve his own skills, it is always helpful to try out new topics. A nice side effect of such small projects is that you always get new material for articles like this one.
With Java 22, the Gatherers (JEP 461) have joined stream processing. Until now, stream processing consisted of three parts: the source, intermediate operations and a terminal operation. While the source and the termination operation were already quite flexible since Java 8, there were few possibilities to break out of the existing set for the intermediate operators.
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.
Spring Boot endpoints can be formulated briefly and concisely. Their return values are automatically converted into suitable responses. Occasionally, the developer has to fall back on the ResponseEntity class as a return value. This is the case, for example, when additional HTTP headers are required, such as the Cache-Control header.
Spring Boot has an excellent error mechanism for REST endpoints. A @RestontrollerAdvice provides handling methods for various types of exception that can occur when processing REST requests. If you are not careful here, you can end up with an unsightly spread of different error message formats.
The article Bug Pattern in Eigenbau showed how easily the Error Prone catalogue can be expanded with your own Bug Patterns. However, it failed to mention what unit tests for such Bug Patterns look like.
The Error Prone library from Google is a useful tool for detecting unnecessary Bug Patterns in your own sources. When converting some of my own libraries to Java 17, the Error Prone checks suddenly stopped working. The problem was quickly identified, but fixing it was a real strain on the developer’s patience..