Class JacksonExtension

java.lang.Object
dev.relism.flash.ext.jackson.JacksonExtension
All Implemented Interfaces:
dev.relism.flash.extension.FlashExtension

public class JacksonExtension extends Object implements dev.relism.flash.extension.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 from a FlashContext.onReady(Runnable) callback (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

    Constructors
    Constructor
    Description
    Installs with an opinionated default JsonMapper: auto-discovers modules on classpath (e.g.
    JacksonExtension(com.fasterxml.jackson.databind.ObjectMapper mapper)
    Installs with a fully configured custom ObjectMapper.
  • Method Summary

    Modifier and Type
    Method
    Description
    dev.relism.flash.routing.Middleware
    Opinionated outbound JSON middleware factory.
    void
    configure(dev.relism.flash.extension.FlashRegistrar<?> app, dev.relism.flash.extension.FlashContext ctx)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • JacksonExtension

      public JacksonExtension()
      Installs with an opinionated default JsonMapper: 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 custom ObjectMapper.
  • Method Details

    • autoJson

      public dev.relism.flash.routing.Middleware autoJson()
      Opinionated outbound JSON middleware factory.

      Use for app/scope-level registration:

      
       JacksonExtension jackson = new JacksonExtension();
       app.install(jackson).use(jackson.autoJson());
       
    • configure

      public void configure(dev.relism.flash.extension.FlashRegistrar<?> app, dev.relism.flash.extension.FlashContext ctx)
      Specified by:
      configure in interface dev.relism.flash.extension.FlashExtension