Class DefaultWebRequestGateway

All Implemented Interfaces:
Namespaced<WebRequestGateway>, WebRequestGateway, HasLocalHandlers

public class DefaultWebRequestGateway extends AbstractNamespaced<WebRequestGateway> implements WebRequestGateway
Default implementation of the WebRequestGateway interface that delegates requests to a configured GenericGateway, or executes them through a lifecycle-managed native HTTP client when explicitly requested.

It supports sending web requests in both asynchronous (fire-and-forget, future-based) and synchronous (blocking) manners. Proxy execution remains the default and preserves Fluxzero message handling and traceability.

See Also:
  • Constructor Details

    • DefaultWebRequestGateway

      public DefaultWebRequestGateway(GenericGateway delegate)
      Creates a gateway using a default Jackson serializer for opt-in native HTTP request bodies.
      Parameters:
      delegate - gateway used for proxy-routed requests
    • DefaultWebRequestGateway

      public DefaultWebRequestGateway(GenericGateway delegate, Serializer serializer)
      Creates a gateway using the configured application serializer for opt-in native HTTP request bodies.
      Parameters:
      delegate - gateway used for proxy-routed requests
      serializer - serializer used to encode native HTTP request bodies
    • DefaultWebRequestGateway

      public DefaultWebRequestGateway(GenericGateway delegate, Serializer serializer, io.fluxzero.common.application.PropertySource propertySource, MetricsGateway metricsGateway)
      Creates a gateway with an application-scoped versioned redirect default and optional native transport metrics. Passing null as metrics gateway disables automatic native transport metrics.
      Parameters:
      delegate - gateway used for proxy-routed requests
      serializer - serializer used to encode native HTTP request bodies
      propertySource - application property source used to resolve the versioned redirect default
      metricsGateway - metrics gateway, or null when automatic metrics are globally disabled
  • Method Details

    • sendAndForget

      public CompletableFuture<Void> sendAndForget(io.fluxzero.common.Guarantee guarantee, WebRequest... requests)
      Description copied from interface: WebRequestGateway
      Sends one or more web requests without waiting for a response.

      Use this for fire-and-forget scenarios (e.g., async webhook posts).

      Specified by:
      sendAndForget in interface WebRequestGateway
      Parameters:
      guarantee - indicates whether to wait until the request is sent or stored
      requests - the web requests to send
      Returns:
      a future that completes once the requests have been sent or stored
    • send

      public CompletableFuture<WebResponse> send(WebRequest request, WebRequestSettings settings)
      Description copied from interface: WebRequestGateway
      Sends the given web request using given request settings and returns a future that completes with the response.

      Proxy and native HTTP execution require an absolute URL; relative URLs may be handled by a local web handler. Cancelling the returned future for a native request also cancels its active HTTP call or pending retry delay on a best-effort basis.

      Specified by:
      send in interface WebRequestGateway
      Parameters:
      request - the web request to send
      Returns:
      a future completed with the WebResponse
    • sendAndWait

      public WebResponse sendAndWait(WebRequest request, WebRequestSettings settings)
      Description copied from interface: WebRequestGateway
      Sends the given web request using the specified request settings and waits for the response synchronously.

      This method blocks the calling thread until the request is completed or times out.

      Proxy and native HTTP execution require an absolute URL; relative URLs may be handled by a local web handler.

      Specified by:
      sendAndWait in interface WebRequestGateway
      Parameters:
      request - the web request to send
      settings - configuration settings for this request (e.g., timeouts, accepted encodings)
      Returns:
      the received WebResponse
    • createForNamespace

      protected WebRequestGateway createForNamespace(String namespace)
      Specified by:
      createForNamespace in class AbstractNamespaced<WebRequestGateway>
    • forNamespace

      public DefaultWebRequestGateway forNamespace(String namespace)
      Description copied from interface: Namespaced
      Returns the resource scoped to the specified namespace. Passing null selects the namespace configured for this application.
      Specified by:
      forNamespace in interface Namespaced<WebRequestGateway>
      Overrides:
      forNamespace in class AbstractNamespaced<WebRequestGateway>
      Parameters:
      namespace - the namespace to which the returned resource is scoped, or null for the application namespace
      Returns:
      the resource associated with the specified namespace
    • withDelegate

      public DefaultWebRequestGateway withDelegate(GenericGateway delegate)
      Returns a gateway backed by the given proxy delegate and an independently owned native HTTP client.
      Parameters:
      delegate - gateway used for proxy-routed requests
      Returns:
      this gateway if the delegate is unchanged, otherwise a gateway with an independent lifecycle
    • close

      public void close()
      Description copied from interface: WebRequestGateway
      Gracefully shuts down the gateway and releases any associated resources.
      Specified by:
      close in interface WebRequestGateway
      Overrides:
      close in class AbstractNamespaced<WebRequestGateway>