Package dev.relism.flash.ext.jackson
Class JacksonExtension
java.lang.Object
dev.relism.flash.ext.jackson.JacksonExtension
- All Implemented Interfaces:
FlashExtension
Registers JSON support into the Flash extension layer.
Exposes a Json utility instance in the FlashContext under
Json.class. Any handler or extension can retrieve it via ctx.require(Json.class)
inside onInit() (class-based) or inside FlashExtension.routes(dev.relism.flash.extension.FlashRegistrar<?>, dev.relism.flash.extension.FlashContext) (extensions).
The raw ObjectMapper is also registered under ObjectMapper.class
for extensions that need direct mapper access (e.g. OpenAPI schema generation).
JacksonMiddleware is provided under JacksonMiddleware.class and
exposes opinionated JSON auto-marshalling middleware via JacksonMiddleware.autoJson().
Usage — composition (preferred)
public class MyHandler extends RequestHandler {
private Json json;
@Override protected void onInit() {
json = require(Json.class);
}
public Object handle(Request req, Response res) throws Exception {
MyDto dto = json.body(req, MyDto.class);
return json.write(res, 201, dto);
}
}
Custom mapper
ObjectMapper mapper = JsonMapper.builder()
.addModule(new JavaTimeModule())
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
FlashApp.create(8080)
.install(new JacksonExtension(mapper));
-
Constructor Summary
ConstructorsConstructorDescriptionInstalls with an opinionated defaultJsonMapper: auto-discovers modules on classpath (e.g.JacksonExtension(com.fasterxml.jackson.databind.ObjectMapper mapper) Installs with a fully configured customObjectMapper. -
Method Summary
Modifier and TypeMethodDescriptionautoJson()Opinionated outbound JSON middleware factory.voidprovide(FlashContext ctx) Phase 1 — register services and processors.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface dev.relism.flash.extension.FlashExtension
priority, routes
-
Constructor Details
-
JacksonExtension
public JacksonExtension()Installs with an opinionated defaultJsonMapper: auto-discovers modules on classpath (e.g. Java Time) and writes dates as ISO strings. -
JacksonExtension
public JacksonExtension(com.fasterxml.jackson.databind.ObjectMapper mapper) Installs with a fully configured customObjectMapper.
-
-
Method Details
-
autoJson
Opinionated outbound JSON middleware factory.Use for app/scope-level registration:
JacksonExtension jackson = new JacksonExtension(); app.install(jackson).use(jackson.autoJson()); -
provide
Description copied from interface:FlashExtensionPhase 1 — register services and processors. Safe:FlashContext.provide(java.lang.Class<T>, T),FlashContext.supply(java.lang.Class<T>, java.util.function.Supplier<T>),FlashContext.addAnnotationProcessor(dev.relism.flash.extension.AnnotationProcessor),FlashContext.addRouteListener(dev.relism.flash.extension.RouteListener). Unsafe:FlashContext.require(java.lang.Class<T>)(services not yet resolved).- Specified by:
providein interfaceFlashExtension
-