2024-09-17
| Security | Upgrade undertow version to 2.3.17.Final (CVE-2024-7885) |
| Improved | Replace deprecated Bucket4J usage with new API |
| Improved | Upgrade dependencies |
2024-06-27
| Security | Upgrade undertow version to 2.3.14.Final (CVE-2024-6162) |
| Improved | Upgrade dependencies |
2024-05-01
| Security | Upgrade guava version to 32.0.1 (CVE-2023-2976 & CVE-2020-8908) |
| Fixed | Force close BlockingHttpExchange |
| Improved | Upgrade dependencies |
2024-03-10
| New | Simplified URL variable |
| Improved | Upgrade dependencies |
2024-01-02
| New | Add ClassMethodUtils class |
| Fixed | Constants PARENTHESIS_OPEN and PARENTHESIS_CLOSE are no longer inverted |
| Improved | Error page (dev mode): display filename & partial content |
| Improved | Upgrade dependencies |
2023-12-05
| Security | Upgrade logback-classic version to 1.4.14 (CVE-2023-6378) |
2023-11-23
| Fixed | Fix SQLDialect detection KO (jOOQ) |
| Fixed | Fix can't override Hibernate dialect |
2023-10-19
| New | Add KryoUtils class |
| New | Add new method ClassResolverUtils::isClassAvailable |
| New | Add new Kryo serializers |
| New | Add MockitoUtils class (spy lambda) |
| Fixed | Application must shutdown on "start" lifecycle failure |
| Fixed | H2 web console fail to start because password not encoded |
| Improved | AbstractCacheEngine now using KryoUtils |
| Improved | Add TypedMap static "constructor" methods |
| Improved | Redis ACL authentication (username/password) |
| Improved | Upgrade dependencies |
2023-09-11
| New | REST Client authentication (API Key, Basic, Bearer) |
| Improved | New constant values: CharConstants.EXCLAMATION_MARK, CharConstants.PIPE, StringConstants.EXCLAMATION_MARK and StringConstants.PIPE |
| Improved | Upgrade dependencies |
2023-07-13
| New | AspectJ |
| New | REST client |
| New | Bucket4J (rate-limiting) |
| New | Add ConfigurationUtils class |
| Improved | Upgrade dependencies |
| Improved | New constant value: CharConstants.TAB and StringConstants.TAB |
2023-16-16
| Improved | Add exception AppLauncherException.ModuleConstructorNotFound |
2023-05-18
| New | Proxyable interface |
| New | H2 web console |
| Fixed | Guice module implementing interface not recognized |
| Improved | Bind automatically interface with single implementation |
| Improved | Updated version of all dependencies |
2023-04-12
| Security | Upgrade Undertow version to 2.3.5 (CVE-2022-4492) |
| New | Conditional feature RunInDevModeConditionalFeature |
| New | Sendmail module |
| New | Sendmail module implementation Apache Commons Email |
| New | Add @CachePut annotation |
| Fixed | Transactional annotation multiple calls |
| Improved | Javadoc |
| Improved | HttpClient is now used instead of raw URL connection (Remote Configuration) |
| Improved | Result: method badRequest(final String content, final String contentType) |
| Improved | Updated version of all dependencies |
2023-02-24
| Fixed | HTTP webserver graceful shutdown not honored |
2023-02-11
| New | Web module can now respond to requests securely via HTTPS |
| New | NotInstance validation constraint |
| New | Utility class DurationUtils |
| Improved | Graceful stop timeout is now a duration (with time unit) |
| Improved | Commercial at "@" constant now available in CharConstants and StringConstants classes |
| Improved | Annotation RequestVariable can now use fallback value |
| Improved | Updated version of all dependencies |
2023-01-07
| Fixed | JavaScript i18n reverse routing name (js_i18n) |
2023-01-02
| New | CUID validator |
| New | Internationalization for JavaScript |
| New | Conditional feature |
| Improved | Http Result methods now accept charset |
| Improved | Rename bindable annotation from @BindClass to @Bindable |
| Improved | Clean thread data (Transactional) |
| Improved | Updated version of all dependencies |
2022-12-05
| New | Guice module prioritisation |
| New | jOOQ module |
| New | Web context path is now customizable (voidframework.web.contextPath) |
| Improved | Deserialization: Unknown enum value to null |
| Improved | Scheduler "run once" mode |
| Improved | Static files/webjars controller: add route name (static_file and static_webjar) |
| Improved | Updated version of all dependencies |
2022-11-14
| Fixed | NullPointerException when requested config is null on FreeMarker |
2022-11-07
| Fixed | NullPointerException if header Accept-Language not provided |
2022-11-07
| Security | Upgrade Jackson Databind version to 2.14.0 (CVE-2022-42003) |
| New | WebSocket support |
| New | Can configure temporary files location (voidframework.web.server.tempFileLocation) |
| New | Mockito annotation support |
| New | CUID: a Collision-resistant Unique ID |
| New | Add HttpHeaderNames class |
| New | Virtual File Storage |
| New | No HTTP request timeout (voidframework.web.server.idleTimeout) |
| Fixed | The abbreviation of "december" is now correct (scheduler) |
| Fixed | "Day of Week" and "Month" can't be zero (Scheduler) |
| Fixed | Redis methods addInList, getFromList and decrement now working correctly |
| Fixed | Force close all InputStream of uploaded files |
| Fixed | Can use template-freemarker without web |
| Improved | Configuration Key/Value from CLI JVM properties (-D flag) |
| Improved | Annotation @RequestVariable can now retrieve array |
| Improved | Move cache annotations to subpackage annotation |
| Improved | Use wrap/unwrap on Memory cache engine |
| Improved | Updated version of all dependencies |
| Improved | Redis parameter connectionTimeout is now a duration |
| Improved | Rename all utility classes |
| Improved | Add new redirection methods on Result |
| Improved | HttpRequestBodyContent::asRaw is now an InputStream |
| Improved | Redis::addInList now return the current list size |
| Improved | ValidationError is now a record |
2022-09-15
| Fixed | The "Modules loaded" log is displayed too early |
| Fixed | Remove unused "GlobalFilterDefinition" interface |
| Improved | Add converter String to Locale (Web). Used to extract Locale from incoming request (route path or query parameter) |
2022-09-05
| Security | Upgrade Undertow version to 2.2.19 (CVE-2022-2053) |
| New | Add SecurityHeadersFilter |
| New | Add unit test JUnit extension and annotation |
| New | Add ability to fetch remote configuration provider & "etcd" remote configuration provider |
| New | Add "http" remote configuration provider |
| New | Add CharConstants & StringConstants classes |
| Improved | Force EntityManagerFactory initialization during boot sequence |
| Improved | Add new Result methods to handle empty content easily |
| Improved | Validation constraints can be grouped |
| Improved | Clean code |
| Improved | Better boolean support (Freemarker / config) |
| Improved | Refactoring module "web" (move files, new constant values, unit tests) |
| Improved | Updated version of all dependencies |
2022-08-02
| Fixed | EntityManagerFactory don't find models on multiple-jars project |
2022-07-24
| Fixed | Error 500 CSRF when POST request render template |
| Improved | Change CSRF signature algorithm to HMACSHA256 |
2022-07-22
| New | Methods on Reflection util class: getAnnotatedField(Object, Class) and getAnnotatedField(Class, Class) |
| New | Configuration keys to define number of I/O and Worker threads (Web) |
| New | Redis (base + cache + healthcheck) |
| New | CSRF token |
| Fixed | Cookie revocation not working |
| Fixed | C3P0/HikariCP settings |
| Fixed | Issue on routes sorting when regex and capture regex are used |
| Fixed | Assets not found when devMode=false |
| Fixed | Hibernate : Models not found when application is compiled |
| Improved | No longer necessary for HealthChecker to be Singleton |
| Improved | Add cache abstraction helper |
| Improved | Session signature key configuration is now required |
| Improved | Rename ApplicationLauncher to VoidApplication |
| Improved | Updated version of all dependencies |
2022-07-08
| New | Ability to retrieve XML body content as Java object |
| Fixed | Removed I18N reference from Hibernate module |
| Fixed | Transactional annotation : rollback not occur on unchecked exception |
| Fixed | Routes are randomly sorted |
| Improved | Cache management : rename the annotation Cache to CacheResult and add CacheRemove |
2022-07-02
Initial release