Class RouterHandler

java.lang.Object
org.forgerock.openig.handler.router.RouterHandler
All Implemented Interfaces:
Handler

public final class RouterHandler extends Object implements Handler
Auto-configured DispatchHandler. It looks for route configuration files (very similar to the usual general config file) in a defined directory (by default it looks in config/routes/).
   
   {
     "name": "Router",
     "type": "Router",
     "config": {
       "directory": "/tmp/routes",
       "defaultHandler": "404NotFound",
       "scanInterval": 2 or "2 seconds"
     }
   }
   
 
Note that scanInterval can be defined in 2 ways :
  • as an integer, which defines the number of seconds. If -1 (or any negative value) is provided, only an initial scan is performed at startup, synchronously.
  • as a duration. If "disabled" or "zero" is provided, only an initial scan is performed at startup, synchronously.
In both cases, the default value is 10 seconds.
Since:
2.2
  • Constructor Details

  • Method Details

    • stop

      public void stop()
      Stops this handler, shutting down and clearing all the managed routes.
    • deploy

      public void deploy(String routeId, String routeName, JsonValue routeConfig) throws RouterHandlerException
      Deploy a route, meaning that it loads it but also stores it in a file.
      Parameters:
      routeId - the id of the route to deploy
      routeName - the name of the route to deploy
      routeConfig - the configuration of the route to deploy
      Throws:
      RouterHandlerException - if the given routeConfig is not valid
    • undeploy

      public JsonValue undeploy(String routeId) throws RouterHandlerException
      Undeploy a route, meaning that it unloads it but also deletes the associated file.
      Parameters:
      routeId - the id of the route to remove
      Returns:
      the configuration of the undeployed route
      Throws:
      RouterHandlerException - if the given routeId is not valid
    • update

      public void update(String routeId, String routeName, JsonValue routeConfig) throws RouterHandlerException
      Update a route.
      Parameters:
      routeId - the id of the route to update
      routeName - the name of the route to update
      routeConfig - the new route's configuration
      Throws:
      RouterHandlerException - if the given routeConfig is not valid
    • handle

      public Promise<Response,NeverThrowsException> handle(Context context, Request request)
      Description copied from interface: Handler
      Returns a Promise representing the asynchronous Response of the given request. If any (asynchronous) processing goes wrong, the promise still contains a Response (probably from the 4xx or 5xx status code family).

      A handler that doesn't hand-off the processing to another downstream handler is responsible for creating the response.

      The returned Promise contains the response returned from the server as-is. This is responsibility of the handler to produce the appropriate error response (404, 500, ...) in case of processing error.

      Note: As of Promise 2.0 implementation, it is not permitted to throw any runtime exception here. Doing so produce unexpected behaviour (most likely a server-side hang of the processing thread).

      Specified by:
      handle in interface Handler
      Parameters:
      context - The request context.
      request - The request.
      Returns:
      A Promise representing the response to be returned to the caller.
    • onChanges

      public void onChanges(org.forgerock.openig.handler.router.FileChangeSet changes)