diff --git a/index.html b/index.html index 6308dbb..5d50faa 100644 --- a/index.html +++ b/index.html @@ -1 +1,22 @@ -Flash JavaDoc

Flash JavaDoc

No releases yet.

+ + + + + Flash JavaDoc + + + +

Flash — JavaDoc

+

→ Latest

+

All versions

+ + + \ No newline at end of file diff --git a/javadoc/2.0.0/allclasses-index.html b/javadoc/2.0.0/allclasses-index.html new file mode 100644 index 0000000..e88c67a --- /dev/null +++ b/javadoc/2.0.0/allclasses-index.html @@ -0,0 +1,290 @@ + + + + +All Classes and Interfaces (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
Base router contract.
+
+ +
 
+ +
+
Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically.
+
+ +
+
Precompiled, allocation-minimal byte template.
+
+ +
+
Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
+
+ +
+
Pre-compiled byte representations of common HTTP Content-Type values.
+
+ +
+
Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
+
+ +
+
Precompiled error page templates.
+
+ +
+
Semantic execution phases for FlashExtension.priority().
+
+ +
+
Router backed by the fpr-core byte-level state machine.
+
+ +
+
ByteView implementations used on the router and parser hot paths.
+
+ +
+
Mutable composite view: method bytes + path.
+
+ +
 
+ +
 
+ +
 
+ +
+
Global Flash constants and runtime environment flags.
+
+ +
 
+ +
 
+ +
 
+ +
+
Single entry point for Flash.
+
+ +
+
Configuration for a FlashApp instance.
+
+ +
+
Central service registry and boot-time hook coordinator.
+
+ +
+
Two-phase contract for all Flash extensions.
+
+ +
+
Common route-registration surface shared by FlashApp and FlashScope.
+
+ +
+
Scoped builder for namespace-prefixed routes.
+
+ +
+
Shorthand for @Route(method = HttpMethod.GET, path = "…").
+
+ +
+
Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
+
+ +
+
Lazy, zero-copy header access backed directly by the request parser's byte buffer.
+
+ +
+
Runtime exception carrying an HTTP status code.
+
+ +
 
+ +
+
Pre-compiled byte representations of standard HTTP status lines.
+
+ +
+
Thrown at boot time when Flash detects a configuration or registration error.
+
+ +
 
+ +
+
Stateless interceptor applied around a RequestHandler.
+
+ +
+
Lazy streaming multipart/form-data parser.
+
+ +
+
Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
+
+ +
+
One part of a multipart/form-data body produced by Multipart.
+
+ +
+
Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
+
+ +
+
Path parameters captured during routing, stored as byte offsets into the path view.
+
+ +
 
+ +
+
Shorthand for @Route(method = HttpMethod.POST, path = "…").
+
+ +
+
Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
+
+ +
+
Shorthand for @Route(method = HttpMethod.PUT, path = "…").
+
+ +
+
Lazy query parameter access (?key=value&...).
+
+ +
 
+ +
+
Immutable view of an incoming HTTP/1.1 request.
+
+ +
+
Accessor for the HTTP request body.
+
+ +
+
Base class for class-based route handlers.
+
+ +
+
Typed accessors for request parameters.
+
+ +
 
+ +
+
One instance per connection, the buffer is allocated once and reused across keep-alive + requests.
+
+ +
+
HTTP response.
+
+ +
+
HTTP method and path for a class-based RequestHandler.
+
+ +
+
Immutable snapshot of a route captured at registration time.
+
+ +
+
Observer notified once for each route registered on a FlashApp or FlashScope.
+
+ +
+
Boot-time resolution of Route from a handler class (direct @Route or shorthand).
+
+ +
+
Public handle to the underlying HTTP transport.
+
+ +
+
Delegates SimpleHandler.handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
+
+ +
+
Functional interface for handling requests, used by SimpleHandler.
+
+ +
+
Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
+
+
+
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/allpackages-index.html b/javadoc/2.0.0/allpackages-index.html new file mode 100644 index 0000000..2fd15dc --- /dev/null +++ b/javadoc/2.0.0/allpackages-index.html @@ -0,0 +1,87 @@ + + + + +All Packages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/constant-values.html b/javadoc/2.0.0/constant-values.html new file mode 100644 index 0000000..13daa92 --- /dev/null +++ b/javadoc/2.0.0/constant-values.html @@ -0,0 +1,84 @@ + + + + +Constant Field Values (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Constant Field Values

+
+
+

Contents

+ +
+
+

dev.relism.*

+
    +
  • +
    dev.relism.flash.Flash
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final String
    + +
    "5.0.0-dev"
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/copy.svg b/javadoc/2.0.0/copy.svg new file mode 100644 index 0000000..7c46ab1 --- /dev/null +++ b/javadoc/2.0.0/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/javadoc/2.0.0/dev/relism/flash/Flash.Commons.html b/javadoc/2.0.0/dev/relism/flash/Flash.Commons.html new file mode 100644 index 0000000..ad56fcb --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/Flash.Commons.html @@ -0,0 +1,183 @@ + + + + +Flash.Commons (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Flash.Commons

+
+
java.lang.Object +
dev.relism.flash.Flash.Commons
+
+
+
+
Enclosing class:
+
Flash
+
+
+
public static class Flash.Commons +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    + +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Commons

      +
      public Commons()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.CorsConfig.html b/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.CorsConfig.html new file mode 100644 index 0000000..1c140d8 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.CorsConfig.html @@ -0,0 +1,244 @@ + + + + +Flash.Middlewares.CorsConfig (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Flash.Middlewares.CorsConfig

+
+
java.lang.Object +
dev.relism.flash.Flash.Middlewares.CorsConfig
+
+
+
+
Enclosing class:
+
Flash.Middlewares
+
+
+
public static class Flash.Middlewares.CorsConfig +extends Object
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.html b/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.html new file mode 100644 index 0000000..e6a0a9b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/Flash.Middlewares.html @@ -0,0 +1,214 @@ + + + + +Flash.Middlewares (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Flash.Middlewares

+
+
java.lang.Object +
dev.relism.flash.Flash.Middlewares
+
+
+
+
Enclosing class:
+
Flash
+
+
+
public static class Flash.Middlewares +extends Object
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/Flash.html b/javadoc/2.0.0/dev/relism/flash/Flash.html new file mode 100644 index 0000000..a58168d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/Flash.html @@ -0,0 +1,207 @@ + + + + +Flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Flash

+
+
java.lang.Object +
dev.relism.flash.Flash
+
+
+
+
public final class Flash +extends Object
+
Global Flash constants and runtime environment flags. + +

Dev mode

+ Set via JVM property -Dflash.env=dev or environment variable FLASH_ENV=dev. + Checked once at classloading — zero runtime overhead. + +

Dev mode enables: +

    +
  • HTML error pages with full stack traces (default: JSON generic responses in prod)
  • +
  • Template cache disabled in flash-ext-view-thymeleaf
  • +
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      VERSION

      +
      public static final String VERSION
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      commons

      +
      public static final Flash.Commons commons
      +
      +
    • +
    • +
      +

      DEV

      +
      public static final boolean DEV
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/Main.html b/javadoc/2.0.0/dev/relism/flash/Main.html new file mode 100644 index 0000000..ca65584 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/Main.html @@ -0,0 +1,182 @@ + + + + +Main (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Main

+
+
java.lang.Object +
dev.relism.flash.Main
+
+
+
+
public class Main +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Main

      +
      public Main()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/RequestParser.html b/javadoc/2.0.0/dev/relism/flash/RequestParser.html new file mode 100644 index 0000000..25ca759 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/RequestParser.html @@ -0,0 +1,203 @@ + + + + +RequestParser (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestParser

+
+
java.lang.Object +
dev.relism.flash.RequestParser
+
+
+
+
public class RequestParser +extends Object
+
One instance per connection, the buffer is allocated once and reused across keep-alive + requests. Grows on demand (doubling, up to maxHeaderBufferSize). Zero String + allocations during parsing; paths, headers and protocol are exposed as ByteView slices.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RequestParser

      +
      public RequestParser()
      +
      +
    • +
    • +
      +

      RequestParser

      +
      public RequestParser(int maxHeaderBufferSize)
      +
      +
    • +
    • +
      +

      RequestParser

      +
      public RequestParser(int maxHeaderBufferSize, + InetSocketAddress remoteAddress)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/ServerHandle.html b/javadoc/2.0.0/dev/relism/flash/ServerHandle.html new file mode 100644 index 0000000..8070de7 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/ServerHandle.html @@ -0,0 +1,190 @@ + + + + +ServerHandle (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface ServerHandle

+
+
+
+
public interface ServerHandle
+
Public handle to the underlying HTTP transport. Returned by create(dev.relism.flash.extension.FlashConfiguration, dev.relism.flash.routing.AbstractRouter) + so that FlashApp can start and stop the server + without holding a direct reference to the package-private HttpServer.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
     
    +
    void
    + +
    +
    Starts the accept loop on a background platform thread.
    +
    +
    void
    + +
    +
    Starts the accept loop and blocks the calling thread until the server is stopped.
    +
    + + +
    +
    Gracefully stops the server, draining active connections.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      start

      +
      void start()
      +
      Starts the accept loop on a background platform thread. Returns immediately.
      +
      +
    • +
    • +
      +

      startAndBlock

      +
      void startAndBlock()
      +
      Starts the accept loop and blocks the calling thread until the server is stopped. + Suitable for use in main() when no other work is needed after startup.
      +
      +
    • +
    • +
      +

      stop

      + +
      Gracefully stops the server, draining active connections.
      +
      +
    • +
    • +
      +

      create

      +
      static ServerHandle create(FlashConfiguration config, + AbstractRouter router) + throws IOException
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/Multipart.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/Multipart.html new file mode 100644 index 0000000..712c619 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/Multipart.html @@ -0,0 +1,263 @@ + + + + +Multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Multipart

+
+
java.lang.Object +
dev.relism.flash.api.multipart.Multipart
+
+
+
+
public final class Multipart +extends Object
+
Lazy streaming multipart/form-data parser. + +

Reads from body.stream() — the request body is never fully materialised. + Text fields are buffered eagerly on first encounter (they are small by definition). File part + bodies are exposed as zero-copy InputStreams backed directly by the socket stream and + must be consumed before the next call to any scan method. + +


+ Multipart mp = Multipart.of(req);
+
+ // Text fields — buffered eagerly, accessible in any call order
+ String userId = mp.field("userId");
+ String width  = mp.field("width");
+
+ // File parts — zero-copy socket stream; consume before requesting the next file
+ Part avatar = mp.file("avatar");
+ Files.copy(avatar.stream(), destination);
+
+ // Explicit materialization of a file body (opt-in heap allocation)
+ byte[] data = mp.file("doc").materialize();
+
+ // Collect everything at once — eagerly buffers all bodies (accept the memory cost)
+ List<Part> files = mp.parts("files");
+ 
+ +

Scan ordering: field(java.lang.String) and file(java.lang.String) scan forward through the stream. + Parts already passed cannot be re-read. Text fields encountered while scanning toward a file + are buffered silently; file bodies encountered while scanning toward a text field are drained + silently. Use parts() only if you need everything and accept full materialisation. + +

Thread safety: not thread-safe; one instance per request.

+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      of

      +
      public static Multipart of(Request req) + throws IOException
      +
      Creates a parser for request. Uses body.stream() — zero heap allocation.
      +
      +
      Throws:
      +
      IllegalArgumentException - if the request is not multipart or boundary is missing
      +
      IOException - if the initial stream read fails
      +
      +
      +
    • +
    • +
      +

      field

      +
      public String field(String name) + throws IOException
      +
      Returns the text value of the first field named name, or null. + Scans forward; text parts encountered along the way are buffered, file bodies are drained.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    • +
      +

      file

      +
      public Part file(String name) + throws IOException
      +
      Returns the first file part named name, or null. + Scans forward; text parts encountered along the way are buffered, earlier file bodies + are drained. The returned part's stream must be consumed before the next scan call.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    • +
      +

      parts

      +
      public List<Part> parts(String name) + throws IOException
      +
      Returns all parts named name in declaration order. + Forces a full scan; all file bodies are materialised into heap.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    • +
      +

      parts

      +
      public List<Part> parts() + throws IOException
      +
      Returns all parts in declaration order. + Forces a full scan; all file bodies are materialised into heap.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/Part.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/Part.html new file mode 100644 index 0000000..a53c351 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/Part.html @@ -0,0 +1,250 @@ + + + + +Part (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Part

+
+
java.lang.Object +
dev.relism.flash.api.multipart.Part
+
+
+
+
public final class Part +extends Object
+
One part of a multipart/form-data body produced by Multipart. + +

Two internal states: +

+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      name

      +
      public String name()
      +
      Field or file name from Content-Disposition: form-data; name="...".
      +
      +
    • +
    • +
      +

      filename

      +
      public String filename()
      +
      Original filename from filename="...", or null for text fields.
      +
      +
    • +
    • +
      +

      contentType

      +
      public String contentType()
      +
      Content-Type declared in the part headers, or null if absent.
      +
      +
    • +
    • +
      +

      isFile

      +
      public boolean isFile()
      +
      true if this part has a filename attribute (i.e. a file upload).
      +
      +
    • +
    • +
      +

      stream

      +
      public InputStream stream()
      +
      Returns an InputStream over the part body. + For buffered parts: returns a fresh reader each call. + For streaming file parts: returns the raw socket stream — read once only.
      +
      +
    • +
    • +
      +

      materialize

      +
      public byte[] materialize() + throws IOException
      +
      Materialises the body into a byte[]. Result is cached; safe to call repeatedly. + For streaming file parts: triggers a full read from the socket on first call.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    • +
      +

      text

      +
      public String text() + throws IOException
      +
      Decodes the body as UTF-8. Materialises if needed; result is cached. + For streaming file parts: triggers a full read from the socket on first call.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Multipart.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Multipart.html new file mode 100644 index 0000000..f63053c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Multipart.html @@ -0,0 +1,89 @@ + + + + +Uses of Class dev.relism.flash.api.multipart.Multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.api.multipart.Multipart

+
+
Packages that use Multipart
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Part.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Part.html new file mode 100644 index 0000000..efa7008 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/class-use/Part.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.api.multipart.Part (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.api.multipart.Part

+
+
Packages that use Part
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/package-summary.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-summary.html new file mode 100644 index 0000000..ce9a7be --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-summary.html @@ -0,0 +1,102 @@ + + + + +dev.relism.flash.api.multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.api.multipart

+
+
+
package dev.relism.flash.api.multipart
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
    +
    Lazy streaming multipart/form-data parser.
    +
    + +
    +
    One part of a multipart/form-data body produced by Multipart.
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/package-tree.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-tree.html new file mode 100644 index 0000000..acecb53 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-tree.html @@ -0,0 +1,77 @@ + + + + +dev.relism.flash.api.multipart Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.api.multipart

+
+Package Hierarchies: + +
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • dev.relism.flash.api.multipart.Multipart
    • +
    • dev.relism.flash.api.multipart.Part
    • +
    +
  • +
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/api/multipart/package-use.html b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-use.html new file mode 100644 index 0000000..2a2ec50 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/api/multipart/package-use.html @@ -0,0 +1,90 @@ + + + + +Uses of Package dev.relism.flash.api.multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.api.multipart

+
+ +
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Commons.html b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Commons.html new file mode 100644 index 0000000..68726e4 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Commons.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.Flash.Commons (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.Flash.Commons

+
+
Packages that use Flash.Commons
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html new file mode 100644 index 0000000..dca59c9 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html @@ -0,0 +1,114 @@ + + + + +Uses of Class dev.relism.flash.Flash.Middlewares.CorsConfig (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.Flash.Middlewares.CorsConfig

+
+ +
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.html b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.html new file mode 100644 index 0000000..ed0f325 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.Middlewares.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.Flash.Middlewares (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.Flash.Middlewares

+
+
Packages that use Flash.Middlewares
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/Flash.html b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.html new file mode 100644 index 0000000..5fc5344 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/Flash.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.Flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.Flash

+
+No usage of dev.relism.flash.Flash
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/Main.html b/javadoc/2.0.0/dev/relism/flash/class-use/Main.html new file mode 100644 index 0000000..f1940dd --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/Main.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.Main (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.Main

+
+No usage of dev.relism.flash.Main
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/RequestParser.html b/javadoc/2.0.0/dev/relism/flash/class-use/RequestParser.html new file mode 100644 index 0000000..a1f86c1 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/RequestParser.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.RequestParser (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.RequestParser

+
+No usage of dev.relism.flash.RequestParser
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/class-use/ServerHandle.html b/javadoc/2.0.0/dev/relism/flash/class-use/ServerHandle.html new file mode 100644 index 0000000..c5121a3 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/class-use/ServerHandle.html @@ -0,0 +1,88 @@ + + + + +Uses of Interface dev.relism.flash.ServerHandle (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.ServerHandle

+
+
Packages that use ServerHandle
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/HttpException.html b/javadoc/2.0.0/dev/relism/flash/exceptions/HttpException.html new file mode 100644 index 0000000..3ba6afe --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/HttpException.html @@ -0,0 +1,271 @@ + + + + +HttpException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class HttpException

+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
java.lang.RuntimeException +
dev.relism.flash.exceptions.HttpException
+
+
+
+
+
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class HttpException +extends RuntimeException
+
Runtime exception carrying an HTTP status code. Extensions map this to a + structured JSON error response via the global exception handler installed by + flash-ext-jackson. + +

+ throw HttpException.notFound("Blog");
+ throw new HttpException(422, "Validation failed: title is required");
+ 
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      HttpException

      +
      public HttpException(int status, + String message)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/InitializationException.html b/javadoc/2.0.0/dev/relism/flash/exceptions/InitializationException.html new file mode 100644 index 0000000..ef335c8 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/InitializationException.html @@ -0,0 +1,185 @@ + + + + +InitializationException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class InitializationException

+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
java.lang.RuntimeException +
dev.relism.flash.exceptions.InitializationException
+
+
+
+
+
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class InitializationException +extends RuntimeException
+
Thrown at boot time when Flash detects a configuration or registration error. + +

Fail-fast: a clear crash at startup is always preferable to a server that + starts "empty" and silently drops routes.

+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      InitializationException

      +
      public InitializationException(String message)
      +
      +
    • +
    • +
      +

      InitializationException

      +
      public InitializationException(String message, + Throwable cause)
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/HttpException.html b/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/HttpException.html new file mode 100644 index 0000000..7e23f64 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/HttpException.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.exceptions.HttpException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.exceptions.HttpException

+
+
Packages that use HttpException
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/InitializationException.html b/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/InitializationException.html new file mode 100644 index 0000000..5549b5d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/class-use/InitializationException.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.exceptions.InitializationException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.exceptions.InitializationException

+
+No usage of dev.relism.flash.exceptions.InitializationException
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/package-summary.html b/javadoc/2.0.0/dev/relism/flash/exceptions/package-summary.html new file mode 100644 index 0000000..d0f76d9 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/package-summary.html @@ -0,0 +1,123 @@ + + + + +dev.relism.flash.exceptions (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.exceptions

+
+
+
package dev.relism.flash.exceptions
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/package-tree.html b/javadoc/2.0.0/dev/relism/flash/exceptions/package-tree.html new file mode 100644 index 0000000..55549e9 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/package-tree.html @@ -0,0 +1,89 @@ + + + + +dev.relism.flash.exceptions Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.exceptions

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/exceptions/package-use.html b/javadoc/2.0.0/dev/relism/flash/exceptions/package-use.html new file mode 100644 index 0000000..eab50c4 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/exceptions/package-use.html @@ -0,0 +1,86 @@ + + + + +Uses of Package dev.relism.flash.exceptions (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.exceptions

+
+
Packages that use dev.relism.flash.exceptions
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/AnnotationProcessor.html b/javadoc/2.0.0/dev/relism/flash/extension/AnnotationProcessor.html new file mode 100644 index 0000000..b5eee1c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/AnnotationProcessor.html @@ -0,0 +1,157 @@ + + + + +AnnotationProcessor (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface AnnotationProcessor

+
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public interface AnnotationProcessor
+
Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically. + +

Processors are called once per register call, before + the handler is compiled into the router. Returning an empty list is always + valid: processors may also use the call purely for side effects + (e.g. collecting OpenAPI metadata). + +

Register processors via FlashContext.addAnnotationProcessor(dev.relism.flash.extension.AnnotationProcessor).

+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    process(Class<? extends RequestHandler> handlerClass)
    +
     
    +
    +
    +
    +
    +
  • +
+
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/ExtensionPhase.html b/javadoc/2.0.0/dev/relism/flash/extension/ExtensionPhase.html new file mode 100644 index 0000000..0a8538c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/ExtensionPhase.html @@ -0,0 +1,297 @@ + + + + +ExtensionPhase (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class ExtensionPhase

+
+
java.lang.Object +
java.lang.Enum<ExtensionPhase> +
dev.relism.flash.extension.ExtensionPhase
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<ExtensionPhase>, Constable
+
+
+
public enum ExtensionPhase +extends Enum<ExtensionPhase>
+
Semantic execution phases for FlashExtension.priority(). + +

Phase determines the order in which annotation-processor middlewares are injected into + the chain. Lower value = runs earlier (outermost wrapper = first at request time). + +

+ Request ──► EARLY middlewares ──► DEFAULT middlewares ──► LATE middlewares ──► handler
+ 
+ +

Within the same phase, extensions execute in install order (sort is stable). + Raw integers are valid for fine-grained ordering within a phase + (e.g. ExtensionPhase.EARLY.value + 10).

+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    +Enum.EnumDesc<E extends Enum<E>>
    +
    +
  • + +
  • +
    +

    Enum Constant Summary

    +
    Enum Constants
    +
    +
    Enum Constant
    +
    Description
    + +
    +
    Normal application extensions.
    +
    + +
    +
    Security guards, rate limiting — must short-circuit before expensive processing.
    +
    + +
    +
    Observability, logging, diagnostics — must observe after all business logic.
    +
    +
    +
    +
  • + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    final int
    + +
    +
    The integer priority value used for sorting.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the enum constant of this class with the specified name.
    +
    + + +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    +
    +
    + +
    +

    Methods inherited from class java.lang.Object

    +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      EARLY

      +
      public static final ExtensionPhase EARLY
      +
      Security guards, rate limiting — must short-circuit before expensive processing.
      +
      +
    • +
    • +
      +

      DEFAULT

      +
      public static final ExtensionPhase DEFAULT
      +
      Normal application extensions. Default when FlashExtension.priority() is not overridden.
      +
      +
    • +
    • +
      +

      LATE

      +
      public static final ExtensionPhase LATE
      +
      Observability, logging, diagnostics — must observe after all business logic.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      value

      +
      public final int value
      +
      The integer priority value used for sorting.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static ExtensionPhase[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static ExtensionPhase valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashApp.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashApp.html new file mode 100644 index 0000000..95ee738 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashApp.html @@ -0,0 +1,341 @@ + + + + +FlashApp (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FlashApp

+
+
java.lang.Object +
dev.relism.flash.extension.FlashRegistrar<FlashApp> +
dev.relism.flash.extension.FlashApp
+
+
+
+
+
public final class FlashApp +extends FlashRegistrar<FlashApp>
+
Single entry point for Flash. Owns one flat FastPathRouterImpl — + all routes (app-level and scoped) compile into a single FSM at startup. + +

+ FlashApp.create(8080)
+     .install(new JacksonExtension())
+     .use(cors)
+     .get("/ping",    (req, res) -> "pong")
+     .get("/secured", (req, res) -> user(), oidc.protect())
+     .scan("dev.example.handlers")
+     .mount("/api", scope -> scope.get("/health", (req, res) -> "ok"))
+     .startAndBlock();   // blocks main thread
+ 
+ +

Startup sequence (both start() and startAndBlock())

+
    +
  1. Extensions sorted by FlashExtension.priority() — lower first.
  2. +
  3. All FlashExtension.provide(dev.relism.flash.extension.FlashContext) — register services, processors, listeners.
  4. +
  5. FlashContext.resolveAll() — topo-sort, cycle detection.
  6. +
  7. All FlashExtension.routes(dev.relism.flash.extension.FlashRegistrar<?>, dev.relism.flash.extension.FlashContext) — routes registered, services available.
  8. +
  9. Compile all routes into one flat FSM — zero prefix scanning at runtime.
  10. +
  11. Accept loop started.
  12. +
+ +

Default error handlers

+ Dev mode (-Dflash.env=dev): rich HTML with stack traces. + Prod mode (default): generic JSON — no internal details leaked. + Override via onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler) / onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler).
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashConfiguration.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashConfiguration.html new file mode 100644 index 0000000..2903266 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashConfiguration.html @@ -0,0 +1,163 @@ + + + + +FlashConfiguration (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FlashConfiguration

+
+
java.lang.Object +
dev.relism.flash.extension.FlashConfiguration
+
+
+
+
public class FlashConfiguration +extends Object
+
Configuration for a FlashApp instance. + +

+ // Minimal — port only
+ FlashApp.create(8080);
+
+ // Full control
+ FlashApp.create(FlashConfiguration.builder()
+         .port(8080)
+         .host("127.0.0.1")
+         .maxHeaderBufferSize(128 * 1024)
+         .build());
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      FlashConfiguration

      +
      public FlashConfiguration()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashContext.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashContext.html new file mode 100644 index 0000000..af977cc --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashContext.html @@ -0,0 +1,304 @@ + + + + +FlashContext (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FlashContext

+
+
java.lang.Object +
dev.relism.flash.extension.FlashContext
+
+
+
+
public class FlashContext +extends Object
+
Central service registry and boot-time hook coordinator. + +

Every handler, extension, and scope shares one (or a child of one) FlashContext. + Three capabilities: +

    +
  1. Service registryprovide(java.lang.Class<T>, T)/supply(java.lang.Class<T>, java.util.function.Supplier<T>)/require(java.lang.Class<T>)/find(java.lang.Class<T>).
  2. +
  3. Annotation processors — middleware injection from handler annotations at boot.
  4. +
  5. Route listeners — boot-time observation of the route graph.
  6. +
+ +

Eager vs lazy registration

+ + +

A child context (via child()) inherits parent services and processors. + Services provided on the child are scoped and invisible to the parent.

+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      FlashContext

      +
      public FlashContext()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      child

      +
      public FlashContext child()
      +
      Creates a child context that inherits this context's services and processors.
      +
      +
    • +
    • +
      +

      provide

      +
      public <T> void provide(Class<T> type, + T instance)
      +
      Registers an already-constructed instance under type.
      +
      +
    • +
    • +
      +

      supply

      +
      public <T> void supply(Class<T> type, + Supplier<T> factory)
      +
      Registers a lazy factory for type. The factory runs once at + resolveAll() time (or on the first require(java.lang.Class<T>) call for this type) + and may call require(java.lang.Class<T>) for its own dependencies — topological order + is resolved automatically. + +
      
      + ctx.supply(JwtValidator.class, () ->
      +     new JwtValidator(ctx.require(OidcProviderMetadata.class).jwksUri()));
      + 
      +
      +
    • +
    • +
      +

      require

      +
      public <T> T require(Class<T> type)
      +
      Returns the service for type. Checks own scope first, then parent chain. + Lazy-registered types are resolved on first access. Circular dependencies throw + IllegalStateException with the full cycle path.
      +
      +
      Throws:
      +
      IllegalStateException - if the service is not found anywhere in the context chain
      +
      +
      +
    • +
    • +
      +

      find

      +
      public <T> Optional<T> find(Class<T> type)
      +
      Returns the service for type, or empty if not found in this scope or any parent.
      +
      +
    • +
    • +
      +

      optional

      +
      public <T> Optional<T> optional(Class<T> type)
      +
      Alias for find(java.lang.Class<T>) — prefer when semantics are "this may or may not exist".
      +
      +
    • +
    • +
      +

      addAnnotationProcessor

      +
      public void addAnnotationProcessor(AnnotationProcessor processor)
      +
      Registers an AnnotationProcessor. Processors run once per class-based handler at boot.
      +
      +
    • +
    • +
      +

      addRouteListener

      +
      public void addRouteListener(RouteListener listener)
      +
      Registers a boot-time RouteListener. Zero overhead on the request hot-path.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashExtension.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashExtension.html new file mode 100644 index 0000000..03a0d0b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashExtension.html @@ -0,0 +1,221 @@ + + + + +FlashExtension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface FlashExtension

+
+
+
+
public interface FlashExtension
+
Two-phase contract for all Flash extensions. + +

Extension lifecycle inside FlashApp.start(): +

    +
  1. Extensions are sorted by priority() — lower value runs first.
  2. +
  3. Provide phaseprovide(FlashContext) is called for all + installed extensions. Use this phase to register services, annotation processors, + and route listeners. Never call FlashContext.require(java.lang.Class<T>) here.
  4. +
  5. Context resolution — FlashContext.resolveAll() performs topological + resolution of lazy suppliers. Circular or missing dependencies fail here with + a clear message before any request is served.
  6. +
  7. Routes phaseroutes(FlashRegistrar, FlashContext) is called for + all extensions. All services are resolved; FlashContext.require(java.lang.Class<T>) is safe.
  8. +
+ +

Priority and middleware ordering

+ priority() controls the order annotation processors are registered, which + determines the annotation-layer middleware chain position: +
+ Request ──► EARLY processors' mw ──► DEFAULT processors' mw ──► LATE processors' mw ──► handler
+ 
+ Use ExtensionPhase constants for semantic ordering: +

+ @Override public int priority() { return ExtensionPhase.EARLY.value; }
+ 
+ +

Example

+

+ public class MetricsExtension implements FlashExtension {
+
+     @Override public int priority() { return ExtensionPhase.LATE.value; }
+
+     @Override
+     public void provide(FlashContext ctx) {
+         ctx.provide(MetricsRegistry.class, new PromMetricsRegistry());
+     }
+
+     @Override
+     public void routes(FlashRegistrar<?> app, FlashContext ctx) {
+         app.get("/metrics", (req, res) -> ctx.require(MetricsRegistry.class).scrape());
+     }
+ }
+ 
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    default int
    + +
    +
    Execution priority.
    +
    +
    default void
    + +
    +
    Phase 1 — register services and processors.
    +
    +
    default void
    + +
    +
    Phase 2 — register routes.
    +
    +
    +
    +
    +
    +
  • +
+
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashRegistrar.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashRegistrar.html new file mode 100644 index 0000000..dde8250 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashRegistrar.html @@ -0,0 +1,407 @@ + + + + +FlashRegistrar (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FlashRegistrar<SELF extends FlashRegistrar<SELF>>

+
+
java.lang.Object +
dev.relism.flash.extension.FlashRegistrar<SELF>
+
+
+
+
Type Parameters:
+
SELF - concrete registrar type — enables fluent chaining without casting
+
+
+
Direct Known Subclasses:
+
FlashApp, FlashScope
+
+
+
public abstract class FlashRegistrar<SELF extends FlashRegistrar<SELF>> +extends Object
+
Common route-registration surface shared by FlashApp and FlashScope. + +

All route methods register immediately — no deferred .with() call. + Middleware is passed as a varargs third argument: + +


+ app.get("/ping",    (req, res) -> "pong")
+ app.get("/secured", (req, res) -> user(), oidc.protect())
+ app.get("/admin",   handler, oidc.requireRole("admin"), rateLimiter)
+ 
+ +

FlashExtension.routes(dev.relism.flash.extension.FlashRegistrar<?>, dev.relism.flash.extension.FlashContext) receives a FlashRegistrar<?> for route + registration. Extension installation (install()) is only available on + FlashApp — scoped install is intentionally unsupported.

+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/FlashScope.html b/javadoc/2.0.0/dev/relism/flash/extension/FlashScope.html new file mode 100644 index 0000000..3f720f6 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/FlashScope.html @@ -0,0 +1,216 @@ + + + + +FlashScope (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FlashScope

+
+
java.lang.Object +
dev.relism.flash.extension.FlashRegistrar<FlashScope> +
dev.relism.flash.extension.FlashScope
+
+
+
+
+
public final class FlashScope +extends FlashRegistrar<FlashScope>
+
Scoped builder for namespace-prefixed routes. Pure syntactic sugar — + does not own a router. Routes merge into FlashApp's single flat router + at FlashApp.start(). + +

+ app.mount("/api", scope -> {
+     scope.use(authMiddleware);
+     scope.get("/health", (req, res) -> "ok");                    // → GET /api/health
+     scope.get("/users",  (req, res) -> "...", rateLimiter);      // → GET /api/users
+     scope.scan("dev.example.api.handlers");
+ });
+ 
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/RouteEvent.html b/javadoc/2.0.0/dev/relism/flash/extension/RouteEvent.html new file mode 100644 index 0000000..2bb60e0 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/RouteEvent.html @@ -0,0 +1,373 @@ + + + + +RouteEvent (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Record Class RouteEvent

+
+
java.lang.Object +
java.lang.Record +
dev.relism.flash.extension.RouteEvent
+
+
+
+
+
Record Components:
+
method - HTTP method for this route
+
path - full path as declared (including namespace prefix for scoped routes)
+
namespace - namespace prefix of the router that owns this route ("/" for root)
+
routerType - simple class name of the owning router implementation
+
handlerClass - concrete handler class, or null for anonymous lambda handlers
+
middlewareChain - ordered middleware classes, outermost first
+
+
+
public record RouteEvent(HttpMethod method, String path, String namespace, String routerType, Class<?> handlerClass, List<Class<? extends Middleware>> middlewareChain) +extends Record
+
Immutable snapshot of a route captured at registration time. + +

Emitted by FlashApp and FlashScope to every registered + RouteListener before the route is compiled into the routing engine. + All information is derived automatically — no annotations or declarations + are required from the developer. + +

Middleware chain

+ middlewareChain lists the Middleware classes outermost-first: +
    +
  1. Router-level middlewares (set on the router constructor)
  2. +
  3. Annotation-injected middlewares (e.g. from @Authenticated)
  4. +
  5. Handler-level explicit middlewares (passed inline: app.get(path, h, mw...))
  6. +
+ +

Handler abstraction chain

+ Walk handlerClass upward via Class.getSuperclass() to reconstruct + the full inheritance chain (e.g. EditPostPageHandler → HtmlHandler → RequestHandler). + Read Class.getAnnotations() on each level to discover declared pointcuts + (@Authenticated, @RolesAllowed, @Route/@GET, etc.).
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RouteEvent

      +
      public RouteEvent(HttpMethod method, + String path, + String namespace, + String routerType, + Class<?> handlerClass, + List<Class<? extends Middleware>> middlewareChain)
      +
      Creates an instance of a RouteEvent record class.
      +
      +
      Parameters:
      +
      method - the value for the method record component
      +
      path - the value for the path record component
      +
      namespace - the value for the namespace record component
      +
      routerType - the value for the routerType record component
      +
      handlerClass - the value for the handlerClass record component
      +
      middlewareChain - the value for the middlewareChain record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      method

      +
      public HttpMethod method()
      +
      Returns the value of the method record component.
      +
      +
      Returns:
      +
      the value of the method record component
      +
      +
      +
    • +
    • +
      +

      path

      +
      public String path()
      +
      Returns the value of the path record component.
      +
      +
      Returns:
      +
      the value of the path record component
      +
      +
      +
    • +
    • +
      +

      namespace

      +
      public String namespace()
      +
      Returns the value of the namespace record component.
      +
      +
      Returns:
      +
      the value of the namespace record component
      +
      +
      +
    • +
    • +
      +

      routerType

      +
      public String routerType()
      +
      Returns the value of the routerType record component.
      +
      +
      Returns:
      +
      the value of the routerType record component
      +
      +
      +
    • +
    • +
      +

      handlerClass

      +
      public Class<?> handlerClass()
      +
      Returns the value of the handlerClass record component.
      +
      +
      Returns:
      +
      the value of the handlerClass record component
      +
      +
      +
    • +
    • +
      +

      middlewareChain

      +
      public List<Class<? extends Middleware>> middlewareChain()
      +
      Returns the value of the middlewareChain record component.
      +
      +
      Returns:
      +
      the value of the middlewareChain record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/RouteListener.html b/javadoc/2.0.0/dev/relism/flash/extension/RouteListener.html new file mode 100644 index 0000000..9616dcb --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/RouteListener.html @@ -0,0 +1,163 @@ + + + + +RouteListener (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface RouteListener

+
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public interface RouteListener
+
Observer notified once for each route registered on a FlashApp or FlashScope. + +

Register via FlashContext.addRouteListener(dev.relism.flash.extension.RouteListener). The listener is called + once per route at boot time, before the route is handed to the routing engine. + There is zero overhead on the request hot-path. + +

Intended for extensions that need to introspect the route graph (e.g. a route viewer, + OpenAPI schema builder, etc.) without polluting the routing or middleware infrastructure.

+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
    +
    Called once for every registered route, in registration order.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      onRoute

      +
      void onRoute(RouteEvent event)
      +
      Called once for every registered route, in registration order.
      +
      +
      Parameters:
      +
      event - immutable snapshot of the route's metadata at registration time
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/AnnotationProcessor.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/AnnotationProcessor.html new file mode 100644 index 0000000..5dd9770 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/AnnotationProcessor.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.AnnotationProcessor (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.extension.AnnotationProcessor

+
+
Packages that use AnnotationProcessor
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/ExtensionPhase.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/ExtensionPhase.html new file mode 100644 index 0000000..497e7e3 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/ExtensionPhase.html @@ -0,0 +1,95 @@ + + + + +Uses of Enum Class dev.relism.flash.extension.ExtensionPhase (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
dev.relism.flash.extension.ExtensionPhase

+
+
Packages that use ExtensionPhase
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashApp.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashApp.html new file mode 100644 index 0000000..388ccb6 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashApp.html @@ -0,0 +1,112 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashApp (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.extension.FlashApp

+
+
Packages that use FlashApp
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashConfiguration.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashConfiguration.html new file mode 100644 index 0000000..6be4b76 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashConfiguration.html @@ -0,0 +1,104 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashConfiguration (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.extension.FlashConfiguration

+
+
Packages that use FlashConfiguration
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashContext.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashContext.html new file mode 100644 index 0000000..79b4fc7 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashContext.html @@ -0,0 +1,135 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashContext (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.extension.FlashContext

+
+
Packages that use FlashContext
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashExtension.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashExtension.html new file mode 100644 index 0000000..c3b563f --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashExtension.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.FlashExtension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.extension.FlashExtension

+
+
Packages that use FlashExtension
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashRegistrar.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashRegistrar.html new file mode 100644 index 0000000..2a550b2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashRegistrar.html @@ -0,0 +1,117 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashRegistrar (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.extension.FlashRegistrar

+
+
Packages that use FlashRegistrar
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashScope.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashScope.html new file mode 100644 index 0000000..e96b6e2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/FlashScope.html @@ -0,0 +1,90 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashScope (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.extension.FlashScope

+
+
Packages that use FlashScope
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteEvent.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteEvent.html new file mode 100644 index 0000000..3c48437 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteEvent.html @@ -0,0 +1,89 @@ + + + + +Uses of Record Class dev.relism.flash.extension.RouteEvent (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Record Class
dev.relism.flash.extension.RouteEvent

+
+
Packages that use RouteEvent
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteListener.html b/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteListener.html new file mode 100644 index 0000000..f6bffa9 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/class-use/RouteListener.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.RouteListener (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.extension.RouteListener

+
+
Packages that use RouteListener
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/package-summary.html b/javadoc/2.0.0/dev/relism/flash/extension/package-summary.html new file mode 100644 index 0000000..881e79e --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/package-summary.html @@ -0,0 +1,158 @@ + + + + +dev.relism.flash.extension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.extension

+
+
+
package dev.relism.flash.extension
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/package-tree.html b/javadoc/2.0.0/dev/relism/flash/extension/package-tree.html new file mode 100644 index 0000000..510e98e --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/package-tree.html @@ -0,0 +1,119 @@ + + + + +dev.relism.flash.extension Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.extension

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+

Record Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/extension/package-use.html b/javadoc/2.0.0/dev/relism/flash/extension/package-use.html new file mode 100644 index 0000000..c75baea --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/extension/package-use.html @@ -0,0 +1,153 @@ + + + + +Uses of Package dev.relism.flash.extension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.extension

+
+
Packages that use dev.relism.flash.extension
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/ContentType.html b/javadoc/2.0.0/dev/relism/flash/http/ContentType.html new file mode 100644 index 0000000..df6af1e --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/ContentType.html @@ -0,0 +1,507 @@ + + + + +ContentType (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class ContentType

+
+
java.lang.Object +
java.lang.Enum<ContentType> +
dev.relism.flash.http.ContentType
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<ContentType>, Constable
+
+
+
public enum ContentType +extends Enum<ContentType>
+
Pre-compiled byte representations of common HTTP Content-Type values. + +
+invalid reference +
#getBytes()
+
+ returns the pre-computed array directly, never allocates.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      NONE

      +
      public static final ContentType NONE
      +
      +
    • +
    • +
      +

      TEXT_PLAIN

      +
      public static final ContentType TEXT_PLAIN
      +
      +
    • +
    • +
      +

      TEXT_HTML

      +
      public static final ContentType TEXT_HTML
      +
      +
    • +
    • +
      +

      TEXT_CSS

      +
      public static final ContentType TEXT_CSS
      +
      +
    • +
    • +
      +

      TEXT_JAVASCRIPT

      +
      public static final ContentType TEXT_JAVASCRIPT
      +
      +
    • +
    • +
      +

      TEXT_XML

      +
      public static final ContentType TEXT_XML
      +
      +
    • +
    • +
      +

      TEXT_CSV

      +
      public static final ContentType TEXT_CSV
      +
      +
    • +
    • +
      +

      TEXT_MARKDOWN

      +
      public static final ContentType TEXT_MARKDOWN
      +
      +
    • +
    • +
      +

      TEXT_EVENT_STREAM

      +
      public static final ContentType TEXT_EVENT_STREAM
      +
      +
    • +
    • +
      +

      JSON

      +
      public static final ContentType JSON
      +
      +
    • +
    • +
      +

      XML

      +
      public static final ContentType XML
      +
      +
    • +
    • +
      +

      BINARY

      +
      public static final ContentType BINARY
      +
      +
    • +
    • +
      +

      PDF

      +
      public static final ContentType PDF
      +
      +
    • +
    • +
      +

      ZIP

      +
      public static final ContentType ZIP
      +
      +
    • +
    • +
      +

      GZIP

      +
      public static final ContentType GZIP
      +
      +
    • +
    • +
      +

      FORM_URLENCODED

      +
      public static final ContentType FORM_URLENCODED
      +
      +
    • +
    • +
      +

      MULTIPART_FORM

      +
      public static final ContentType MULTIPART_FORM
      +
      +
    • +
    • +
      +

      GRAPHQL

      +
      public static final ContentType GRAPHQL
      +
      +
    • +
    • +
      +

      NDJSON

      +
      public static final ContentType NDJSON
      +
      +
    • +
    • +
      +

      MSGPACK

      +
      public static final ContentType MSGPACK
      +
      +
    • +
    • +
      +

      CBOR

      +
      public static final ContentType CBOR
      +
      +
    • +
    • +
      +

      LD_JSON

      +
      public static final ContentType LD_JSON
      +
      +
    • +
    • +
      +

      IMAGE_PNG

      +
      public static final ContentType IMAGE_PNG
      +
      +
    • +
    • +
      +

      IMAGE_JPEG

      +
      public static final ContentType IMAGE_JPEG
      +
      +
    • +
    • +
      +

      IMAGE_GIF

      +
      public static final ContentType IMAGE_GIF
      +
      +
    • +
    • +
      +

      IMAGE_WEBP

      +
      public static final ContentType IMAGE_WEBP
      +
      +
    • +
    • +
      +

      IMAGE_SVG

      +
      public static final ContentType IMAGE_SVG
      +
      +
    • +
    • +
      +

      IMAGE_ICO

      +
      public static final ContentType IMAGE_ICO
      +
      +
    • +
    • +
      +

      IMAGE_AVIF

      +
      public static final ContentType IMAGE_AVIF
      +
      +
    • +
    • +
      +

      FONT_WOFF

      +
      public static final ContentType FONT_WOFF
      +
      +
    • +
    • +
      +

      FONT_WOFF2

      +
      public static final ContentType FONT_WOFF2
      +
      +
    • +
    • +
      +

      AUDIO_MPEG

      +
      public static final ContentType AUDIO_MPEG
      +
      +
    • +
    • +
      +

      AUDIO_OGG

      +
      public static final ContentType AUDIO_OGG
      +
      +
    • +
    • +
      +

      VIDEO_MP4

      +
      public static final ContentType VIDEO_MP4
      +
      +
    • +
    • +
      +

      VIDEO_WEBM

      +
      public static final ContentType VIDEO_WEBM
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static ContentType[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static ContentType valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/HttpMethod.html b/javadoc/2.0.0/dev/relism/flash/http/HttpMethod.html new file mode 100644 index 0000000..653f337 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/HttpMethod.html @@ -0,0 +1,330 @@ + + + + +HttpMethod (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class HttpMethod

+
+
java.lang.Object +
java.lang.Enum<HttpMethod> +
dev.relism.flash.http.HttpMethod
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<HttpMethod>, Constable
+
+
+
public enum HttpMethod +extends Enum<HttpMethod>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      GET

      +
      public static final HttpMethod GET
      +
      +
    • +
    • +
      +

      POST

      +
      public static final HttpMethod POST
      +
      +
    • +
    • +
      +

      PUT

      +
      public static final HttpMethod PUT
      +
      +
    • +
    • +
      +

      DELETE

      +
      public static final HttpMethod DELETE
      +
      +
    • +
    • +
      +

      PATCH

      +
      public static final HttpMethod PATCH
      +
      +
    • +
    • +
      +

      OPTIONS

      +
      public static final HttpMethod OPTIONS
      +
      +
    • +
    • + +
    • +
    • +
      +

      TRACE

      +
      public static final HttpMethod TRACE
      +
      +
    • +
    • +
      +

      CONNECT

      +
      public static final HttpMethod CONNECT
      +
      +
    • +
    • +
      +

      PURGE

      +
      public static final HttpMethod PURGE
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static HttpMethod[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static HttpMethod valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      fromBytes

      +
      public static HttpMethod fromBytes(byte[] buf, + int off, + int len)
      +
      Resolves the HttpMethod from a byte buffer segment using O(1) dispatch. + Extremely fast, zero allocations, branch-prediction friendly.
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Enum<HttpMethod>
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/HttpStatus.html b/javadoc/2.0.0/dev/relism/flash/http/HttpStatus.html new file mode 100644 index 0000000..0c5119f --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/HttpStatus.html @@ -0,0 +1,531 @@ + + + + +HttpStatus (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class HttpStatus

+
+
java.lang.Object +
java.lang.Enum<HttpStatus> +
dev.relism.flash.http.HttpStatus
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<HttpStatus>, Constable
+
+
+
public enum HttpStatus +extends Enum<HttpStatus>
+
Pre-compiled byte representations of standard HTTP status lines. + Uses a direct-access array for O(1) lookup with zero allocation.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      CONTINUE

      +
      public static final HttpStatus CONTINUE
      +
      +
    • +
    • +
      +

      SWITCHING_PROTOCOLS

      +
      public static final HttpStatus SWITCHING_PROTOCOLS
      +
      +
    • +
    • +
      +

      OK

      +
      public static final HttpStatus OK
      +
      +
    • +
    • +
      +

      CREATED

      +
      public static final HttpStatus CREATED
      +
      +
    • +
    • +
      +

      ACCEPTED

      +
      public static final HttpStatus ACCEPTED
      +
      +
    • +
    • +
      +

      NO_CONTENT

      +
      public static final HttpStatus NO_CONTENT
      +
      +
    • +
    • +
      +

      PARTIAL_CONTENT

      +
      public static final HttpStatus PARTIAL_CONTENT
      +
      +
    • +
    • +
      +

      MOVED_PERMANENTLY

      +
      public static final HttpStatus MOVED_PERMANENTLY
      +
      +
    • +
    • +
      +

      FOUND

      +
      public static final HttpStatus FOUND
      +
      +
    • +
    • +
      +

      NOT_MODIFIED

      +
      public static final HttpStatus NOT_MODIFIED
      +
      +
    • +
    • +
      +

      TEMPORARY_REDIRECT

      +
      public static final HttpStatus TEMPORARY_REDIRECT
      +
      +
    • +
    • +
      +

      PERMANENT_REDIRECT

      +
      public static final HttpStatus PERMANENT_REDIRECT
      +
      +
    • +
    • +
      +

      BAD_REQUEST

      +
      public static final HttpStatus BAD_REQUEST
      +
      +
    • +
    • +
      +

      UNAUTHORIZED

      +
      public static final HttpStatus UNAUTHORIZED
      +
      +
    • +
    • +
      +

      FORBIDDEN

      +
      public static final HttpStatus FORBIDDEN
      +
      +
    • +
    • +
      +

      NOT_FOUND

      +
      public static final HttpStatus NOT_FOUND
      +
      +
    • +
    • +
      +

      METHOD_NOT_ALLOWED

      +
      public static final HttpStatus METHOD_NOT_ALLOWED
      +
      +
    • +
    • +
      +

      NOT_ACCEPTABLE

      +
      public static final HttpStatus NOT_ACCEPTABLE
      +
      +
    • +
    • +
      +

      CONFLICT

      +
      public static final HttpStatus CONFLICT
      +
      +
    • +
    • +
      +

      GONE

      +
      public static final HttpStatus GONE
      +
      +
    • +
    • +
      +

      LENGTH_REQUIRED

      +
      public static final HttpStatus LENGTH_REQUIRED
      +
      +
    • +
    • +
      +

      PAYLOAD_TOO_LARGE

      +
      public static final HttpStatus PAYLOAD_TOO_LARGE
      +
      +
    • +
    • +
      +

      URI_TOO_LONG

      +
      public static final HttpStatus URI_TOO_LONG
      +
      +
    • +
    • +
      +

      UNSUPPORTED_MEDIA_TYPE

      +
      public static final HttpStatus UNSUPPORTED_MEDIA_TYPE
      +
      +
    • +
    • +
      +

      UNPROCESSABLE_ENTITY

      +
      public static final HttpStatus UNPROCESSABLE_ENTITY
      +
      +
    • +
    • +
      +

      TOO_MANY_REQUESTS

      +
      public static final HttpStatus TOO_MANY_REQUESTS
      +
      +
    • +
    • +
      +

      INTERNAL_SERVER_ERROR

      +
      public static final HttpStatus INTERNAL_SERVER_ERROR
      +
      +
    • +
    • +
      +

      NOT_IMPLEMENTED

      +
      public static final HttpStatus NOT_IMPLEMENTED
      +
      +
    • +
    • +
      +

      BAD_GATEWAY

      +
      public static final HttpStatus BAD_GATEWAY
      +
      +
    • +
    • +
      +

      SERVICE_UNAVAILABLE

      +
      public static final HttpStatus SERVICE_UNAVAILABLE
      +
      +
    • +
    • +
      +

      GATEWAY_TIMEOUT

      +
      public static final HttpStatus GATEWAY_TIMEOUT
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static HttpStatus[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static HttpStatus valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      code

      +
      public int code()
      +
      Numeric status code (e.g. 200).
      +
      +
    • +
    • +
      +

      bytes

      +
      public byte[] bytes()
      +
      Pre-encoded "200 OK" bytes — zero allocation on the write path.
      +
      +
    • +
    • +
      +

      reason

      +
      public String reason()
      +
      Reason phrase (e.g. "OK").
      +
      +
    • +
    • +
      +

      bytesForCode

      +
      public static byte[] bytesForCode(int code)
      +
      Returns pre-compiled status bytes for the given code. + Access is O(1) and generates zero garbage.
      +
      +
    • +
    • +
      +

      reasonForCode

      +
      public static String reasonForCode(int code)
      +
      Returns reason phrase for the given code, or null if unknown.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/class-use/ContentType.html b/javadoc/2.0.0/dev/relism/flash/http/class-use/ContentType.html new file mode 100644 index 0000000..60560a5 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/class-use/ContentType.html @@ -0,0 +1,131 @@ + + + + +Uses of Enum Class dev.relism.flash.http.ContentType (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
dev.relism.flash.http.ContentType

+
+
Packages that use ContentType
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpMethod.html b/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpMethod.html new file mode 100644 index 0000000..f5e6ffe --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpMethod.html @@ -0,0 +1,224 @@ + + + + +Uses of Enum Class dev.relism.flash.http.HttpMethod (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
dev.relism.flash.http.HttpMethod

+
+
Packages that use HttpMethod
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpStatus.html b/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpStatus.html new file mode 100644 index 0000000..a81de0b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/class-use/HttpStatus.html @@ -0,0 +1,119 @@ + + + + +Uses of Enum Class dev.relism.flash.http.HttpStatus (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
dev.relism.flash.http.HttpStatus

+
+
Packages that use HttpStatus
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/package-summary.html b/javadoc/2.0.0/dev/relism/flash/http/package-summary.html new file mode 100644 index 0000000..1160461 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/package-summary.html @@ -0,0 +1,125 @@ + + + + +dev.relism.flash.http (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.http

+
+
+
package dev.relism.flash.http
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/package-tree.html b/javadoc/2.0.0/dev/relism/flash/http/package-tree.html new file mode 100644 index 0000000..6c8a1e1 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/package-tree.html @@ -0,0 +1,82 @@ + + + + +dev.relism.flash.http Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.http

+
+Package Hierarchies: + +
+

Enum Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/http/package-use.html b/javadoc/2.0.0/dev/relism/flash/http/package-use.html new file mode 100644 index 0000000..4607c4f --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/http/package-use.html @@ -0,0 +1,152 @@ + + + + +Uses of Package dev.relism.flash.http (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.http

+
+
Packages that use dev.relism.flash.http
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/HeaderMap.html b/javadoc/2.0.0/dev/relism/flash/models/HeaderMap.html new file mode 100644 index 0000000..0f8d40b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/HeaderMap.html @@ -0,0 +1,267 @@ + + + + +HeaderMap (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class HeaderMap

+
+
java.lang.Object +
dev.relism.flash.models.HeaderMap
+
+
+
+
public class HeaderMap +extends Object
+
Lazy, zero-copy header access backed directly by the request parser's byte buffer. + Strings are allocated only when first(java.lang.String) / all(java.lang.String) / view(java.lang.String) is called; + the raw bytes are never copied at parse time. + +

Lifetime contract — read carefully

+ One HeaderMap instance lives on the connection (not per-request). On every + keep-alive request reset(byte[], int, int) is called to slide the window over the new header + section of the same reused buffer. This has two critical implications: + +
    +
  1. Do not retain the HeaderMap beyond the handler. After the handler + returns, the next request reuses and overwrites the buffer. Any String + values retrieved via first(java.lang.String)/all(java.lang.String) are safe (they are independent + heap copies); the HeaderMap object itself is not.
  2. +
  3. view(java.lang.String) returns a zero-copy ByteView slice + into the live buffer. Storing this view and reading it after the handler + returns (e.g. in an async callback, a CompletableFuture + continuation, or a virtual-thread handoff) is a data race — the bytes + may have been overwritten by the next request. Copy to a String or + byte[] before leaving the synchronous handler scope.
  4. +
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    all()
    +
    +
    Returns all header values in declaration order.
    +
    + +
    all(String name)
    +
    +
    Returns all values of header name in declaration order, or an empty list.
    +
    + +
    first(String name)
    +
    +
    Returns the first value of header name (case-insensitive), or null.
    +
    +
    void
    +
    reset(byte[] buffer, + int sectionStart, + int sectionEnd)
    +
    +
    Resets this map to the header section buffer[sectionStart, sectionEnd).
    +
    +
    boolean
    + +
    +
    Case-insensitive comparison of the first value of name against value.
    +
    +
    dev.relism.fpr.core.ByteView
    +
    view(String name)
    +
    +
    Returns a zero-copy ByteView over the first value of name, or null.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      HeaderMap

      +
      public HeaderMap()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      reset

      +
      public void reset(byte[] buffer, + int sectionStart, + int sectionEnd)
      +
      Resets this map to the header section buffer[sectionStart, sectionEnd).
      +
      +
    • +
    • +
      +

      first

      +
      public String first(String name)
      +
      Returns the first value of header name (case-insensitive), or null.
      +
      +
    • +
    • +
      +

      all

      +
      public List<String> all(String name)
      +
      Returns all values of header name in declaration order, or an empty list.
      +
      +
    • +
    • +
      +

      all

      +
      public List<String> all()
      +
      Returns all header values in declaration order.
      +
      +
    • +
    • +
      +

      valueEqualsIgnoreCase

      +
      public boolean valueEqualsIgnoreCase(String name, + String value)
      +
      Case-insensitive comparison of the first value of name against value.
      +
      +
    • +
    • +
      +

      view

      +
      public dev.relism.fpr.core.ByteView view(String name)
      +
      Returns a zero-copy ByteView over the first value of name, or null.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/PathParams.html b/javadoc/2.0.0/dev/relism/flash/models/PathParams.html new file mode 100644 index 0000000..9e86d07 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/PathParams.html @@ -0,0 +1,201 @@ + + + + +PathParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PathParams

+
+
java.lang.Object +
dev.relism.flash.models.PathParams
+
+
+
+
public class PathParams +extends Object
+
Path parameters captured during routing, stored as byte offsets into the path view. + get(java.lang.String) allocates a String on call; view(java.lang.String) is zero-copy.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PathParams

      +
      public PathParams(dev.relism.fpr.core.ByteView source, + String[] names, + int[] starts, + int[] lens)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      inject

      +
      public static void inject(Request request, + PathParams params)
      +
      Injects path parameters into a request. The cross-package bridge from + AbstractRouter — keeps Request.setPathParams(dev.relism.flash.models.PathParams) + package-private while allowing the router to set params without a public setter.
      +
      +
    • +
    • +
      +

      get

      +
      public String get(String name)
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/QueryParams.html b/javadoc/2.0.0/dev/relism/flash/models/QueryParams.html new file mode 100644 index 0000000..647cd1d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/QueryParams.html @@ -0,0 +1,220 @@ + + + + +QueryParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class QueryParams

+
+
java.lang.Object +
dev.relism.flash.models.QueryParams
+
+
+
+
public class QueryParams +extends Object
+
Lazy query parameter access (?key=value&...). Backed by a zero-copy ByteView + over the raw query string bytes, no parsing at construction, values percent-decoded on demand. + +

Percent-decoding (%XX → byte, + → space) follows the + application/x-www-form-urlencoded convention used by all browsers.

+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      EMPTY

      +
      public static final QueryParams EMPTY
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      QueryParams

      +
      public QueryParams(dev.relism.fpr.core.ByteView raw)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/Request.html b/javadoc/2.0.0/dev/relism/flash/models/Request.html new file mode 100644 index 0000000..2b82611 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/Request.html @@ -0,0 +1,377 @@ + + + + +Request (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Request

+
+
java.lang.Object +
dev.relism.flash.models.Request
+
+
+
+
public class Request +extends Object
+
Immutable view of an incoming HTTP/1.1 request. Constructed by RequestParser + and passed directly to route handlers; never modified after creation (path/query params are + injected once by the router before the handler runs). + +

+ server.get("/users/{id}", (req, res) -> {
+     String id      = req.param("id");            // /users/42 → "42"
+     String page    = req.query("page");           // ?page=2   → "2"
+     String accept  = req.header("Accept");        // first Accept value
+     byte[] body    = req.body().bytes();          // materialise body
+     InputStream in = req.body().stream();         // zero-copy stream
+ });
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Request

      +
      public Request(RequestLine requestLine, + byte[] body)
      +
      Test / manual constructor — remoteAddress() returns null.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      forParsed

      +
      public static Request forParsed(RequestLine requestLine, + InputStream stream, + long contentLength, + byte[] headerBuf, + int bodyStart, + int preBufLen, + InetSocketAddress remoteAddress)
      +
      +
    • +
    • +
      +

      method

      +
      public HttpMethod method()
      +
      HTTP method (GET, POST, …).
      +
      +
    • +
    • +
      +

      path

      +
      public String path()
      +
      Request path decoded as UTF-8. Includes a leading slash; never includes the query string. + Example: a request for /users/42?page=1 returns "/users/42".
      +
      +
    • +
    • +
      +

      header

      +
      public String header(String name)
      +
      Returns the first value of header name, or null if absent. + Lookup is case-insensitive ("content-type" and "Content-Type" are equivalent).
      +
      +
    • +
    • +
      +

      headers

      +
      public List<String> headers(String name)
      +
      Returns all values of header name in declaration order. + Useful for headers that appear multiple times (e.g. Accept, Cookie). + Lookup is case-insensitive. Returns an empty list if the header is absent.
      +
      +
    • +
    • +
      +

      headers

      +
      public List<String> headers()
      +
      Returns all header values in declaration order, one entry per header line. + Useful for debugging; for targeted access prefer header(String).
      +
      +
    • +
    • +
      +

      param

      +
      public String param(String name)
      +
      Returns the path parameter named name, or null. + Parameters are declared in the route pattern (e.g. /users/{id}) and + injected by the router before the handler runs. Returns null if this + route has no such parameter or the route is not parametric.
      +
      +
    • +
    • +
      +

      query

      +
      public String query(String name)
      +
      Returns the first query parameter named name, or null. + The query string is parsed lazily on the first call and cached for the request lifetime. + For ?a=1&a=2, returns "1".
      +
      +
    • +
    • +
      +

      queries

      +
      public List<String> queries(String name)
      +
      Returns all query parameters named name in declaration order. + For ?tag=a&tag=b, returns ["a", "b"]. + Returns an empty list if the parameter is absent.
      +
      +
    • +
    • +
      +

      remoteAddress

      +
      public InetSocketAddress remoteAddress()
      +
      Returns the remote socket address of the connected client, or null + for test-constructed requests. + +

      The InetSocketAddress is the JDK object created during + ServerSocket.accept() — no allocation occurs here. + To obtain the IP string (lazy, allocates once): +

      
      + InetSocketAddress addr = req.remoteAddress();
      + if (addr != null) String ip = addr.getAddress().getHostAddress();
      + 
      +
      +
    • +
    • +
      +

      body

      +
      public RequestBody body()
      +
      Returns the request body accessor. Use RequestBody.bytes() to materialise + the full body or RequestBody.stream() for zero-copy streaming access. + The two modes are mutually exclusive per request.
      +
      +
    • +
    • +
      +

      drain

      +
      public void drain()
      +
      Discards unread body bytes; called by the server after each request on keep-alive connections.
      +
      +
    • +
    • +
      +

      headerEquals

      +
      public boolean headerEquals(String name, + String value)
      +
      Internal: case-insensitive header value comparison used by the server keep-alive logic.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/RequestBody.html b/javadoc/2.0.0/dev/relism/flash/models/RequestBody.html new file mode 100644 index 0000000..997f107 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/RequestBody.html @@ -0,0 +1,237 @@ + + + + +RequestBody (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestBody

+
+
java.lang.Object +
dev.relism.flash.models.RequestBody
+
+
+
+
public final class RequestBody +extends Object
+
Accessor for the HTTP request body. Supports two mutually exclusive read modes per request: + +
    +
  • bytes() — materialises the full body into a byte[] and caches it. + Safe to call multiple times; the second call returns the cached array. Throws for + bodies larger than 2 GB.
  • +
  • stream() — returns a bounded InputStream without upfront allocation. + For fixed-length bodies this is a view into the already-buffered header bytes stitched + to the socket; for chunked bodies it is the raw +
    +invalid reference +
    dev.relism.ChunkedInputStream
    +
    + + that de-chunks on the fly.
  • +
+ +

Mutual exclusivity: calling both bytes() and stream() on the same + request produces undefined results. Choose one mode per handler. + +

Keep-alive: unread body bytes are discarded by Request.drain() after the + handler returns so the socket is correctly positioned for the next pipelined request.

+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      isEmpty

      +
      public boolean isEmpty()
      +
      true if the body has zero bytes (Content-Length: 0 or no body).
      +
      +
    • +
    • +
      +

      contentLength

      +
      public long contentLength()
      +
      Declared body size in bytes. Returns -1 for Transfer-Encoding: chunked + bodies where the size is not known upfront.
      +
      +
    • +
    • +
      +

      bytes

      +
      public byte[] bytes()
      +
      Materialises and caches the full body. Suitable for JSON, small form data, and any payload + that must be inspected in full. The result is cached — repeated calls return the same array. + +

      For chunked bodies (contentLength() == -1), reads until the chunked + stream signals EOF.

      +
      +
      Throws:
      +
      IllegalStateException - if contentLength() exceeds Integer.MAX_VALUE + (~2 GB); use stream() for large bodies instead
      +
      +
      +
    • +
    • +
      +

      stream

      +
      public InputStream stream()
      +
      Returns a bounded InputStream over the body without upfront allocation. + +

      For fixed-length bodies: a SequenceInputStream of any already-buffered header + bytes followed by a bounded view of the socket stream — zero heap beyond those small + pre-buffered bytes. + +

      For chunked bodies: the raw +

      +invalid reference +
      dev.relism.ChunkedInputStream
      +
      + that de-chunks on + the fly; EOF signals the end of the logical body and leaves the socket positioned for + the next keep-alive request. + +

      If bytes() was called first, returns a fresh ByteArrayInputStream + over the cached array.

      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/RequestHandler.html b/javadoc/2.0.0/dev/relism/flash/models/RequestHandler.html new file mode 100644 index 0000000..b9f9667 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/RequestHandler.html @@ -0,0 +1,335 @@ + + + + +RequestHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestHandler

+
+
java.lang.Object +
dev.relism.flash.models.RequestHandler
+
+
+
+
Direct Known Subclasses:
+
SimpleHandler
+
+
+
public abstract class RequestHandler +extends Object
+
Base class for class-based route handlers. + +

Declare the route with @Route or a shorthand such as + @GET("/path"), then register via FlashRegistrar.scan(java.lang.String). + For ad-hoc routes use the fluent API (app.get(path, handler) or with middleware). + +

Lifecycle

+
    +
  1. Instantiation — no-arg constructor (for scan) or manual new Handler(...)
  2. +
  3. bind(dev.relism.flash.extension.FlashContext) — called once by the framework at start(), injects the + FlashContext and invokes onInit()
  4. +
  5. handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) — called on every matching request (hot-path, zero-alloc)
  6. +
+ +

Service access

+ Override onInit() to cache services from the FlashContext + into private fields. This keeps the hot-path (handle) free of map lookups. + +

+ @GET("/users")
+ public class UserHandler extends RequestHandler {
+     private UserService users;
+
+     @Override protected void onInit() {
+         users = require(UserService.class);
+     }
+
+     @Override public Object handle(Request req, Response res) {
+         return users.findAll();
+     }
+ }
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RequestHandler

      +
      public RequestHandler()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      bind

      +
      public final void bind(FlashContext ctx)
      +
      Called once by the framework after instantiation, before the first request. + Injects the FlashContext and triggers onInit(). + +

      Infrastructure method — do not call from user code. + Use FlashRegistrar.scan(java.lang.String) instead.

      +
      +
    • +
    • +
      +

      onInit

      +
      protected void onInit()
      +
      Override to cache services at boot time. Called once after bind(dev.relism.flash.extension.FlashContext), + before any request reaches this handler. + +

      Use require(java.lang.Class<T>) and find(java.lang.Class<T>) to retrieve services from the + FlashContext. Cache them in private fields so the hot-path + (handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response)) has zero lookup overhead. + +

      Important: if your class extends another handler base (e.g. + JacksonHandler), call super.onInit() first so the parent + can initialise its own services. + +

      
      + @Override protected void onInit() {
      +     super.onInit();
      +     myService = require(MyService.class);
      + }
      + 
      +
      +
    • +
    • +
      +

      require

      +
      protected <T> T require(Class<T> type)
      +
      Retrieves a required service from the FlashContext. + Throws IllegalStateException if the service is not registered or + this handler has not been bound yet. + +

      Typically called inside onInit() to cache the result.

      +
      +
      Type Parameters:
      +
      T - the service type
      +
      Parameters:
      +
      type - the service class
      +
      Returns:
      +
      the service instance, never null
      +
      +
      +
    • +
    • +
      +

      find

      +
      protected <T> Optional<T> find(Class<T> type)
      +
      Looks up an optional service from the FlashContext.
      +
      +
      Type Parameters:
      +
      T - the service type
      +
      Parameters:
      +
      type - the service class
      +
      Returns:
      +
      the service, or empty if not registered
      +
      +
      +
    • +
    • +
      +

      optional

      +
      protected <T> Optional<T> optional(Class<T> type)
      +
      Looks up an optional service from the FlashContext. + Identical to find(java.lang.Class<T>) — prefer this name for expressive call sites + (optional(MyService.class).ifPresent(...)).
      +
      +
      Type Parameters:
      +
      T - the service type
      +
      Parameters:
      +
      type - the service class
      +
      Returns:
      +
      the service, or empty if not registered
      +
      +
      +
    • +
    • +
      +

      handle

      +
      public abstract Object handle(Request request, + Response response) + throws Exception
      +
      Handles an incoming request. The return value determines the response body: + return a Response to replace the whole response, any other non-null value + to set it as the body, or null to leave the response as-is.
      +
      +
      Throws:
      +
      Exception
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/RequestHelper.html b/javadoc/2.0.0/dev/relism/flash/models/RequestHelper.html new file mode 100644 index 0000000..bf4b682 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/RequestHelper.html @@ -0,0 +1,256 @@ + + + + +RequestHelper (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestHelper

+
+
java.lang.Object +
dev.relism.flash.models.RequestHelper
+
+
+
+
public final class RequestHelper +extends Object
+
Typed accessors for request parameters. All methods throw + HttpException (400) on missing or malformed input, so handlers + do not need to write per-field validation boilerplate. + +

+ int  page = RequestHelper.queryInt(req, "page", 1, 100);
+ long id   = RequestHelper.paramLong(req, "id");
+ String q  = RequestHelper.queryRequired(req, "q");
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      queryInt

      +
      public static int queryInt(Request req, + String name, + int defaultValue, + int max)
      +
      Returns the query param as an int, or defaultValue if absent. + Caps the result at max. Throws 400 on non-integer input.
      +
      +
    • +
    • +
      +

      queryRequired

      +
      public static String queryRequired(Request req, + String name)
      +
      Returns the query param value. Throws 400 if absent or blank.
      +
      +
    • +
    • +
      +

      queryOptional

      +
      public static String queryOptional(Request req, + String name)
      +
      Returns the query param, or null if absent.
      +
      +
    • +
    • +
      +

      queryLong

      +
      public static long queryLong(Request req, + String name, + long defaultValue)
      +
      Returns the query param as a long, or defaultValue if absent. + Throws 400 on non-long input.
      +
      +
    • +
    • +
      +

      paramLong

      +
      public static long paramLong(Request req, + String name)
      +
      Returns the path parameter as a long. Throws 400 if absent or non-long.
      +
      +
    • +
    • +
      +

      paramInt

      +
      public static int paramInt(Request req, + String name)
      +
      Returns the path parameter as an int. Throws 400 if absent or non-int.
      +
      +
    • +
    • +
      +

      paramRequired

      +
      public static String paramRequired(Request req, + String name)
      +
      Returns the path parameter as a String. Throws 400 if absent.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/RequestLine.html b/javadoc/2.0.0/dev/relism/flash/models/RequestLine.html new file mode 100644 index 0000000..cedc254 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/RequestLine.html @@ -0,0 +1,150 @@ + + + + +RequestLine (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RequestLine

+
+
java.lang.Object +
dev.relism.flash.models.RequestLine
+
+
+
+
public class RequestLine +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RequestLine

      +
      public RequestLine()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/Response.html b/javadoc/2.0.0/dev/relism/flash/models/Response.html new file mode 100644 index 0000000..fe230c5 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/Response.html @@ -0,0 +1,411 @@ + + + + +Response (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Response

+
+
java.lang.Object +
dev.relism.flash.models.Response
+
+
+
+
public class Response +extends Object
+
HTTP response. All mutating methods return this for fluent chaining. + +

+ // fixed body
+ return new Response(200, "ok", ContentType.TEXT_PLAIN);
+
+ // known-length stream → Content-Length header
+ return new Response(200, ContentType.BINARY).stream(Files.newInputStream(p), Files.size(p));
+
+ // unknown-length stream → Transfer-Encoding: chunked
+ return new Response(200, ContentType.TEXT_PLAIN).chunked(source);
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Response

      +
      public Response(int statusCode, + ContentType contentType)
      +
      +
    • +
    • +
      +

      Response

      +
      public Response(int statusCode, + byte[] body, + ContentType contentType)
      +
      +
    • +
    • +
      +

      Response

      +
      public Response(int statusCode, + String text, + ContentType contentType)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      status

      +
      public Response status(int code)
      +
      Sets the status code. The phrase is looked up from HttpStatus on the write path.
      +
      +
    • +
    • +
      +

      status

      +
      public Response status(HttpStatus status)
      +
      Sets the status from an HttpStatus constant. The pre-encoded bytes are used + directly on the write path — zero lookup, zero allocation.
      +
      +
    • +
    • +
      +

      type

      +
      public Response type(ContentType ct)
      +
      +
    • +
    • +
      +

      type

      +
      public Response type(String ct)
      +
      +
    • +
    • +
      +

      body

      +
      public Response body(byte[] bytes)
      +
      +
    • +
    • +
      +

      body

      +
      public Response body(String text)
      +
      +
    • +
    • +
      +

      stream

      +
      public Response stream(InputStream is, + long length)
      +
      Streaming response with known length; written with Content-Length.
      +
      +
    • +
    • +
      +

      chunked

      +
      public Response chunked(InputStream is)
      +
      Streaming response with unknown length; written with Transfer-Encoding: chunked.
      +
      +
    • +
    • +
      +

      redirect

      +
      public Response redirect(String url)
      +
      302 Found redirect. Clears the body, sets status and Location header. + Encoded once at call time; zero-alloc on the write path. + +
      
      + return res.redirect("/login");
      + 
      +
      +
    • +
    • +
      +

      redirect

      +
      public Response redirect(HttpStatus status, + String url)
      +
      Redirect with an explicit 3xx status. Use HttpStatus.MOVED_PERMANENTLY, + HttpStatus.TEMPORARY_REDIRECT (307), or HttpStatus.PERMANENT_REDIRECT (308) + when semantics matter. + +
      
      + return res.redirect(HttpStatus.MOVED_PERMANENTLY, "/new-path");
      + 
      +
      +
    • +
    • +
      +

      header

      +
      public Response header(String name, + String value)
      +
      Adds a response header. Encoded once at call time; zero-alloc on the write path.
      +
      +
    • +
    • +
      +

      header

      +
      public Response header(byte[] preEncoded)
      +
      Adds a pre-encoded header (e.g. a static "X-RateLimit-Limit: 100\r\n" byte array + pre-built at boot time). Zero-alloc on both the call path and the write path.
      +
      +
    • +
    • +
      +

      isStreaming

      +
      public boolean isStreaming()
      +
      +
    • +
    • +
      +

      setBody

      +
      public Response setBody(Object body)
      +
      Sets the body from a handler return value. Accepted types: byte[], + String, CharSequence. Any other non-null type throws + IllegalArgumentException — return a Response directly, or + serialize to String/byte[] before returning.
      +
      +
    • +
    • +
      +

      getHeaders

      +
      public List<byte[]> getHeaders()
      +
      Returns custom headers, or an empty list if none were added.
      +
      +
    • +
    • +
      +

      writeHeaders

      +
      public void writeHeaders(OutputStream out) + throws IOException
      +
      Writes pre-encoded custom headers directly to out. Zero-alloc when no headers are set.
      +
      +
      Throws:
      +
      IOException
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html b/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html new file mode 100644 index 0000000..fd3cbf1 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html @@ -0,0 +1,160 @@ + + + + +SimpleHandler.FunctionalHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface SimpleHandler.FunctionalHandler

+
+
+
+
Enclosing class:
+
SimpleHandler
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public static interface SimpleHandler.FunctionalHandler
+
Functional interface for handling requests, used by SimpleHandler.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    handle(Request request, + Response response)
    +
     
    +
    +
    +
    +
    +
  • +
+
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.html b/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.html new file mode 100644 index 0000000..1dde56c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/SimpleHandler.html @@ -0,0 +1,216 @@ + + + + +SimpleHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SimpleHandler

+
+
java.lang.Object +
dev.relism.flash.models.RequestHandler +
dev.relism.flash.models.SimpleHandler
+
+
+
+
+
public class SimpleHandler +extends RequestHandler
+
Delegates handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    + +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      handle

      +
      public Object handle(Request request, + Response response) + throws Exception
      +
      Description copied from class: RequestHandler
      +
      Handles an incoming request. The return value determines the response body: + return a Response to replace the whole response, any other non-null value + to set it as the body, or null to leave the response as-is.
      +
      +
      Specified by:
      +
      handle in class RequestHandler
      +
      Throws:
      +
      Exception
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/HeaderMap.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/HeaderMap.html new file mode 100644 index 0000000..8203b27 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/HeaderMap.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.models.HeaderMap (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.HeaderMap

+
+No usage of dev.relism.flash.models.HeaderMap
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/PathParams.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/PathParams.html new file mode 100644 index 0000000..51187eb --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/PathParams.html @@ -0,0 +1,90 @@ + + + + +Uses of Class dev.relism.flash.models.PathParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.PathParams

+
+
Packages that use PathParams
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/QueryParams.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/QueryParams.html new file mode 100644 index 0000000..f08be69 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/QueryParams.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.models.QueryParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.QueryParams

+
+
Packages that use QueryParams
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/Request.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/Request.html new file mode 100644 index 0000000..bff9c66 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/Request.html @@ -0,0 +1,262 @@ + + + + +Uses of Class dev.relism.flash.models.Request (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.Request

+
+
Packages that use Request
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestBody.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestBody.html new file mode 100644 index 0000000..e9f4930 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestBody.html @@ -0,0 +1,89 @@ + + + + +Uses of Class dev.relism.flash.models.RequestBody (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.RequestBody

+
+
Packages that use RequestBody
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHandler.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHandler.html new file mode 100644 index 0000000..e2b1b47 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHandler.html @@ -0,0 +1,208 @@ + + + + +Uses of Class dev.relism.flash.models.RequestHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.RequestHandler

+
+
Packages that use RequestHandler
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHelper.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHelper.html new file mode 100644 index 0000000..2a90422 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestHelper.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.models.RequestHelper (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.RequestHelper

+
+No usage of dev.relism.flash.models.RequestHelper
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestLine.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestLine.html new file mode 100644 index 0000000..a4b36aa --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/RequestLine.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.models.RequestLine (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.RequestLine

+
+
Packages that use RequestLine
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/Response.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/Response.html new file mode 100644 index 0000000..85e8045 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/Response.html @@ -0,0 +1,183 @@ + + + + +Uses of Class dev.relism.flash.models.Response (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.Response

+
+
Packages that use Response
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html new file mode 100644 index 0000000..05cf756 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html @@ -0,0 +1,180 @@ + + + + +Uses of Interface dev.relism.flash.models.SimpleHandler.FunctionalHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.models.SimpleHandler.FunctionalHandler

+
+ + +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.html b/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.html new file mode 100644 index 0000000..6496480 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/class-use/SimpleHandler.html @@ -0,0 +1,96 @@ + + + + +Uses of Class dev.relism.flash.models.SimpleHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.models.SimpleHandler

+
+
Packages that use SimpleHandler
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/package-summary.html b/javadoc/2.0.0/dev/relism/flash/models/package-summary.html new file mode 100644 index 0000000..85b22c4 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/package-summary.html @@ -0,0 +1,160 @@ + + + + +dev.relism.flash.models (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.models

+
+
+
package dev.relism.flash.models
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/package-tree.html b/javadoc/2.0.0/dev/relism/flash/models/package-tree.html new file mode 100644 index 0000000..4d604e4 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/package-tree.html @@ -0,0 +1,94 @@ + + + + +dev.relism.flash.models Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.models

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/models/package-use.html b/javadoc/2.0.0/dev/relism/flash/models/package-use.html new file mode 100644 index 0000000..903dfb3 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/models/package-use.html @@ -0,0 +1,227 @@ + + + + +Uses of Package dev.relism.flash.models (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.models

+
+
Packages that use dev.relism.flash.models
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/package-summary.html b/javadoc/2.0.0/dev/relism/flash/package-summary.html new file mode 100644 index 0000000..bf584dc --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/package-summary.html @@ -0,0 +1,138 @@ + + + + +dev.relism.flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash

+
+
+
package dev.relism.flash
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/package-tree.html b/javadoc/2.0.0/dev/relism/flash/package-tree.html new file mode 100644 index 0000000..aa2e790 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/package-tree.html @@ -0,0 +1,87 @@ + + + + +dev.relism.flash Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/package-use.html b/javadoc/2.0.0/dev/relism/flash/package-use.html new file mode 100644 index 0000000..0d49fa2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/package-use.html @@ -0,0 +1,92 @@ + + + + +Uses of Package dev.relism.flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash

+
+
Packages that use dev.relism.flash
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html b/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html new file mode 100644 index 0000000..392fd6a --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html @@ -0,0 +1,156 @@ + + + + +AbstractRouter.ExceptionHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface AbstractRouter.ExceptionHandler

+
+
+
+
Enclosing class:
+
AbstractRouter
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public static interface AbstractRouter.ExceptionHandler
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    handle(Exception exception, + Request request, + Response response)
    +
     
    +
    +
    +
    +
    +
  • +
+
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.html b/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.html new file mode 100644 index 0000000..21c09c0 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/AbstractRouter.html @@ -0,0 +1,336 @@ + + + + +AbstractRouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AbstractRouter

+
+
java.lang.Object +
dev.relism.flash.routing.AbstractRouter
+
+
+
+
Direct Known Subclasses:
+
FastPathRouterImpl
+
+
+
public abstract class AbstractRouter +extends Object
+
Base router contract. Owns error handlers and the compile-time middleware + wrapping logic. The only concrete implementation is + FastPathRouterImpl. + +

All middleware composition happens once at boot time; the hot-path sees + only a plain RequestHandler call with zero allocation overhead. + +

Default error handlers

+
    +
  • Dev mode (-Dflash.env=dev): rich HTML pages with full stack traces.
  • +
  • Prod mode (default): generic JSON — no internal detail leaked to clients.
  • +
+ Override via FlashApp.onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler) / + FlashApp.onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler). + +

Registration: use FlashApp — the single + public registration API. doRegister(dev.relism.flash.http.HttpMethod, java.lang.String, dev.relism.flash.models.RequestHandler, dev.relism.flash.routing.Middleware[]) is an infrastructure method.

+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/CONNECT.html b/javadoc/2.0.0/dev/relism/flash/routing/CONNECT.html new file mode 100644 index 0000000..bd7f541 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/CONNECT.html @@ -0,0 +1,138 @@ + + + + +CONNECT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface CONNECT

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface CONNECT
+
Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/DELETE.html b/javadoc/2.0.0/dev/relism/flash/routing/DELETE.html new file mode 100644 index 0000000..78aafad --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/DELETE.html @@ -0,0 +1,138 @@ + + + + +DELETE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface DELETE

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface DELETE
+
Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/GET.html b/javadoc/2.0.0/dev/relism/flash/routing/GET.html new file mode 100644 index 0000000..2287aa3 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/GET.html @@ -0,0 +1,138 @@ + + + + +GET (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface GET

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface GET
+
Shorthand for @Route(method = HttpMethod.GET, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/HEAD.html b/javadoc/2.0.0/dev/relism/flash/routing/HEAD.html new file mode 100644 index 0000000..c665173 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/HEAD.html @@ -0,0 +1,138 @@ + + + + +HEAD (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface HEAD

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface HEAD
+
Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/Middleware.html b/javadoc/2.0.0/dev/relism/flash/routing/Middleware.html new file mode 100644 index 0000000..60e6418 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/Middleware.html @@ -0,0 +1,204 @@ + + + + +Middleware (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface Middleware

+
+
+
+
Functional Interface:
+
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
+
+
+
@FunctionalInterface +public interface Middleware
+
Stateless interceptor applied around a RequestHandler. + +

Middleware is composed once at registration time and stored as a pre-built handler + chain inside the router's state machine. There is zero runtime overhead: no lists are visited, + no lookups performed, and no objects allocated on the request hot-path. + +

Middleware is intentionally stateless — it can read Request, + write to Response, and decide whether to call next or + short-circuit. Shared state between layers belongs in HDI handler chains, not here. + +


+ // Inline definition — pure lambda, no wrapper types needed
+ Middleware auth = next -> (req, res) -> {
+     if (req.header("Authorization") == null) { res.status(401); return null; }
+     return next.handle(req, res);
+ };
+
+ // Named reusable chain — composed into a single object at call time
+ Middleware secured = Middleware.of(cors, auth, rateLimit);
+
+ // Router-level: applied to every handler registered on this router
+ AbstractRouter api = new MyRouter(cors, auth);
+
+ // Handler-level: applied only to this route
+ app.get("/admin", (req, res) -> "secret", auth);
+ app.get("/log",   handler, logging, auth);
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      wrap

      + +
      Wraps next with this middleware's logic. Called once at boot time + during handler registration. Returns a SimpleHandler.FunctionalHandler lambda + — no wrapper types required at the call site. + +

      The returned functional handler is boxed into a SimpleHandler internally by + AbstractRouter; callers never need to do this manually.

      +
      +
    • +
    • +
      +

      of

      +
      static Middleware of(Middleware... chain)
      +
      Composes an ordered chain of middlewares into a single Middleware. + The first element is the outermost wrapper and therefore executes first. + +

      The composition loop runs once when wrap(dev.relism.flash.models.RequestHandler) is called (i.e. at registration + time), not at construction of the chain. Zero allocations on the hot-path. + +

      
      + Middleware secured = Middleware.of(cors, auth, rateLimit);
      + // execution order: cors → auth → rateLimit → handler
      + 
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/OPTIONS.html b/javadoc/2.0.0/dev/relism/flash/routing/OPTIONS.html new file mode 100644 index 0000000..f1776a5 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/OPTIONS.html @@ -0,0 +1,138 @@ + + + + +OPTIONS (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface OPTIONS

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface OPTIONS
+
Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/PATCH.html b/javadoc/2.0.0/dev/relism/flash/routing/PATCH.html new file mode 100644 index 0000000..670dcc7 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/PATCH.html @@ -0,0 +1,138 @@ + + + + +PATCH (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface PATCH

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface PATCH
+
Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/POST.html b/javadoc/2.0.0/dev/relism/flash/routing/POST.html new file mode 100644 index 0000000..f8fa343 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/POST.html @@ -0,0 +1,138 @@ + + + + +POST (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface POST

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface POST
+
Shorthand for @Route(method = HttpMethod.POST, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/PURGE.html b/javadoc/2.0.0/dev/relism/flash/routing/PURGE.html new file mode 100644 index 0000000..2331b91 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/PURGE.html @@ -0,0 +1,138 @@ + + + + +PURGE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface PURGE

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface PURGE
+
Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/PUT.html b/javadoc/2.0.0/dev/relism/flash/routing/PUT.html new file mode 100644 index 0000000..5fe04d2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/PUT.html @@ -0,0 +1,138 @@ + + + + +PUT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface PUT

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface PUT
+
Shorthand for @Route(method = HttpMethod.PUT, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/PathUtils.html b/javadoc/2.0.0/dev/relism/flash/routing/PathUtils.html new file mode 100644 index 0000000..ecabf25 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/PathUtils.html @@ -0,0 +1,196 @@ + + + + +PathUtils (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PathUtils

+
+
java.lang.Object +
dev.relism.flash.routing.PathUtils
+
+
+
+
public class PathUtils +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PathUtils

      +
      public PathUtils()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      sanitize

      +
      public static String sanitize(String path)
      +
      Sanitizes a path segment to ensure it starts with '/' and has no trailing slash. + Replaces multiple slashes with a single one.
      +
      +
    • +
    • +
      +

      join

      +
      public static String join(String base, + String path)
      +
      Joins two path segments and ensures the result is sanitized. + Prevents "double namespace" if the path already starts with the base.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/Route.html b/javadoc/2.0.0/dev/relism/flash/routing/Route.html new file mode 100644 index 0000000..838968a --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/Route.html @@ -0,0 +1,169 @@ + + + + +Route (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface Route

+
+
+
+
@Retention(RUNTIME) +@Target({TYPE,ANNOTATION_TYPE}) +public @interface Route
+
HTTP method and path for a class-based RequestHandler. + Path is relative to the mount namespace (e.g. path = "/profile" under /api + → /api/profile). + +

Prefer shorthand (@GET("/x"), @POST("/x"), …); they are meta-annotated + with @Route and resolve to the same metadata as an explicit @Route(method=…, path=…) + via Routes.of(Class).

+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • + +
  • +
    +

    Optional Element Summary

    +
    Optional Elements
    +
    +
    Modifier and Type
    +
    Optional Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      method

      +
      HttpMethod method
      +
      +
      Default:
      +
      GET
      +
      +
      +
    • +
    • +
      +

      path

      +
      String path
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/Routes.html b/javadoc/2.0.0/dev/relism/flash/routing/Routes.html new file mode 100644 index 0000000..34a30c7 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/Routes.html @@ -0,0 +1,156 @@ + + + + +Routes (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Routes

+
+
java.lang.Object +
dev.relism.flash.routing.Routes
+
+
+
+
public final class Routes +extends Object
+
Boot-time resolution of Route from a handler class (direct @Route or shorthand).
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      of

      +
      public static Route of(Class<?> cls)
      +
      Effective route for cls, or null. Prefers @Route on the class; + otherwise the first annotation type meta-annotated with @Route (e.g. @GET). + If several routing annotations are present, behaviour is undefined — use one.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/TRACE.html b/javadoc/2.0.0/dev/relism/flash/routing/TRACE.html new file mode 100644 index 0000000..88639e6 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/TRACE.html @@ -0,0 +1,138 @@ + + + + +TRACE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface TRACE

+
+
+
+
@Retention(RUNTIME) +@Target(TYPE) +public @interface TRACE
+
Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
+
+
+
    + +
  • +
    +

    Required Element Summary

    +
    Required Elements
    +
    +
    Modifier and Type
    +
    Required Element
    +
    Description
    + + +
     
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Element Details

    +
      +
    • +
      +

      value

      +
      String value
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html new file mode 100644 index 0000000..fbf4d73 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html @@ -0,0 +1,121 @@ + + + + +Uses of Interface dev.relism.flash.routing.AbstractRouter.ExceptionHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.routing.AbstractRouter.ExceptionHandler

+
+ +
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.html new file mode 100644 index 0000000..39c61e5 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/AbstractRouter.html @@ -0,0 +1,143 @@ + + + + +Uses of Class dev.relism.flash.routing.AbstractRouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.AbstractRouter

+
+
Packages that use AbstractRouter
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/CONNECT.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/CONNECT.html new file mode 100644 index 0000000..fbd037f --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/CONNECT.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.CONNECT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.CONNECT

+
+No usage of dev.relism.flash.routing.CONNECT
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/DELETE.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/DELETE.html new file mode 100644 index 0000000..5879e07 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/DELETE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.DELETE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.DELETE

+
+No usage of dev.relism.flash.routing.DELETE
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/GET.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/GET.html new file mode 100644 index 0000000..7208739 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/GET.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.GET (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.GET

+
+No usage of dev.relism.flash.routing.GET
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/HEAD.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/HEAD.html new file mode 100644 index 0000000..18a4c96 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/HEAD.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.HEAD (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.HEAD

+
+No usage of dev.relism.flash.routing.HEAD
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/Middleware.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Middleware.html new file mode 100644 index 0000000..e6b035c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Middleware.html @@ -0,0 +1,265 @@ + + + + +Uses of Interface dev.relism.flash.routing.Middleware (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Interface
dev.relism.flash.routing.Middleware

+
+
Packages that use Middleware
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/OPTIONS.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/OPTIONS.html new file mode 100644 index 0000000..d5e4dea --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/OPTIONS.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.OPTIONS (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.OPTIONS

+
+No usage of dev.relism.flash.routing.OPTIONS
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/PATCH.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PATCH.html new file mode 100644 index 0000000..133f61d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PATCH.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PATCH (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.PATCH

+
+No usage of dev.relism.flash.routing.PATCH
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/POST.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/POST.html new file mode 100644 index 0000000..8700d56 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/POST.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.POST (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.POST

+
+No usage of dev.relism.flash.routing.POST
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/PURGE.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PURGE.html new file mode 100644 index 0000000..6a8ee42 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PURGE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PURGE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.PURGE

+
+No usage of dev.relism.flash.routing.PURGE
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/PUT.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PUT.html new file mode 100644 index 0000000..d517438 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PUT.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PUT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.PUT

+
+No usage of dev.relism.flash.routing.PUT
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/PathUtils.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PathUtils.html new file mode 100644 index 0000000..8bd57ca --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/PathUtils.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.PathUtils (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.PathUtils

+
+No usage of dev.relism.flash.routing.PathUtils
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/Route.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Route.html new file mode 100644 index 0000000..e75da9a --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Route.html @@ -0,0 +1,145 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.Route (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.Route

+
+
Packages that use Route
+
+
Package
+
Description
+ +
 
+
+
+
    +
  • +
    +

    Uses of Route in dev.relism.flash.routing

    +
    Classes in dev.relism.flash.routing with annotations of type Route
    +
    +
    Modifier and Type
    +
    Class
    +
    Description
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.GET, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.POST, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.PUT, path = "…").
    +
    +
    @interface 
    + +
    +
    Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
    +
    +
    +
    Methods in dev.relism.flash.routing that return Route
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static Route
    +
    Routes.of(Class<?> cls)
    +
    +
    Effective route for cls, or null.
    +
    +
    +
    +
  • +
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/Routes.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Routes.html new file mode 100644 index 0000000..ce8993d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/Routes.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.Routes (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.Routes

+
+No usage of dev.relism.flash.routing.Routes
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/class-use/TRACE.html b/javadoc/2.0.0/dev/relism/flash/routing/class-use/TRACE.html new file mode 100644 index 0000000..f92825d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/class-use/TRACE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.TRACE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Annotation Interface
dev.relism.flash.routing.TRACE

+
+No usage of dev.relism.flash.routing.TRACE
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/package-summary.html b/javadoc/2.0.0/dev/relism/flash/routing/package-summary.html new file mode 100644 index 0000000..7633537 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/package-summary.html @@ -0,0 +1,177 @@ + + + + +dev.relism.flash.routing (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.routing

+
+
+
package dev.relism.flash.routing
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/package-tree.html b/javadoc/2.0.0/dev/relism/flash/routing/package-tree.html new file mode 100644 index 0000000..ed44fe0 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/package-tree.html @@ -0,0 +1,101 @@ + + + + +dev.relism.flash.routing Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.routing

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Annotation Interface Hierarchy

+
    +
  • dev.relism.flash.routing.CONNECT (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.DELETE (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.GET (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.HEAD (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.OPTIONS (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PATCH (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.POST (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PURGE (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PUT (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.Route (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.TRACE (implements java.lang.annotation.Annotation)
  • +
+
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/package-use.html b/javadoc/2.0.0/dev/relism/flash/routing/package-use.html new file mode 100644 index 0000000..10acf36 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/package-use.html @@ -0,0 +1,147 @@ + + + + +Uses of Package dev.relism.flash.routing (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.routing

+
+
Packages that use dev.relism.flash.routing
+ +
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html new file mode 100644 index 0000000..ba28a9b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html @@ -0,0 +1,225 @@ + + + + +FastPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathRouterImpl

+
+
java.lang.Object +
dev.relism.flash.routing.AbstractRouter +
dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
+
+
+
+
+
public class FastPathRouterImpl +extends AbstractRouter
+
Router backed by the fpr-core byte-level state machine. Routes are compiled lazily + on the first request and recompiled when routes are added after startup. Matching runs on a + virtual METHOD + path byte sequence in a single pass; MatchResult and + FastPathViews.MethodPathByteView are reused per-thread to avoid hot-path allocations.
+
+
+ +
+
+ +
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html new file mode 100644 index 0000000..a0dec9a --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html @@ -0,0 +1,218 @@ + + + + +FastPathViews.MethodPathByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathViews.MethodPathByteView

+
+
java.lang.Object +
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+
+
+
+
All Implemented Interfaces:
+
dev.relism.fpr.core.ByteView
+
+
+
Enclosing class:
+
FastPathViews
+
+
+
public static final class FastPathViews.MethodPathByteView +extends Object +implements dev.relism.fpr.core.ByteView
+
Mutable composite view: method bytes + path. Reused via ThreadLocal, call reset() before use.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    byte
    +
    byteAt(int index)
    +
     
    +
    int
    + +
     
    +
    void
    +
    reset(byte[] method, + dev.relism.fpr.core.ByteView path)
    +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Methods inherited from interface dev.relism.fpr.core.ByteView

    +longAt, supportsLong
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MethodPathByteView

      +
      public MethodPathByteView()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      reset

      +
      public void reset(byte[] method, + dev.relism.fpr.core.ByteView path)
      +
      +
    • +
    • +
      +

      length

      +
      public int length()
      +
      +
      Specified by:
      +
      length in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    • +
      +

      byteAt

      +
      public byte byteAt(int index)
      +
      +
      Specified by:
      +
      byteAt in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html new file mode 100644 index 0000000..7973c2d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html @@ -0,0 +1,223 @@ + + + + +FastPathViews.RequestByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathViews.RequestByteView

+
+
java.lang.Object +
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+
+
+
+
All Implemented Interfaces:
+
dev.relism.fpr.core.ByteView
+
+
+
Enclosing class:
+
FastPathViews
+
+
+
public static final class FastPathViews.RequestByteView +extends Object +implements dev.relism.fpr.core.ByteView
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    RequestByteView(byte[] buffer, + int start, + int length)
    +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    byte
    +
    byteAt(int index)
    +
     
    +
    int
    + +
     
    + + +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +

    Methods inherited from interface dev.relism.fpr.core.ByteView

    +longAt, supportsLong
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RequestByteView

      +
      public RequestByteView(byte[] buffer, + int start, + int length)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      length

      +
      public int length()
      +
      +
      Specified by:
      +
      length in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    • +
      +

      byteAt

      +
      public byte byteAt(int index)
      +
      +
      Specified by:
      +
      byteAt in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html new file mode 100644 index 0000000..87cbc9c --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html @@ -0,0 +1,206 @@ + + + + +FastPathViews.SocketByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathViews.SocketByteView

+
+
java.lang.Object +
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
+
+
+
+
All Implemented Interfaces:
+
dev.relism.fpr.core.ByteView
+
+
+
Enclosing class:
+
FastPathViews
+
+
+
public static class FastPathViews.SocketByteView +extends Object +implements dev.relism.fpr.core.ByteView
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    SocketByteView(byte[] data)
    +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    byte
    +
    byteAt(int index)
    +
     
    +
    int
    + +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Methods inherited from interface dev.relism.fpr.core.ByteView

    +longAt, supportsLong
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SocketByteView

      +
      public SocketByteView(byte[] data)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      length

      +
      public int length()
      +
      +
      Specified by:
      +
      length in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    • +
      +

      byteAt

      +
      public byte byteAt(int index)
      +
      +
      Specified by:
      +
      byteAt in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html new file mode 100644 index 0000000..3ae968b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html @@ -0,0 +1,206 @@ + + + + +FastPathViews.StringByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathViews.StringByteView

+
+
java.lang.Object +
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
+
+
+
+
All Implemented Interfaces:
+
dev.relism.fpr.core.ByteView
+
+
+
Enclosing class:
+
FastPathViews
+
+
+
public static class FastPathViews.StringByteView +extends Object +implements dev.relism.fpr.core.ByteView
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      StringByteView

      +
      public StringByteView(String str)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      length

      +
      public int length()
      +
      +
      Specified by:
      +
      length in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    • +
      +

      byteAt

      +
      public byte byteAt(int index)
      +
      +
      Specified by:
      +
      byteAt in interface dev.relism.fpr.core.ByteView
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html new file mode 100644 index 0000000..352455b --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html @@ -0,0 +1,177 @@ + + + + +FastPathViews (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class FastPathViews

+
+
java.lang.Object +
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
+
+
+
+
public final class FastPathViews +extends Object
+
ByteView implementations used on the router and parser hot paths.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      FastPathViews

      +
      public FastPathViews()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html new file mode 100644 index 0000000..86cd576 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html new file mode 100644 index 0000000..8908883 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html new file mode 100644 index 0000000..4ea0ac5 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html new file mode 100644 index 0000000..4f7e8fd --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html new file mode 100644 index 0000000..1b8c2e0 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html new file mode 100644 index 0000000..1fcf1a9 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.fastpathrouter.FastPathViews

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html new file mode 100644 index 0000000..3515938 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html @@ -0,0 +1,112 @@ + + + + +dev.relism.flash.routing.routers.fastpathrouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.routing.routers.fastpathrouter

+
+
+
package dev.relism.flash.routing.routers.fastpathrouter
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html new file mode 100644 index 0000000..347bdc8 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html @@ -0,0 +1,85 @@ + + + + +dev.relism.flash.routing.routers.fastpathrouter Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.routing.routers.fastpathrouter

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-use.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-use.html new file mode 100644 index 0000000..14d1bef --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/fastpathrouter/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.routing.routers.fastpathrouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.routing.routers.fastpathrouter

+
+No usage of dev.relism.flash.routing.routers.fastpathrouter
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html new file mode 100644 index 0000000..ea77368 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html @@ -0,0 +1,150 @@ + + + + +RadixPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class RadixPathRouterImpl

+
+
java.lang.Object +
dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
+
+
+
+
public class RadixPathRouterImpl +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RadixPathRouterImpl

      +
      public RadixPathRouterImpl()
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html new file mode 100644 index 0000000..689e447 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.radix.RadixPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.routing.routers.radix.RadixPathRouterImpl

+
+No usage of dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-summary.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-summary.html new file mode 100644 index 0000000..b5a0cdb --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-summary.html @@ -0,0 +1,96 @@ + + + + +dev.relism.flash.routing.routers.radix (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.routing.routers.radix

+
+
+
package dev.relism.flash.routing.routers.radix
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-tree.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-tree.html new file mode 100644 index 0000000..522dce2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-tree.html @@ -0,0 +1,76 @@ + + + + +dev.relism.flash.routing.routers.radix Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.routing.routers.radix

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-use.html b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-use.html new file mode 100644 index 0000000..b1c266f --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/routing/routers/radix/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.routing.routers.radix (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.routing.routers.radix

+
+No usage of dev.relism.flash.routing.routers.radix
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/ByteTemplate.html b/javadoc/2.0.0/dev/relism/flash/template/ByteTemplate.html new file mode 100644 index 0000000..4e696cf --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/ByteTemplate.html @@ -0,0 +1,188 @@ + + + + +ByteTemplate (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ByteTemplate

+
+
java.lang.Object +
dev.relism.flash.template.ByteTemplate
+
+
+
+
public final class ByteTemplate +extends Object
+
Precompiled, allocation-minimal byte template. +

+ Placeholders of the form {{name}} are detected once at construction. + Each render(java.lang.String...) call makes exactly one allocation: the output byte[]. +

+ Layout: seg[0] slot[0] seg[1] slot[1] … seg[n-1] slot[n-1] seg[n]

+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ByteTemplate

      +
      public ByteTemplate(String source)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      render

      +
      public byte[] render(String... kvPairs)
      +
      Render with alternating key-value String pairs: k1, v1, k2, v2, … + Unmatched slots are rendered as empty.
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/ErrorPages.html b/javadoc/2.0.0/dev/relism/flash/template/ErrorPages.html new file mode 100644 index 0000000..243c369 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/ErrorPages.html @@ -0,0 +1,193 @@ + + + + +ErrorPages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ErrorPages

+
+
java.lang.Object +
dev.relism.flash.template.ErrorPages
+
+
+
+
public final class ErrorPages +extends Object
+
Precompiled error page templates. +

+ Static placeholders (logo_img, version) are baked in once at + class init. Dynamic placeholders (method, path, exception …) are filled per + call with a single allocation via ByteTemplate.render(java.lang.String...).

+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ErrorPages

      +
      public ErrorPages()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      renderNotFound

      +
      public static byte[] renderNotFound(Request request)
      +
      +
    • +
    • +
      +

      renderException

      +
      public static byte[] renderException(Request request, + Exception ex)
      +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/class-use/ByteTemplate.html b/javadoc/2.0.0/dev/relism/flash/template/class-use/ByteTemplate.html new file mode 100644 index 0000000..dd60044 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/class-use/ByteTemplate.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.template.ByteTemplate (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.template.ByteTemplate

+
+No usage of dev.relism.flash.template.ByteTemplate
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/class-use/ErrorPages.html b/javadoc/2.0.0/dev/relism/flash/template/class-use/ErrorPages.html new file mode 100644 index 0000000..f6a96e6 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/class-use/ErrorPages.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.template.ErrorPages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
dev.relism.flash.template.ErrorPages

+
+No usage of dev.relism.flash.template.ErrorPages
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/package-summary.html b/javadoc/2.0.0/dev/relism/flash/template/package-summary.html new file mode 100644 index 0000000..c9ae560 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/package-summary.html @@ -0,0 +1,123 @@ + + + + +dev.relism.flash.template (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Package dev.relism.flash.template

+
+
+
package dev.relism.flash.template
+
+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/package-tree.html b/javadoc/2.0.0/dev/relism/flash/template/package-tree.html new file mode 100644 index 0000000..fc124d2 --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/package-tree.html @@ -0,0 +1,77 @@ + + + + +dev.relism.flash.template Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package dev.relism.flash.template

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+ +
+
+ + diff --git a/javadoc/2.0.0/dev/relism/flash/template/package-use.html b/javadoc/2.0.0/dev/relism/flash/template/package-use.html new file mode 100644 index 0000000..e4b498d --- /dev/null +++ b/javadoc/2.0.0/dev/relism/flash/template/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.template (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
dev.relism.flash.template

+
+No usage of dev.relism.flash.template
+ +
+
+ + diff --git a/javadoc/2.0.0/element-list b/javadoc/2.0.0/element-list new file mode 100644 index 0000000..658a1f0 --- /dev/null +++ b/javadoc/2.0.0/element-list @@ -0,0 +1,10 @@ +dev.relism.flash +dev.relism.flash.api.multipart +dev.relism.flash.exceptions +dev.relism.flash.extension +dev.relism.flash.http +dev.relism.flash.models +dev.relism.flash.routing +dev.relism.flash.routing.routers.fastpathrouter +dev.relism.flash.routing.routers.radix +dev.relism.flash.template diff --git a/javadoc/2.0.0/help-doc.html b/javadoc/2.0.0/help-doc.html new file mode 100644 index 0000000..cc0d38a --- /dev/null +++ b/javadoc/2.0.0/help-doc.html @@ -0,0 +1,203 @@ + + + + +API Help (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exception Classes
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Constant Field Values

+

The Constant Field Values page lists the static final fields and their values.

+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+ +
+
+ + diff --git a/javadoc/2.0.0/index-all.html b/javadoc/2.0.0/index-all.html new file mode 100644 index 0000000..aba0af6 --- /dev/null +++ b/javadoc/2.0.0/index-all.html @@ -0,0 +1,1296 @@ + + + + +Index (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I J L M N O P Q R S T U V W X Z 
All Classes and Interfaces|All Packages|Constant Field Values|Serialized Form +

A

+
+
AbstractRouter - Class in dev.relism.flash.routing
+
+
Base router contract.
+
+
AbstractRouter() - Constructor for class dev.relism.flash.routing.AbstractRouter
+
 
+
AbstractRouter.ExceptionHandler - Interface in dev.relism.flash.routing
+
 
+
ACCEPTED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
addAnnotationProcessor(AnnotationProcessor) - Method in class dev.relism.flash.extension.FlashContext
+
+
Registers an AnnotationProcessor.
+
+
addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashApp
+
 
+
addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashRegistrar
+
+
Registers a middleware in this registrar's own scope (global or scope-level).
+
+
addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashScope
+
 
+
addRoute(HttpMethod, String, RequestHandler) - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
addRoute(HttpMethod, String, RequestHandler) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
+
 
+
addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashApp
+
 
+
addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashRegistrar
+
+
Adds a route immediately to this registrar's deferred compilation list.
+
+
addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashScope
+
 
+
addRouteListener(RouteListener) - Method in class dev.relism.flash.extension.FlashContext
+
+
Registers a boot-time RouteListener.
+
+
all() - Method in class dev.relism.flash.models.HeaderMap
+
+
Returns all header values in declaration order.
+
+
all(String) - Method in class dev.relism.flash.models.HeaderMap
+
+
Returns all values of header name in declaration order, or an empty list.
+
+
AnnotationProcessor - Interface in dev.relism.flash.extension
+
+
Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically.
+
+
AUDIO_MPEG - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
AUDIO_OGG - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+

B

+
+
BAD_GATEWAY - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
BAD_REQUEST - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
badRequest(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
BINARY - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
bind(FlashContext) - Method in class dev.relism.flash.models.RequestHandler
+
+
Called once by the framework after instantiation, before the first request.
+
+
body() - Method in class dev.relism.flash.models.Request
+
+
Returns the request body accessor.
+
+
body(byte[]) - Method in class dev.relism.flash.models.Response
+
 
+
body(String) - Method in class dev.relism.flash.models.Response
+
 
+
byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+
 
+
byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+
 
+
byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
+
 
+
byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
+
 
+
bytes() - Method in enum class dev.relism.flash.http.HttpStatus
+
+
Pre-encoded "200 OK" bytes — zero allocation on the write path.
+
+
bytes() - Method in class dev.relism.flash.models.RequestBody
+
+
Materialises and caches the full body.
+
+
bytesForCode(int) - Static method in enum class dev.relism.flash.http.HttpStatus
+
+
Returns pre-compiled status bytes for the given code.
+
+
ByteTemplate - Class in dev.relism.flash.template
+
+
Precompiled, allocation-minimal byte template.
+
+
ByteTemplate(String) - Constructor for class dev.relism.flash.template.ByteTemplate
+
 
+
+

C

+
+
CBOR - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
child() - Method in class dev.relism.flash.extension.FlashContext
+
+
Creates a child context that inherits this context's services and processors.
+
+
chunked(InputStream) - Method in class dev.relism.flash.models.Response
+
+
Streaming response with unknown length; written with Transfer-Encoding: chunked.
+
+
code() - Method in enum class dev.relism.flash.http.HttpStatus
+
+
Numeric status code (e.g.
+
+
commons - Static variable in class dev.relism.flash.Flash
+
 
+
Commons() - Constructor for class dev.relism.flash.Flash.Commons
+
 
+
conflict(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
CONFLICT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
connect(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
CONNECT - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
CONNECT - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
+
+
contentLength() - Method in class dev.relism.flash.models.RequestBody
+
+
Declared body size in bytes.
+
+
contentType() - Method in class dev.relism.flash.api.multipart.Part
+
+
Content-Type declared in the part headers, or null if absent.
+
+
ContentType - Enum Class in dev.relism.flash.http
+
+
Pre-compiled byte representations of common HTTP Content-Type values.
+
+
CONTINUE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
cors() - Method in class dev.relism.flash.Flash.Middlewares
+
 
+
cors(Flash.Middlewares.CorsConfig) - Method in class dev.relism.flash.Flash.Middlewares
+
 
+
cors(Consumer<Flash.Middlewares.CorsConfig>) - Method in class dev.relism.flash.Flash.Middlewares
+
 
+
CorsConfig() - Constructor for class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
create(int) - Static method in class dev.relism.flash.extension.FlashApp
+
 
+
create(FlashConfiguration) - Static method in class dev.relism.flash.extension.FlashApp
+
 
+
create(FlashConfiguration, AbstractRouter) - Static method in interface dev.relism.flash.ServerHandle
+
 
+
CREATED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
credentials() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
credentials(boolean) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
ctx() - Method in class dev.relism.flash.extension.FlashApp
+
 
+
ctx() - Method in class dev.relism.flash.extension.FlashRegistrar
+
+
Returns the FlashContext for this registrar.
+
+
ctx() - Method in class dev.relism.flash.extension.FlashScope
+
 
+
+

D

+
+
DEFAULT - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
+
+
Normal application extensions.
+
+
Default error handlers - Search tag in class dev.relism.flash.extension.FlashApp
+
Section
+
Default error handlers - Search tag in class dev.relism.flash.routing.AbstractRouter
+
Section
+
delete(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
DELETE - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
DELETE - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
+
+
DEV - Static variable in class dev.relism.flash.Flash
+
 
+
dev.relism.flash - package dev.relism.flash
+
 
+
dev.relism.flash.api.multipart - package dev.relism.flash.api.multipart
+
 
+
dev.relism.flash.exceptions - package dev.relism.flash.exceptions
+
 
+
dev.relism.flash.extension - package dev.relism.flash.extension
+
 
+
dev.relism.flash.http - package dev.relism.flash.http
+
 
+
dev.relism.flash.models - package dev.relism.flash.models
+
 
+
dev.relism.flash.routing - package dev.relism.flash.routing
+
 
+
dev.relism.flash.routing.routers.fastpathrouter - package dev.relism.flash.routing.routers.fastpathrouter
+
 
+
dev.relism.flash.routing.routers.radix - package dev.relism.flash.routing.routers.radix
+
 
+
dev.relism.flash.template - package dev.relism.flash.template
+
 
+
Dev mode - Search tag in class dev.relism.flash.Flash
+
Section
+
doRegister(HttpMethod, String, RequestHandler, Middleware[]) - Method in class dev.relism.flash.routing.AbstractRouter
+
+
Registers a handler with a pre-built middleware array.
+
+
drain() - Method in class dev.relism.flash.models.Request
+
+
Discards unread body bytes; called by the server after each request on keep-alive connections.
+
+
+

E

+
+
Eager vs lazy registration - Search tag in class dev.relism.flash.extension.FlashContext
+
Section
+
EARLY - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
+
+
Security guards, rate limiting — must short-circuit before expensive processing.
+
+
EMPTY - Static variable in class dev.relism.flash.models.QueryParams
+
 
+
equals(Object) - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Indicates whether some other object is "equal to" this one.
+
+
ErrorPages - Class in dev.relism.flash.template
+
+
Precompiled error page templates.
+
+
ErrorPages() - Constructor for class dev.relism.flash.template.ErrorPages
+
 
+
Example - Search tag in interface dev.relism.flash.extension.FlashExtension
+
Section
+
exceptionHandler - Variable in class dev.relism.flash.routing.AbstractRouter
+
 
+
ExtensionPhase - Enum Class in dev.relism.flash.extension
+
+
Semantic execution phases for FlashExtension.priority().
+
+
+

F

+
+
FastPathRouterImpl - Class in dev.relism.flash.routing.routers.fastpathrouter
+
+
Router backed by the fpr-core byte-level state machine.
+
+
FastPathRouterImpl() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
+
 
+
FastPathViews - Class in dev.relism.flash.routing.routers.fastpathrouter
+
+
ByteView implementations used on the router and parser hot paths.
+
+
FastPathViews() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
+
 
+
FastPathViews.MethodPathByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
+
+
Mutable composite view: method bytes + path.
+
+
FastPathViews.RequestByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
+
 
+
FastPathViews.SocketByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
+
 
+
FastPathViews.StringByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
+
 
+
field(String) - Method in class dev.relism.flash.api.multipart.Multipart
+
+
Returns the text value of the first field named name, or null.
+
+
file(String) - Method in class dev.relism.flash.api.multipart.Multipart
+
+
Returns the first file part named name, or null.
+
+
filename() - Method in class dev.relism.flash.api.multipart.Part
+
+
Original filename from filename="...", or null for text fields.
+
+
find(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
+
+
Returns the service for type, or empty if not found in this scope or any parent.
+
+
find(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
+
+
Looks up an optional service from the FlashContext.
+
+
first(String) - Method in class dev.relism.flash.models.HeaderMap
+
+
Returns the first value of header name (case-insensitive), or null.
+
+
Flash - Class in dev.relism.flash
+
+
Global Flash constants and runtime environment flags.
+
+
Flash.Commons - Class in dev.relism.flash
+
 
+
Flash.Middlewares - Class in dev.relism.flash
+
 
+
Flash.Middlewares.CorsConfig - Class in dev.relism.flash
+
 
+
FlashApp - Class in dev.relism.flash.extension
+
+
Single entry point for Flash.
+
+
FlashConfiguration - Class in dev.relism.flash.extension
+
+
Configuration for a FlashApp instance.
+
+
FlashConfiguration() - Constructor for class dev.relism.flash.extension.FlashConfiguration
+
 
+
FlashContext - Class in dev.relism.flash.extension
+
+
Central service registry and boot-time hook coordinator.
+
+
FlashContext() - Constructor for class dev.relism.flash.extension.FlashContext
+
 
+
FlashExtension - Interface in dev.relism.flash.extension
+
+
Two-phase contract for all Flash extensions.
+
+
FlashRegistrar<SELF> - Class in dev.relism.flash.extension
+
+
Common route-registration surface shared by FlashApp and FlashScope.
+
+
FlashRegistrar() - Constructor for class dev.relism.flash.extension.FlashRegistrar
+
 
+
FlashScope - Class in dev.relism.flash.extension
+
+
Scoped builder for namespace-prefixed routes.
+
+
FONT_WOFF - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
FONT_WOFF2 - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
forbidden() - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
FORBIDDEN - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
FORM_URLENCODED - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
forParsed(RequestLine, InputStream, long, byte[], int, int, InetSocketAddress) - Static method in class dev.relism.flash.models.Request
+
 
+
FOUND - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
fromBytes(byte[], int, int) - Static method in enum class dev.relism.flash.http.HttpMethod
+
+
Resolves the HttpMethod from a byte buffer segment using O(1) dispatch.
+
+
+

G

+
+
GATEWAY_TIMEOUT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
get(String) - Method in class dev.relism.flash.models.PathParams
+
 
+
get(String) - Method in class dev.relism.flash.models.QueryParams
+
 
+
get(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
GET - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
GET - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.GET, path = "…").
+
+
getAll(String) - Method in class dev.relism.flash.models.QueryParams
+
 
+
getExceptionHandler() - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
getHeaders() - Method in class dev.relism.flash.models.Response
+
+
Returns custom headers, or an empty list if none were added.
+
+
getNotFoundHandler() - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
GONE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
GRAPHQL - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
GZIP - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+

H

+
+
handle(Request, Response) - Method in class dev.relism.flash.models.RequestHandler
+
+
Handles an incoming request.
+
+
handle(Request, Response) - Method in interface dev.relism.flash.models.SimpleHandler.FunctionalHandler
+
 
+
handle(Request, Response) - Method in class dev.relism.flash.models.SimpleHandler
+
 
+
handle(Exception, Request, Response) - Method in interface dev.relism.flash.routing.AbstractRouter.ExceptionHandler
+
 
+
Handler abstraction chain - Search tag in record class dev.relism.flash.extension.RouteEvent
+
Section
+
handlerClass() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the handlerClass record component.
+
+
hashCode() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns a hash code value for this object.
+
+
head(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
HEAD - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
HEAD - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
+
+
header(byte[]) - Method in class dev.relism.flash.models.Response
+
+
Adds a pre-encoded header (e.g. a static "X-RateLimit-Limit: 100\r\n" byte array + pre-built at boot time).
+
+
header(String) - Method in class dev.relism.flash.models.Request
+
+
Returns the first value of header name, or null if absent.
+
+
header(String, String) - Method in class dev.relism.flash.models.Response
+
+
Adds a response header.
+
+
headerEquals(String, String) - Method in class dev.relism.flash.models.Request
+
+
Internal: case-insensitive header value comparison used by the server keep-alive logic.
+
+
HeaderMap - Class in dev.relism.flash.models
+
+
Lazy, zero-copy header access backed directly by the request parser's byte buffer.
+
+
HeaderMap() - Constructor for class dev.relism.flash.models.HeaderMap
+
 
+
headers() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
headers() - Method in class dev.relism.flash.models.Request
+
+
Returns all header values in declaration order, one entry per header line.
+
+
headers(String) - Method in class dev.relism.flash.models.Request
+
+
Returns all values of header name in declaration order.
+
+
headers(String...) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
HttpException - Exception Class in dev.relism.flash.exceptions
+
+
Runtime exception carrying an HTTP status code.
+
+
HttpException(int, String) - Constructor for exception class dev.relism.flash.exceptions.HttpException
+
 
+
HttpMethod - Enum Class in dev.relism.flash.http
+
 
+
HttpStatus - Enum Class in dev.relism.flash.http
+
+
Pre-compiled byte representations of standard HTTP status lines.
+
+
+

I

+
+
IMAGE_AVIF - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_GIF - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_ICO - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_JPEG - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_PNG - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_SVG - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
IMAGE_WEBP - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
InitializationException - Exception Class in dev.relism.flash.exceptions
+
+
Thrown at boot time when Flash detects a configuration or registration error.
+
+
InitializationException(String) - Constructor for exception class dev.relism.flash.exceptions.InitializationException
+
 
+
InitializationException(String, Throwable) - Constructor for exception class dev.relism.flash.exceptions.InitializationException
+
 
+
inject(Request, PathParams) - Static method in class dev.relism.flash.models.PathParams
+
+
Injects path parameters into a request.
+
+
install(FlashExtension) - Method in class dev.relism.flash.extension.FlashApp
+
+
Registers an extension for two-phase installation at startup.
+
+
instantiate(Class<?>) - Static method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
internal(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
INTERNAL_SERVER_ERROR - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
isEmpty() - Method in class dev.relism.flash.models.RequestBody
+
+
true if the body has zero bytes (Content-Length: 0 or no body).
+
+
isFile() - Method in class dev.relism.flash.api.multipart.Part
+
+
true if this part has a filename attribute (i.e. a file upload).
+
+
isStreaming() - Method in class dev.relism.flash.models.Response
+
 
+
+

J

+
+
join(String, String) - Static method in class dev.relism.flash.routing.PathUtils
+
+
Joins two path segments and ensures the result is sanitized.
+
+
JSON - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+

L

+
+
LATE - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
+
+
Observability, logging, diagnostics — must observe after all business logic.
+
+
LD_JSON - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+
 
+
length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+
 
+
length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
+
 
+
length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
+
 
+
LENGTH_REQUIRED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
Lifecycle - Search tag in class dev.relism.flash.models.RequestHandler
+
Section
+
Lifetime contract — read carefully - Search tag in class dev.relism.flash.models.HeaderMap
+
Section
+
+

M

+
+
main(String[]) - Static method in class dev.relism.flash.Main
+
 
+
Main - Class in dev.relism.flash
+
 
+
Main() - Constructor for class dev.relism.flash.Main
+
 
+
materialize() - Method in class dev.relism.flash.api.multipart.Part
+
+
Materialises the body into a byte[].
+
+
method() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the method record component.
+
+
method() - Method in class dev.relism.flash.models.Request
+
+
HTTP method (GET, POST, …).
+
+
method() - Element in annotation interface dev.relism.flash.routing.Route
+
 
+
METHOD_NOT_ALLOWED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
MethodPathByteView() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+
 
+
methods() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
methods(String...) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
Middleware - Interface in dev.relism.flash.routing
+
+
Stateless interceptor applied around a RequestHandler.
+
+
middlewareChain() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the middlewareChain record component.
+
+
Middleware chain - Search tag in record class dev.relism.flash.extension.RouteEvent
+
Section
+
middlewares - Variable in class dev.relism.flash.Flash.Commons
+
 
+
Middlewares() - Constructor for class dev.relism.flash.Flash.Middlewares
+
 
+
mount(String, Consumer<FlashScope>) - Method in class dev.relism.flash.extension.FlashApp
+
+
Mounts a scoped group of routes under namespace.
+
+
MOVED_PERMANENTLY - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
MSGPACK - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
Multipart - Class in dev.relism.flash.api.multipart
+
+
Lazy streaming multipart/form-data parser.
+
+
MULTIPART_FORM - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+

N

+
+
name() - Method in class dev.relism.flash.api.multipart.Part
+
+
Field or file name from Content-Disposition: form-data; name="...".
+
+
namespace() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the namespace record component.
+
+
NDJSON - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
NO_CONTENT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
NONE - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
NOT_ACCEPTABLE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
NOT_FOUND - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
NOT_IMPLEMENTED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
NOT_MODIFIED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
notFound(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
notFoundHandler - Variable in class dev.relism.flash.routing.AbstractRouter
+
 
+
+

O

+
+
of(Request) - Static method in class dev.relism.flash.api.multipart.Multipart
+
+
Creates a parser for request.
+
+
of(Middleware...) - Static method in interface dev.relism.flash.routing.Middleware
+
+
Composes an ordered chain of middlewares into a single Middleware.
+
+
of(Class<?>) - Static method in class dev.relism.flash.routing.Routes
+
+
Effective route for cls, or null.
+
+
OK - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
onException(AbstractRouter.ExceptionHandler) - Method in class dev.relism.flash.extension.FlashApp
+
 
+
onException(AbstractRouter.ExceptionHandler) - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
onInit() - Method in class dev.relism.flash.models.RequestHandler
+
+
Override to cache services at boot time.
+
+
onNotFound(SimpleHandler.FunctionalHandler) - Method in class dev.relism.flash.extension.FlashApp
+
 
+
onNotFound(SimpleHandler.FunctionalHandler) - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
onRoute(RouteEvent) - Method in interface dev.relism.flash.extension.RouteListener
+
+
Called once for every registered route, in registration order.
+
+
optional(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
+
+
Alias for FlashContext.find(java.lang.Class<T>) — prefer when semantics are "this may or may not exist".
+
+
optional(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
+
+
Looks up an optional service from the FlashContext.
+
+
options(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
OPTIONS - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
OPTIONS - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
+
+
origin() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
origin(String) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
+
 
+
+

P

+
+
param(String) - Method in class dev.relism.flash.models.Request
+
+
Returns the path parameter named name, or null.
+
+
paramInt(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the path parameter as an int.
+
+
paramLong(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the path parameter as a long.
+
+
paramRequired(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the path parameter as a String.
+
+
parse(InputStream) - Method in class dev.relism.flash.RequestParser
+
 
+
Part - Class in dev.relism.flash.api.multipart
+
+
One part of a multipart/form-data body produced by Multipart.
+
+
PARTIAL_CONTENT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
parts() - Method in class dev.relism.flash.api.multipart.Multipart
+
+
Returns all parts in declaration order.
+
+
parts(String) - Method in class dev.relism.flash.api.multipart.Multipart
+
+
Returns all parts named name in declaration order.
+
+
patch(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
PATCH - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
PATCH - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
+
+
path() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the path record component.
+
+
path() - Method in class dev.relism.flash.models.Request
+
+
Request path decoded as UTF-8.
+
+
path() - Element in annotation interface dev.relism.flash.routing.Route
+
 
+
PathParams - Class in dev.relism.flash.models
+
+
Path parameters captured during routing, stored as byte offsets into the path view.
+
+
PathParams(ByteView, String[], int[], int[]) - Constructor for class dev.relism.flash.models.PathParams
+
 
+
PathUtils - Class in dev.relism.flash.routing
+
 
+
PathUtils() - Constructor for class dev.relism.flash.routing.PathUtils
+
 
+
PAYLOAD_TOO_LARGE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
PDF - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
PERMANENT_REDIRECT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
post(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
POST - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
POST - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.POST, path = "…").
+
+
priority() - Method in interface dev.relism.flash.extension.FlashExtension
+
+
Execution priority.
+
+
Priority and middleware ordering - Search tag in interface dev.relism.flash.extension.FlashExtension
+
Section
+
process(Class<? extends RequestHandler>) - Method in interface dev.relism.flash.extension.AnnotationProcessor
+
 
+
provide(FlashContext) - Method in interface dev.relism.flash.extension.FlashExtension
+
+
Phase 1 — register services and processors.
+
+
provide(Class<T>, T) - Method in class dev.relism.flash.extension.FlashContext
+
+
Registers an already-constructed instance under type.
+
+
purge(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
PURGE - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
PURGE - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
+
+
put(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
PUT - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
PUT - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.PUT, path = "…").
+
+
+

Q

+
+
queries(String) - Method in class dev.relism.flash.models.Request
+
+
Returns all query parameters named name in declaration order.
+
+
query(String) - Method in class dev.relism.flash.models.Request
+
+
Returns the first query parameter named name, or null.
+
+
queryInt(Request, String, int, int) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the query param as an int, or defaultValue if absent.
+
+
queryLong(Request, String, long) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the query param as a long, or defaultValue if absent.
+
+
queryOptional(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the query param, or null if absent.
+
+
QueryParams - Class in dev.relism.flash.models
+
+
Lazy query parameter access (?key=value&...).
+
+
QueryParams(ByteView) - Constructor for class dev.relism.flash.models.QueryParams
+
 
+
queryRequired(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
+
+
Returns the query param value.
+
+
+

R

+
+
RadixPathRouterImpl - Class in dev.relism.flash.routing.routers.radix
+
 
+
RadixPathRouterImpl() - Constructor for class dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
+
 
+
reason() - Method in enum class dev.relism.flash.http.HttpStatus
+
+
Reason phrase (e.g.
+
+
reasonForCode(int) - Static method in enum class dev.relism.flash.http.HttpStatus
+
+
Returns reason phrase for the given code, or null if unknown.
+
+
redirect(HttpStatus, String) - Method in class dev.relism.flash.models.Response
+
+
Redirect with an explicit 3xx status.
+
+
redirect(String) - Method in class dev.relism.flash.models.Response
+
+
302 Found redirect.
+
+
remoteAddress() - Method in class dev.relism.flash.models.Request
+
+
Returns the remote socket address of the connected client, or null + for test-constructed requests.
+
+
render(String...) - Method in class dev.relism.flash.template.ByteTemplate
+
+
Render with alternating key-value String pairs: k1, v1, k2, v2, … + Unmatched slots are rendered as empty.
+
+
renderException(Request, Exception) - Static method in class dev.relism.flash.template.ErrorPages
+
 
+
renderNotFound(Request) - Static method in class dev.relism.flash.template.ErrorPages
+
 
+
Request - Class in dev.relism.flash.models
+
+
Immutable view of an incoming HTTP/1.1 request.
+
+
Request(RequestLine, byte[]) - Constructor for class dev.relism.flash.models.Request
+
+
Test / manual constructor — remoteAddress() returns null.
+
+
RequestBody - Class in dev.relism.flash.models
+
+
Accessor for the HTTP request body.
+
+
RequestByteView(byte[], int, int) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+
 
+
RequestHandler - Class in dev.relism.flash.models
+
+
Base class for class-based route handlers.
+
+
RequestHandler() - Constructor for class dev.relism.flash.models.RequestHandler
+
 
+
RequestHelper - Class in dev.relism.flash.models
+
+
Typed accessors for request parameters.
+
+
RequestLine - Class in dev.relism.flash.models
+
 
+
RequestLine() - Constructor for class dev.relism.flash.models.RequestLine
+
 
+
RequestParser - Class in dev.relism.flash
+
+
One instance per connection, the buffer is allocated once and reused across keep-alive + requests.
+
+
RequestParser() - Constructor for class dev.relism.flash.RequestParser
+
 
+
RequestParser(int) - Constructor for class dev.relism.flash.RequestParser
+
 
+
RequestParser(int, InetSocketAddress) - Constructor for class dev.relism.flash.RequestParser
+
 
+
require(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
+
+
Returns the service for type.
+
+
require(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
+
+
Retrieves a required service from the FlashContext.
+
+
reset(byte[], int, int) - Method in class dev.relism.flash.models.HeaderMap
+
+
Resets this map to the header section buffer[sectionStart, sectionEnd).
+
+
reset(byte[], ByteView) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
+
 
+
Response - Class in dev.relism.flash.models
+
+
HTTP response.
+
+
Response(int, byte[], ContentType) - Constructor for class dev.relism.flash.models.Response
+
 
+
Response(int, ContentType) - Constructor for class dev.relism.flash.models.Response
+
 
+
Response(int, String, ContentType) - Constructor for class dev.relism.flash.models.Response
+
 
+
route(Request) - Method in class dev.relism.flash.routing.AbstractRouter
+
 
+
route(Request) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
+
 
+
Route - Annotation Interface in dev.relism.flash.routing
+
+
HTTP method and path for a class-based RequestHandler.
+
+
RouteEvent - Record Class in dev.relism.flash.extension
+
+
Immutable snapshot of a route captured at registration time.
+
+
RouteEvent(HttpMethod, String, String, String, Class<?>, List<Class<? extends Middleware>>) - Constructor for record class dev.relism.flash.extension.RouteEvent
+
+
Creates an instance of a RouteEvent record class.
+
+
RouteListener - Interface in dev.relism.flash.extension
+
+
Observer notified once for each route registered on a FlashApp or FlashScope.
+
+
routerType() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns the value of the routerType record component.
+
+
routes(FlashRegistrar<?>, FlashContext) - Method in interface dev.relism.flash.extension.FlashExtension
+
+
Phase 2 — register routes.
+
+
Routes - Class in dev.relism.flash.routing
+
+
Boot-time resolution of Route from a handler class (direct @Route or shorthand).
+
+
+

S

+
+
sanitize(String) - Static method in class dev.relism.flash.routing.PathUtils
+
+
Sanitizes a path segment to ensure it starts with '/' and has no trailing slash.
+
+
scan(String) - Method in class dev.relism.flash.extension.FlashRegistrar
+
+
Scans packageName for RequestHandler subclasses with a routing + annotation (@Route or @GET, @POST, …).
+
+
ServerHandle - Interface in dev.relism.flash
+
+
Public handle to the underlying HTTP transport.
+
+
SERVICE_UNAVAILABLE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
Service access - Search tag in class dev.relism.flash.models.RequestHandler
+
Section
+
setBody(Object) - Method in class dev.relism.flash.models.Response
+
+
Sets the body from a handler return value.
+
+
setPathParams(Request, String[], ByteView, int[], int[]) - Static method in class dev.relism.flash.routing.AbstractRouter
+
 
+
SimpleHandler - Class in dev.relism.flash.models
+
+
Delegates SimpleHandler.handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
+
+
SimpleHandler(SimpleHandler.FunctionalHandler) - Constructor for class dev.relism.flash.models.SimpleHandler
+
 
+
SimpleHandler.FunctionalHandler - Interface in dev.relism.flash.models
+
+
Functional interface for handling requests, used by SimpleHandler.
+
+
SocketByteView(byte[]) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
+
 
+
start() - Method in class dev.relism.flash.extension.FlashApp
+
+
Boots the server and starts accepting connections.
+
+
start() - Method in interface dev.relism.flash.ServerHandle
+
+
Starts the accept loop on a background platform thread.
+
+
startAndBlock() - Method in class dev.relism.flash.extension.FlashApp
+
+
Boots the server and blocks the calling thread until the server is stopped.
+
+
startAndBlock() - Method in interface dev.relism.flash.ServerHandle
+
+
Starts the accept loop and blocks the calling thread until the server is stopped.
+
+
Startup sequence (both #start() and #startAndBlock()) - Search tag in class dev.relism.flash.extension.FlashApp
+
Section
+
status() - Method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
status(int) - Method in class dev.relism.flash.models.Response
+
+
Sets the status code.
+
+
status(HttpStatus) - Method in class dev.relism.flash.models.Response
+
+
Sets the status from an HttpStatus constant.
+
+
stop() - Method in class dev.relism.flash.extension.FlashApp
+
 
+
stop() - Method in interface dev.relism.flash.ServerHandle
+
+
Gracefully stops the server, draining active connections.
+
+
stream() - Method in class dev.relism.flash.api.multipart.Part
+
+
Returns an InputStream over the part body.
+
+
stream() - Method in class dev.relism.flash.models.RequestBody
+
+
Returns a bounded InputStream over the body without upfront allocation.
+
+
stream(InputStream, long) - Method in class dev.relism.flash.models.Response
+
+
Streaming response with known length; written with Content-Length.
+
+
StringByteView(String) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
+
 
+
supply(Class<T>, Supplier<T>) - Method in class dev.relism.flash.extension.FlashContext
+
+
Registers a lazy factory for type.
+
+
SWITCHING_PROTOCOLS - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
+

T

+
+
TEMPORARY_REDIRECT - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
text() - Method in class dev.relism.flash.api.multipart.Part
+
+
Decodes the body as UTF-8.
+
+
TEXT_CSS - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_CSV - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_EVENT_STREAM - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_HTML - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_JAVASCRIPT - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_MARKDOWN - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_PLAIN - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TEXT_XML - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
TOO_MANY_REQUESTS - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
toString() - Method in record class dev.relism.flash.extension.RouteEvent
+
+
Returns a string representation of this record class.
+
+
toString() - Method in enum class dev.relism.flash.http.HttpMethod
+
 
+
toString() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
+
 
+
trace(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
 
+
TRACE - Enum constant in enum class dev.relism.flash.http.HttpMethod
+
 
+
TRACE - Annotation Interface in dev.relism.flash.routing
+
+
Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
+
+
type(ContentType) - Method in class dev.relism.flash.models.Response
+
 
+
type(String) - Method in class dev.relism.flash.models.Response
+
 
+
+

U

+
+
unauthorized() - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
UNAUTHORIZED - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
unprocessable(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
+
 
+
UNPROCESSABLE_ENTITY - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
UNSUPPORTED_MEDIA_TYPE - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
URI_TOO_LONG - Enum constant in enum class dev.relism.flash.http.HttpStatus
+
 
+
use(Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
+
+
Adds middlewares to this registrar's own scope.
+
+
+

V

+
+
value - Variable in enum class dev.relism.flash.extension.ExtensionPhase
+
+
The integer priority value used for sorting.
+
+
value() - Element in annotation interface dev.relism.flash.routing.CONNECT
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.DELETE
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.GET
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.HEAD
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.OPTIONS
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.PATCH
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.POST
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.PURGE
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.PUT
+
 
+
value() - Element in annotation interface dev.relism.flash.routing.TRACE
+
 
+
valueEqualsIgnoreCase(String, String) - Method in class dev.relism.flash.models.HeaderMap
+
+
Case-insensitive comparison of the first value of name against value.
+
+
valueOf(String) - Static method in enum class dev.relism.flash.extension.ExtensionPhase
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class dev.relism.flash.http.ContentType
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class dev.relism.flash.http.HttpMethod
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class dev.relism.flash.http.HttpStatus
+
+
Returns the enum constant of this class with the specified name.
+
+
values() - Static method in enum class dev.relism.flash.extension.ExtensionPhase
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class dev.relism.flash.http.ContentType
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class dev.relism.flash.http.HttpMethod
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class dev.relism.flash.http.HttpStatus
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
VERSION - Static variable in class dev.relism.flash.Flash
+
 
+
VIDEO_MP4 - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
VIDEO_WEBM - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
view(String) - Method in class dev.relism.flash.models.HeaderMap
+
+
Returns a zero-copy ByteView over the first value of name, or null.
+
+
+

W

+
+
wrap(RequestHandler) - Method in interface dev.relism.flash.routing.Middleware
+
+
Wraps next with this middleware's logic.
+
+
writeHeaders(OutputStream) - Method in class dev.relism.flash.models.Response
+
+
Writes pre-encoded custom headers directly to out.
+
+
+

X

+
+
XML - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+

Z

+
+
ZIP - Enum constant in enum class dev.relism.flash.http.ContentType
+
 
+
+A B C D E F G H I J L M N O P Q R S T U V W X Z 
All Classes and Interfaces|All Packages|Constant Field Values|Serialized Form
+ +
+
+ + diff --git a/javadoc/2.0.0/index.html b/javadoc/2.0.0/index.html new file mode 100644 index 0000000..dd8b212 --- /dev/null +++ b/javadoc/2.0.0/index.html @@ -0,0 +1,89 @@ + + + + +Overview (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

flash-parent 2.0.0 API

+
+ +
+ +
+
+ + diff --git a/javadoc/2.0.0/legal/ADDITIONAL_LICENSE_INFO b/javadoc/2.0.0/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..ff700cd --- /dev/null +++ b/javadoc/2.0.0/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1,37 @@ + ADDITIONAL INFORMATION ABOUT LICENSING + +Certain files distributed by Oracle America, Inc. and/or its affiliates are +subject to the following clarification and special exception to the GPLv2, +based on the GNU Project exception for its Classpath libraries, known as the +GNU Classpath Exception. + +Note that Oracle includes multiple, independent programs in this software +package. Some of those programs are provided under licenses deemed +incompatible with the GPLv2 by the Free Software Foundation and others. +For example, the package includes programs licensed under the Apache +License, Version 2.0 and may include FreeType. Such programs are licensed +to you under their original licenses. + +Oracle facilitates your further distribution of this package by adding the +Classpath Exception to the necessary parts of its GPLv2 code, which permits +you to use that code in combination with other independent modules not +licensed under the GPLv2. However, note that this would not permit you to +commingle code under an incompatible license with Oracle's GPLv2 licensed +code by, for example, cutting and pasting such code into a file also +containing Oracle's GPLv2 licensed code and then distributing the result. + +Additionally, if you were to remove the Classpath Exception from any of the +files to which it applies and distribute the result, you would likely be +required to license some or all of the other code in that distribution under +the GPLv2 as well, and since the GPLv2 is incompatible with the license terms +of some items included in the distribution by Oracle, removing the Classpath +Exception could therefore effectively compromise your ability to further +distribute the package. + +Failing to distribute notices associated with some files may also create +unexpected legal consequences. + +Proceed with caution and we recommend that you obtain the advice of a lawyer +skilled in open source matters before removing the Classpath Exception or +making modifications to this package which may subsequently be redistributed +and/or involve the use of third party software. diff --git a/javadoc/2.0.0/legal/ASSEMBLY_EXCEPTION b/javadoc/2.0.0/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..4296666 --- /dev/null +++ b/javadoc/2.0.0/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1,27 @@ + +OPENJDK ASSEMBLY EXCEPTION + +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at +openjdk.org ("OpenJDK Code") is distributed under the terms of the GNU +General Public License version 2 +only ("GPL2"), with the following clarification and special exception. + + Linking this OpenJDK Code statically or dynamically with other code + is making a combined work based on this library. Thus, the terms + and conditions of GPL2 cover the whole combination. + + As a special exception, Oracle gives you permission to link this + OpenJDK Code with certain code licensed by Oracle as indicated at + https://openjdk.org/legal/exception-modules-2007-05-08.html + ("Designated Exception Modules") to produce an executable, + regardless of the license terms of the Designated Exception Modules, + and to copy and distribute the resulting executable under GPL2, + provided that the Designated Exception Modules continue to be + governed by the licenses under which they were offered by Oracle. + +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code +to build an executable that includes those portions of necessary code that +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2 +with the Classpath exception). If you modify or add to the OpenJDK code, +that new GPL2 code may still be combined with Designated Exception Modules +if the new code is made subject to this exception by its copyright holder. diff --git a/javadoc/2.0.0/legal/LICENSE b/javadoc/2.0.0/legal/LICENSE new file mode 100644 index 0000000..8b400c7 --- /dev/null +++ b/javadoc/2.0.0/legal/LICENSE @@ -0,0 +1,347 @@ +The GNU General Public License (GPL) + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of +this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each licensee is addressed as +"you". + +Activities other than copying, distribution and modification are not covered by +this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as +you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus +forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all of +these conditions: + + a) You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in whole or + in part contains or is derived from the Program or any part thereof, to be + licensed as a whole at no charge to all third parties under the terms of + this License. + + c) If the modified program normally reads commands interactively when run, + you must cause it, when started running for such interactive use in the + most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or + else, saying that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to view a copy + of this License. (Exception: if the Program itself is interactive but does + not normally print such an announcement, your work based on the Program is + not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, and +its terms, do not apply to those sections when you distribute them as separate +works. But when you distribute the same sections as part of a whole which is a +work based on the Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 above + on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three years, to + give any third party, for a charge no more than your cost of physically + performing source distribution, a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source +code from the same place counts as distribution of the source code, even though +third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, or +rights, from you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the Program +or its derivative works. These actions are prohibited by law if you do not +accept this License. Therefore, by modifying or distributing the Program (or +any work based on the Program), you indicate your acceptance of this License to +do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor to +copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of the +rights granted herein. You are not responsible for enforcing compliance by +third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the +General Public License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to address new problems +or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software Foundation. +If the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status of +all derivatives of our free software and of promoting the sharing and reuse of +software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + + Copyright (C) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes + with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free + software, and you are welcome to redistribute it under certain conditions; + type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than 'show w' and 'show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + 'Gnomovision' (which makes passes at compilers) written by James Hacker. + + signature of Ty Coon, 1 April 1989 + + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. + + +"CLASSPATH" EXCEPTION TO THE GPL + +Certain source files distributed by Oracle America and/or its affiliates are +subject to the following clarification and special exception to the GPL, but +only where Oracle has expressly included in the particular source file's header +the words "Oracle designates this particular file as subject to the "Classpath" +exception as provided by Oracle in the LICENSE file that accompanied this code." + + Linking this library statically or dynamically with other modules is making + a combined work based on this library. Thus, the terms and conditions of + the GNU General Public License cover the whole combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules, + and to copy and distribute the resulting executable under terms of your + choice, provided that you also meet, for each linked independent module, + the terms and conditions of the license of that module. An independent + module is a module which is not derived from or based on this library. If + you modify this library, you may extend this exception to your version of + the library, but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. diff --git a/javadoc/2.0.0/legal/jquery.md b/javadoc/2.0.0/legal/jquery.md new file mode 100644 index 0000000..a763ec6 --- /dev/null +++ b/javadoc/2.0.0/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/javadoc/2.0.0/legal/jqueryUI.md b/javadoc/2.0.0/legal/jqueryUI.md new file mode 100644 index 0000000..46bfbaa --- /dev/null +++ b/javadoc/2.0.0/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.14.1 + +### jQuery UI License +``` +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/javadoc/2.0.0/link.svg b/javadoc/2.0.0/link.svg new file mode 100644 index 0000000..7ccc5ed --- /dev/null +++ b/javadoc/2.0.0/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/javadoc/2.0.0/member-search-index.js b/javadoc/2.0.0/member-search-index.js new file mode 100644 index 0000000..3d93085 --- /dev/null +++ b/javadoc/2.0.0/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"AbstractRouter()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"ACCEPTED"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"addAnnotationProcessor(AnnotationProcessor)","u":"addAnnotationProcessor(dev.relism.flash.extension.AnnotationProcessor)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"addRoute(HttpMethod, String, RequestHandler)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"addRoute(HttpMethod, String, RequestHandler)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"addRouteListener(RouteListener)","u":"addRouteListener(dev.relism.flash.extension.RouteListener)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"all()"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"all(String)","u":"all(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"AUDIO_MPEG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"AUDIO_OGG"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"BAD_GATEWAY"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"BAD_REQUEST"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"badRequest(String)","u":"badRequest(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"BINARY"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"bind(FlashContext)","u":"bind(dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.models","c":"Request","l":"body()"},{"p":"dev.relism.flash.models","c":"Response","l":"body(byte[])"},{"p":"dev.relism.flash.models","c":"Response","l":"body(String)","u":"body(java.lang.String)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"bytes()"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"bytes()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"bytesForCode(int)"},{"p":"dev.relism.flash.template","c":"ByteTemplate","l":"ByteTemplate(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"CBOR"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"child()"},{"p":"dev.relism.flash.models","c":"Response","l":"chunked(InputStream)","u":"chunked(java.io.InputStream)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"code()"},{"p":"dev.relism.flash","c":"Flash","l":"commons"},{"p":"dev.relism.flash","c":"Flash.Commons","l":"Commons()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CONFLICT"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"conflict(String)","u":"conflict(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"CONNECT"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"connect(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"connect(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"contentLength()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"contentType()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CONTINUE"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors()"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors(Consumer)","u":"cors(java.util.function.Consumer)"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors(Flash.Middlewares.CorsConfig)","u":"cors(dev.relism.flash.Flash.Middlewares.CorsConfig)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"CorsConfig()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"create(FlashConfiguration)","u":"create(dev.relism.flash.extension.FlashConfiguration)"},{"p":"dev.relism.flash","c":"ServerHandle","l":"create(FlashConfiguration, AbstractRouter)","u":"create(dev.relism.flash.extension.FlashConfiguration,dev.relism.flash.routing.AbstractRouter)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"create(int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CREATED"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"credentials()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"credentials(boolean)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"DEFAULT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"DELETE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"delete(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"delete(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash","c":"Flash","l":"DEV"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"doRegister(HttpMethod, String, RequestHandler, Middleware[])","u":"doRegister(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,dev.relism.flash.routing.Middleware[])"},{"p":"dev.relism.flash.models","c":"Request","l":"drain()"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"EARLY"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"EMPTY"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"ErrorPages()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"exceptionHandler"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"FastPathRouterImpl()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews","l":"FastPathViews()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"field(String)","u":"field(java.lang.String)"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"file(String)","u":"file(java.lang.String)"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"filename()"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"find(Class)","u":"find(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"find(Class)","u":"find(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"first(String)","u":"first(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashConfiguration","l":"FlashConfiguration()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"FlashContext()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"FlashRegistrar()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FONT_WOFF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FONT_WOFF2"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"FORBIDDEN"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"forbidden()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FORM_URLENCODED"},{"p":"dev.relism.flash.models","c":"Request","l":"forParsed(RequestLine, InputStream, long, byte[], int, int, InetSocketAddress)","u":"forParsed(dev.relism.flash.models.RequestLine,java.io.InputStream,long,byte[],int,int,java.net.InetSocketAddress)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"FOUND"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"fromBytes(byte[], int, int)","u":"fromBytes(byte[],int,int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"GATEWAY_TIMEOUT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"GET"},{"p":"dev.relism.flash.models","c":"PathParams","l":"get(String)","u":"get(java.lang.String)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"get(String)","u":"get(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"get(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"get(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"getAll(String)","u":"getAll(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"getExceptionHandler()"},{"p":"dev.relism.flash.models","c":"Response","l":"getHeaders()"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"getNotFoundHandler()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"GONE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"GRAPHQL"},{"p":"dev.relism.flash.http","c":"ContentType","l":"GZIP"},{"p":"dev.relism.flash.routing","c":"AbstractRouter.ExceptionHandler","l":"handle(Exception, Request, Response)","u":"handle(java.lang.Exception,dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"SimpleHandler.FunctionalHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"SimpleHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"handlerClass()"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"hashCode()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"HEAD"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"head(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"head(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Response","l":"header(byte[])"},{"p":"dev.relism.flash.models","c":"Request","l":"header(String)","u":"header(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Response","l":"header(String, String)","u":"header(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"headerEquals(String, String)","u":"headerEquals(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"HeaderMap()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"headers()"},{"p":"dev.relism.flash.models","c":"Request","l":"headers()"},{"p":"dev.relism.flash.models","c":"Request","l":"headers(String)","u":"headers(java.lang.String)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"headers(String...)","u":"headers(java.lang.String...)"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"HttpException(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_AVIF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_GIF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_ICO"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_JPEG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_PNG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_SVG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_WEBP"},{"p":"dev.relism.flash.exceptions","c":"InitializationException","l":"InitializationException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.exceptions","c":"InitializationException","l":"InitializationException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"dev.relism.flash.models","c":"PathParams","l":"inject(Request, PathParams)","u":"inject(dev.relism.flash.models.Request,dev.relism.flash.models.PathParams)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"install(FlashExtension)","u":"install(dev.relism.flash.extension.FlashExtension)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"instantiate(Class)","u":"instantiate(java.lang.Class)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"INTERNAL_SERVER_ERROR"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"internal(String)","u":"internal(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"isEmpty()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"isFile()"},{"p":"dev.relism.flash.models","c":"Response","l":"isStreaming()"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"join(String, String)","u":"join(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"JSON"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"LATE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"LD_JSON"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"LENGTH_REQUIRED"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"length()"},{"p":"dev.relism.flash","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"materialize()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"METHOD_NOT_ALLOWED"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"method()"},{"p":"dev.relism.flash.models","c":"Request","l":"method()"},{"p":"dev.relism.flash.routing","c":"Route","l":"method()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"MethodPathByteView()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"methods()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"methods(String...)","u":"methods(java.lang.String...)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"middlewareChain()"},{"p":"dev.relism.flash","c":"Flash.Commons","l":"middlewares"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"Middlewares()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"mount(String, Consumer)","u":"mount(java.lang.String,java.util.function.Consumer)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"MOVED_PERMANENTLY"},{"p":"dev.relism.flash.http","c":"ContentType","l":"MSGPACK"},{"p":"dev.relism.flash.http","c":"ContentType","l":"MULTIPART_FORM"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"name()"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"namespace()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"NDJSON"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NO_CONTENT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"NONE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_ACCEPTABLE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_FOUND"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_IMPLEMENTED"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_MODIFIED"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"notFound(String)","u":"notFound(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"notFoundHandler"},{"p":"dev.relism.flash.routing","c":"Routes","l":"of(Class)","u":"of(java.lang.Class)"},{"p":"dev.relism.flash.routing","c":"Middleware","l":"of(Middleware...)","u":"of(dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"of(Request)","u":"of(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"OK"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"onException(AbstractRouter.ExceptionHandler)","u":"onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"onException(AbstractRouter.ExceptionHandler)","u":"onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"onInit()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"onNotFound(SimpleHandler.FunctionalHandler)","u":"onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"onNotFound(SimpleHandler.FunctionalHandler)","u":"onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.extension","c":"RouteListener","l":"onRoute(RouteEvent)","u":"onRoute(dev.relism.flash.extension.RouteEvent)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"optional(Class)","u":"optional(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"optional(Class)","u":"optional(java.lang.Class)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"OPTIONS"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"options(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"options(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"origin()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"origin(String)","u":"origin(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"param(String)","u":"param(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramInt(Request, String)","u":"paramInt(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramLong(Request, String)","u":"paramLong(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramRequired(Request, String)","u":"paramRequired(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash","c":"RequestParser","l":"parse(InputStream)","u":"parse(java.io.InputStream)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PARTIAL_CONTENT"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"parts()"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"parts(String)","u":"parts(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PATCH"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"patch(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"patch(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"path()"},{"p":"dev.relism.flash.models","c":"Request","l":"path()"},{"p":"dev.relism.flash.routing","c":"Route","l":"path()"},{"p":"dev.relism.flash.models","c":"PathParams","l":"PathParams(ByteView, String[], int[], int[])","u":"%3Cinit%3E(dev.relism.fpr.core.ByteView,java.lang.String[],int[],int[])"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"PathUtils()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PAYLOAD_TOO_LARGE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"PDF"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PERMANENT_REDIRECT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"POST"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"post(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"post(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"priority()"},{"p":"dev.relism.flash.extension","c":"AnnotationProcessor","l":"process(Class)","u":"process(java.lang.Class)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"provide(Class, T)","u":"provide(java.lang.Class,T)"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"provide(FlashContext)","u":"provide(dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PURGE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"purge(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"purge(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PUT"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"put(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"put(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Request","l":"queries(String)","u":"queries(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"query(String)","u":"query(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryInt(Request, String, int, int)","u":"queryInt(dev.relism.flash.models.Request,java.lang.String,int,int)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryLong(Request, String, long)","u":"queryLong(dev.relism.flash.models.Request,java.lang.String,long)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryOptional(Request, String)","u":"queryOptional(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"QueryParams(ByteView)","u":"%3Cinit%3E(dev.relism.fpr.core.ByteView)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryRequired(Request, String)","u":"queryRequired(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.routing.routers.radix","c":"RadixPathRouterImpl","l":"RadixPathRouterImpl()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"reason()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"reasonForCode(int)"},{"p":"dev.relism.flash.models","c":"Response","l":"redirect(HttpStatus, String)","u":"redirect(dev.relism.flash.http.HttpStatus,java.lang.String)"},{"p":"dev.relism.flash.models","c":"Response","l":"redirect(String)","u":"redirect(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"remoteAddress()"},{"p":"dev.relism.flash.template","c":"ByteTemplate","l":"render(String...)","u":"render(java.lang.String...)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"renderException(Request, Exception)","u":"renderException(dev.relism.flash.models.Request,java.lang.Exception)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"renderNotFound(Request)","u":"renderNotFound(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.models","c":"Request","l":"Request(RequestLine, byte[])","u":"%3Cinit%3E(dev.relism.flash.models.RequestLine,byte[])"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"RequestByteView(byte[], int, int)","u":"%3Cinit%3E(byte[],int,int)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"RequestHandler()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.models","c":"RequestLine","l":"RequestLine()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser(int)","u":"%3Cinit%3E(int)"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser(int, InetSocketAddress)","u":"%3Cinit%3E(int,java.net.InetSocketAddress)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"require(Class)","u":"require(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"require(Class)","u":"require(java.lang.Class)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"reset(byte[], ByteView)","u":"reset(byte[],dev.relism.fpr.core.ByteView)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"reset(byte[], int, int)","u":"reset(byte[],int,int)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, byte[], ContentType)","u":"%3Cinit%3E(int,byte[],dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, ContentType)","u":"%3Cinit%3E(int,dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, String, ContentType)","u":"%3Cinit%3E(int,java.lang.String,dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"route(Request)","u":"route(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"route(Request)","u":"route(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"RouteEvent(HttpMethod, String, String, String, Class, List>)","u":"%3Cinit%3E(dev.relism.flash.http.HttpMethod,java.lang.String,java.lang.String,java.lang.String,java.lang.Class,java.util.List)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"routerType()"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"routes(FlashRegistrar, FlashContext)","u":"routes(dev.relism.flash.extension.FlashRegistrar,dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"sanitize(String)","u":"sanitize(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"scan(String)","u":"scan(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"SERVICE_UNAVAILABLE"},{"p":"dev.relism.flash.models","c":"Response","l":"setBody(Object)","u":"setBody(java.lang.Object)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"setPathParams(Request, String[], ByteView, int[], int[])","u":"setPathParams(dev.relism.flash.models.Request,java.lang.String[],dev.relism.fpr.core.ByteView,int[],int[])"},{"p":"dev.relism.flash.models","c":"SimpleHandler","l":"SimpleHandler(SimpleHandler.FunctionalHandler)","u":"%3Cinit%3E(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"SocketByteView(byte[])","u":"%3Cinit%3E(byte[])"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"start()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"start()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"startAndBlock()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"startAndBlock()"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"status()"},{"p":"dev.relism.flash.models","c":"Response","l":"status(HttpStatus)","u":"status(dev.relism.flash.http.HttpStatus)"},{"p":"dev.relism.flash.models","c":"Response","l":"status(int)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"stop()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"stop()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"stream()"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"stream()"},{"p":"dev.relism.flash.models","c":"Response","l":"stream(InputStream, long)","u":"stream(java.io.InputStream,long)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"StringByteView(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"supply(Class, Supplier)","u":"supply(java.lang.Class,java.util.function.Supplier)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"SWITCHING_PROTOCOLS"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"TEMPORARY_REDIRECT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_CSS"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_CSV"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_EVENT_STREAM"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_HTML"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_JAVASCRIPT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_MARKDOWN"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_PLAIN"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_XML"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"text()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"TOO_MANY_REQUESTS"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"toString()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"toString()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"toString()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"TRACE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"trace(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"trace(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Response","l":"type(ContentType)","u":"type(dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"type(String)","u":"type(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNAUTHORIZED"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"unauthorized()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNPROCESSABLE_ENTITY"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"unprocessable(String)","u":"unprocessable(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNSUPPORTED_MEDIA_TYPE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"URI_TOO_LONG"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"use(Middleware...)","u":"use(dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"value"},{"p":"dev.relism.flash.routing","c":"CONNECT","l":"value()"},{"p":"dev.relism.flash.routing","c":"DELETE","l":"value()"},{"p":"dev.relism.flash.routing","c":"GET","l":"value()"},{"p":"dev.relism.flash.routing","c":"HEAD","l":"value()"},{"p":"dev.relism.flash.routing","c":"OPTIONS","l":"value()"},{"p":"dev.relism.flash.routing","c":"PATCH","l":"value()"},{"p":"dev.relism.flash.routing","c":"POST","l":"value()"},{"p":"dev.relism.flash.routing","c":"PURGE","l":"value()"},{"p":"dev.relism.flash.routing","c":"PUT","l":"value()"},{"p":"dev.relism.flash.routing","c":"TRACE","l":"value()"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"valueEqualsIgnoreCase(String, String)","u":"valueEqualsIgnoreCase(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"values()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"values()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"values()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"values()"},{"p":"dev.relism.flash","c":"Flash","l":"VERSION"},{"p":"dev.relism.flash.http","c":"ContentType","l":"VIDEO_MP4"},{"p":"dev.relism.flash.http","c":"ContentType","l":"VIDEO_WEBM"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"view(String)","u":"view(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"Middleware","l":"wrap(RequestHandler)","u":"wrap(dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.models","c":"Response","l":"writeHeaders(OutputStream)","u":"writeHeaders(java.io.OutputStream)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"XML"},{"p":"dev.relism.flash.http","c":"ContentType","l":"ZIP"}];updateSearchResults(); \ No newline at end of file diff --git a/javadoc/2.0.0/module-search-index.js b/javadoc/2.0.0/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/javadoc/2.0.0/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/javadoc/2.0.0/overview-summary.html b/javadoc/2.0.0/overview-summary.html new file mode 100644 index 0000000..db9d5ba --- /dev/null +++ b/javadoc/2.0.0/overview-summary.html @@ -0,0 +1,26 @@ + + + + +flash-parent 2.0.0 API + + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/javadoc/2.0.0/overview-tree.html b/javadoc/2.0.0/overview-tree.html new file mode 100644 index 0000000..9f8f687 --- /dev/null +++ b/javadoc/2.0.0/overview-tree.html @@ -0,0 +1,201 @@ + + + + +Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Annotation Interface Hierarchy

+
    +
  • dev.relism.flash.routing.CONNECT (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.DELETE (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.GET (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.HEAD (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.OPTIONS (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PATCH (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.POST (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PURGE (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.PUT (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.Route (implements java.lang.annotation.Annotation)
  • +
  • dev.relism.flash.routing.TRACE (implements java.lang.annotation.Annotation)
  • +
+
+
+

Enum Class Hierarchy

+ +
+
+

Record Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/javadoc/2.0.0/package-search-index.js b/javadoc/2.0.0/package-search-index.js new file mode 100644 index 0000000..ab45b8a --- /dev/null +++ b/javadoc/2.0.0/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"dev.relism.flash"},{"l":"dev.relism.flash.api.multipart"},{"l":"dev.relism.flash.exceptions"},{"l":"dev.relism.flash.extension"},{"l":"dev.relism.flash.http"},{"l":"dev.relism.flash.models"},{"l":"dev.relism.flash.routing"},{"l":"dev.relism.flash.routing.routers.fastpathrouter"},{"l":"dev.relism.flash.routing.routers.radix"},{"l":"dev.relism.flash.template"}];updateSearchResults(); \ No newline at end of file diff --git a/javadoc/2.0.0/resources/glass.png b/javadoc/2.0.0/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/javadoc/2.0.0/resources/glass.png differ diff --git a/javadoc/2.0.0/resources/x.png b/javadoc/2.0.0/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/javadoc/2.0.0/resources/x.png differ diff --git a/javadoc/2.0.0/script-dir/jquery-3.7.1.min.js b/javadoc/2.0.0/script-dir/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/javadoc/2.0.0/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(x){x.ui=x.ui||{};x.ui.version="1.14.1";var n,s,C,k,o,l,a,r,u,i,h=0,c=Array.prototype.hasOwnProperty,d=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l,a={},r=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?x.error("Invalid widget name: "+t):(l=r+"-"+t,e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[l.toLowerCase()]=function(t){return!!x.data(t,l)},x[r]=x[r]||{},s=x[r][t],n=x[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n)},x.widget.extend=function(t){for(var e,i,s=d.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n{var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})})(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+a.eventNamespace,t=t[2];t?l.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}}),x.widget;function E(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function T(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,r=/^\w+/,u=/%$/,i=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=x("
")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(k(s),k(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})):i.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,l=n-o,a=o+e.collisionWidth-s-n;s",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),x.ui.autocomplete}); \ No newline at end of file diff --git a/javadoc/2.0.0/script.js b/javadoc/2.0.0/script.js new file mode 100644 index 0000000..bb9c8a2 --- /dev/null +++ b/javadoc/2.0.0/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.getElementById(tableId + '.tabpanel') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/javadoc/2.0.0/search-page.js b/javadoc/2.0.0/search-page.js new file mode 100644 index 0000000..540c90f --- /dev/null +++ b/javadoc/2.0.0/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
    ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
    ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
    ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
    ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
    ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/javadoc/2.0.0/search.html b/javadoc/2.0.0/search.html new file mode 100644 index 0000000..1126540 --- /dev/null +++ b/javadoc/2.0.0/search.html @@ -0,0 +1,77 @@ + + + + +Search (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +

    Search

    +
    + + +
    +Additional resources +
    +
    +
    +

    The help page provides an introduction to the scope and syntax of JavaDoc search.

    +

    You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

    +

    The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

    +link +

    + +

    +
    +

    Loading search index...

    + +
    +
    +
    + +
    +
    +
    + + diff --git a/javadoc/2.0.0/search.js b/javadoc/2.0.0/search.js new file mode 100644 index 0000000..d398670 --- /dev/null +++ b/javadoc/2.0.0/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + categories[item.category] + "
  • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
    " + + idx.d + "
    "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" " + messages.linkIcon +""); + } + }); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/javadoc/2.0.0/serialized-form.html b/javadoc/2.0.0/serialized-form.html new file mode 100644 index 0000000..d395614 --- /dev/null +++ b/javadoc/2.0.0/serialized-form.html @@ -0,0 +1,96 @@ + + + + +Serialized Form (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/javadoc/2.0.0/stylesheet.css b/javadoc/2.0.0/stylesheet.css new file mode 100644 index 0000000..f71489f --- /dev/null +++ b/javadoc/2.0.0/stylesheet.css @@ -0,0 +1,1272 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/javadoc/2.0.0/tag-search-index.js b/javadoc/2.0.0/tag-search-index.js new file mode 100644 index 0000000..efcc0b3 --- /dev/null +++ b/javadoc/2.0.0/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Default error handlers","h":"class dev.relism.flash.extension.FlashApp","d":"Section","u":"dev/relism/flash/extension/FlashApp.html#default-error-handlers-heading"},{"l":"Default error handlers","h":"class dev.relism.flash.routing.AbstractRouter","d":"Section","u":"dev/relism/flash/routing/AbstractRouter.html#default-error-handlers-heading"},{"l":"Dev mode","h":"class dev.relism.flash.Flash","d":"Section","u":"dev/relism/flash/Flash.html#dev-mode-heading"},{"l":"Eager vs lazy registration","h":"class dev.relism.flash.extension.FlashContext","d":"Section","u":"dev/relism/flash/extension/FlashContext.html#eager-vs-lazy-registration-heading"},{"l":"Example","h":"interface dev.relism.flash.extension.FlashExtension","d":"Section","u":"dev/relism/flash/extension/FlashExtension.html#example-heading"},{"l":"Handler abstraction chain","h":"record class dev.relism.flash.extension.RouteEvent","d":"Section","u":"dev/relism/flash/extension/RouteEvent.html#handler-abstraction-chain-heading"},{"l":"Lifecycle","h":"class dev.relism.flash.models.RequestHandler","d":"Section","u":"dev/relism/flash/models/RequestHandler.html#lifecycle-heading"},{"l":"Lifetime contract — read carefully","h":"class dev.relism.flash.models.HeaderMap","d":"Section","u":"dev/relism/flash/models/HeaderMap.html#lifetime-contract-read-carefully-heading"},{"l":"Middleware chain","h":"record class dev.relism.flash.extension.RouteEvent","d":"Section","u":"dev/relism/flash/extension/RouteEvent.html#middleware-chain-heading"},{"l":"Priority and middleware ordering","h":"interface dev.relism.flash.extension.FlashExtension","d":"Section","u":"dev/relism/flash/extension/FlashExtension.html#priority-and-middleware-ordering-heading"},{"l":"Serialized Form","h":"","u":"serialized-form.html"},{"l":"Service access","h":"class dev.relism.flash.models.RequestHandler","d":"Section","u":"dev/relism/flash/models/RequestHandler.html#service-access-heading"},{"l":"Startup sequence (both #start() and #startAndBlock())","h":"class dev.relism.flash.extension.FlashApp","d":"Section","u":"dev/relism/flash/extension/FlashApp.html#startup-sequence-both-start-and-startandblock--heading"}];updateSearchResults(); \ No newline at end of file diff --git a/javadoc/2.0.0/type-search-index.js b/javadoc/2.0.0/type-search-index.js new file mode 100644 index 0000000..42d13f7 --- /dev/null +++ b/javadoc/2.0.0/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"dev.relism.flash.routing","l":"AbstractRouter"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"dev.relism.flash.extension","l":"AnnotationProcessor"},{"p":"dev.relism.flash.template","l":"ByteTemplate"},{"p":"dev.relism.flash","l":"Flash.Commons"},{"p":"dev.relism.flash.routing","l":"CONNECT"},{"p":"dev.relism.flash.http","l":"ContentType"},{"p":"dev.relism.flash","l":"Flash.Middlewares.CorsConfig"},{"p":"dev.relism.flash.routing","l":"DELETE"},{"p":"dev.relism.flash.template","l":"ErrorPages"},{"p":"dev.relism.flash.routing","l":"AbstractRouter.ExceptionHandler"},{"p":"dev.relism.flash.extension","l":"ExtensionPhase"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathRouterImpl"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews"},{"p":"dev.relism.flash","l":"Flash"},{"p":"dev.relism.flash.extension","l":"FlashApp"},{"p":"dev.relism.flash.extension","l":"FlashConfiguration"},{"p":"dev.relism.flash.extension","l":"FlashContext"},{"p":"dev.relism.flash.extension","l":"FlashExtension"},{"p":"dev.relism.flash.extension","l":"FlashRegistrar"},{"p":"dev.relism.flash.extension","l":"FlashScope"},{"p":"dev.relism.flash.models","l":"SimpleHandler.FunctionalHandler"},{"p":"dev.relism.flash.routing","l":"GET"},{"p":"dev.relism.flash.routing","l":"HEAD"},{"p":"dev.relism.flash.models","l":"HeaderMap"},{"p":"dev.relism.flash.exceptions","l":"HttpException"},{"p":"dev.relism.flash.http","l":"HttpMethod"},{"p":"dev.relism.flash.http","l":"HttpStatus"},{"p":"dev.relism.flash.exceptions","l":"InitializationException"},{"p":"dev.relism.flash","l":"Main"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.MethodPathByteView"},{"p":"dev.relism.flash.routing","l":"Middleware"},{"p":"dev.relism.flash","l":"Flash.Middlewares"},{"p":"dev.relism.flash.api.multipart","l":"Multipart"},{"p":"dev.relism.flash.routing","l":"OPTIONS"},{"p":"dev.relism.flash.api.multipart","l":"Part"},{"p":"dev.relism.flash.routing","l":"PATCH"},{"p":"dev.relism.flash.models","l":"PathParams"},{"p":"dev.relism.flash.routing","l":"PathUtils"},{"p":"dev.relism.flash.routing","l":"POST"},{"p":"dev.relism.flash.routing","l":"PURGE"},{"p":"dev.relism.flash.routing","l":"PUT"},{"p":"dev.relism.flash.models","l":"QueryParams"},{"p":"dev.relism.flash.routing.routers.radix","l":"RadixPathRouterImpl"},{"p":"dev.relism.flash.models","l":"Request"},{"p":"dev.relism.flash.models","l":"RequestBody"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.RequestByteView"},{"p":"dev.relism.flash.models","l":"RequestHandler"},{"p":"dev.relism.flash.models","l":"RequestHelper"},{"p":"dev.relism.flash.models","l":"RequestLine"},{"p":"dev.relism.flash","l":"RequestParser"},{"p":"dev.relism.flash.models","l":"Response"},{"p":"dev.relism.flash.routing","l":"Route"},{"p":"dev.relism.flash.extension","l":"RouteEvent"},{"p":"dev.relism.flash.extension","l":"RouteListener"},{"p":"dev.relism.flash.routing","l":"Routes"},{"p":"dev.relism.flash","l":"ServerHandle"},{"p":"dev.relism.flash.models","l":"SimpleHandler"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.SocketByteView"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.StringByteView"},{"p":"dev.relism.flash.routing","l":"TRACE"}];updateSearchResults(); \ No newline at end of file diff --git a/latest/allclasses-index.html b/latest/allclasses-index.html new file mode 100644 index 0000000..e88c67a --- /dev/null +++ b/latest/allclasses-index.html @@ -0,0 +1,290 @@ + + + + +All Classes and Interfaces (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    All Classes and Interfaces

    +
    +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Base router contract.
    +
    + +
     
    + +
    +
    Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically.
    +
    + +
    +
    Precompiled, allocation-minimal byte template.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
    +
    + +
    +
    Pre-compiled byte representations of common HTTP Content-Type values.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
    +
    + +
    +
    Precompiled error page templates.
    +
    + +
    +
    Semantic execution phases for FlashExtension.priority().
    +
    + +
    +
    Router backed by the fpr-core byte-level state machine.
    +
    + +
    +
    ByteView implementations used on the router and parser hot paths.
    +
    + +
    +
    Mutable composite view: method bytes + path.
    +
    + +
     
    + +
     
    + +
     
    + +
    +
    Global Flash constants and runtime environment flags.
    +
    + +
     
    + +
     
    + +
     
    + +
    +
    Single entry point for Flash.
    +
    + +
    +
    Configuration for a FlashApp instance.
    +
    + +
    +
    Central service registry and boot-time hook coordinator.
    +
    + +
    +
    Two-phase contract for all Flash extensions.
    +
    + +
    +
    Common route-registration surface shared by FlashApp and FlashScope.
    +
    + +
    +
    Scoped builder for namespace-prefixed routes.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.GET, path = "…").
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
    +
    + +
    +
    Lazy, zero-copy header access backed directly by the request parser's byte buffer.
    +
    + +
    +
    Runtime exception carrying an HTTP status code.
    +
    + +
     
    + +
    +
    Pre-compiled byte representations of standard HTTP status lines.
    +
    + +
    +
    Thrown at boot time when Flash detects a configuration or registration error.
    +
    + +
     
    + +
    +
    Stateless interceptor applied around a RequestHandler.
    +
    + +
    +
    Lazy streaming multipart/form-data parser.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
    +
    + +
    +
    One part of a multipart/form-data body produced by Multipart.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
    +
    + +
    +
    Path parameters captured during routing, stored as byte offsets into the path view.
    +
    + +
     
    + +
    +
    Shorthand for @Route(method = HttpMethod.POST, path = "…").
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.PUT, path = "…").
    +
    + +
    +
    Lazy query parameter access (?key=value&...).
    +
    + +
     
    + +
    +
    Immutable view of an incoming HTTP/1.1 request.
    +
    + +
    +
    Accessor for the HTTP request body.
    +
    + +
    +
    Base class for class-based route handlers.
    +
    + +
    +
    Typed accessors for request parameters.
    +
    + +
     
    + +
    +
    One instance per connection, the buffer is allocated once and reused across keep-alive + requests.
    +
    + +
    +
    HTTP response.
    +
    + +
    +
    HTTP method and path for a class-based RequestHandler.
    +
    + +
    +
    Immutable snapshot of a route captured at registration time.
    +
    + +
    +
    Observer notified once for each route registered on a FlashApp or FlashScope.
    +
    + +
    +
    Boot-time resolution of Route from a handler class (direct @Route or shorthand).
    +
    + +
    +
    Public handle to the underlying HTTP transport.
    +
    + +
    +
    Delegates SimpleHandler.handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
    +
    + +
    +
    Functional interface for handling requests, used by SimpleHandler.
    +
    + +
    +
    Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/allpackages-index.html b/latest/allpackages-index.html new file mode 100644 index 0000000..2fd15dc --- /dev/null +++ b/latest/allpackages-index.html @@ -0,0 +1,87 @@ + + + + +All Packages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + + +
    + + diff --git a/latest/constant-values.html b/latest/constant-values.html new file mode 100644 index 0000000..13daa92 --- /dev/null +++ b/latest/constant-values.html @@ -0,0 +1,84 @@ + + + + +Constant Field Values (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Constant Field Values

    +
    +
    +

    Contents

    + +
    +
    +

    dev.relism.*

    +
      +
    • +
      dev.relism.flash.Flash
      +
      +
      Modifier and Type
      +
      Constant Field
      +
      Value
      +
      public static final String
      + +
      "5.0.0-dev"
      +
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/copy.svg b/latest/copy.svg new file mode 100644 index 0000000..7c46ab1 --- /dev/null +++ b/latest/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/latest/dev/relism/flash/Flash.Commons.html b/latest/dev/relism/flash/Flash.Commons.html new file mode 100644 index 0000000..ad56fcb --- /dev/null +++ b/latest/dev/relism/flash/Flash.Commons.html @@ -0,0 +1,183 @@ + + + + +Flash.Commons (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Flash.Commons

    +
    +
    java.lang.Object +
    dev.relism.flash.Flash.Commons
    +
    +
    +
    +
    Enclosing class:
    +
    Flash
    +
    +
    +
    public static class Flash.Commons +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Field Details

      + +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        Commons

        +
        public Commons()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/Flash.Middlewares.CorsConfig.html b/latest/dev/relism/flash/Flash.Middlewares.CorsConfig.html new file mode 100644 index 0000000..1c140d8 --- /dev/null +++ b/latest/dev/relism/flash/Flash.Middlewares.CorsConfig.html @@ -0,0 +1,244 @@ + + + + +Flash.Middlewares.CorsConfig (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Flash.Middlewares.CorsConfig

    +
    +
    java.lang.Object +
    dev.relism.flash.Flash.Middlewares.CorsConfig
    +
    +
    +
    +
    Enclosing class:
    +
    Flash.Middlewares
    +
    +
    +
    public static class Flash.Middlewares.CorsConfig +extends Object
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/Flash.Middlewares.html b/latest/dev/relism/flash/Flash.Middlewares.html new file mode 100644 index 0000000..e6a0a9b --- /dev/null +++ b/latest/dev/relism/flash/Flash.Middlewares.html @@ -0,0 +1,214 @@ + + + + +Flash.Middlewares (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Flash.Middlewares

    +
    +
    java.lang.Object +
    dev.relism.flash.Flash.Middlewares
    +
    +
    +
    +
    Enclosing class:
    +
    Flash
    +
    +
    +
    public static class Flash.Middlewares +extends Object
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/Flash.html b/latest/dev/relism/flash/Flash.html new file mode 100644 index 0000000..a58168d --- /dev/null +++ b/latest/dev/relism/flash/Flash.html @@ -0,0 +1,207 @@ + + + + +Flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Flash

    +
    +
    java.lang.Object +
    dev.relism.flash.Flash
    +
    +
    +
    +
    public final class Flash +extends Object
    +
    Global Flash constants and runtime environment flags. + +

    Dev mode

    + Set via JVM property -Dflash.env=dev or environment variable FLASH_ENV=dev. + Checked once at classloading — zero runtime overhead. + +

    Dev mode enables: +

      +
    • HTML error pages with full stack traces (default: JSON generic responses in prod)
    • +
    • Template cache disabled in flash-ext-view-thymeleaf
    • +
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        VERSION

        +
        public static final String VERSION
        +
        +
        See Also:
        +
        + +
        +
        +
        +
      • +
      • +
        +

        commons

        +
        public static final Flash.Commons commons
        +
        +
      • +
      • +
        +

        DEV

        +
        public static final boolean DEV
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/Main.html b/latest/dev/relism/flash/Main.html new file mode 100644 index 0000000..ca65584 --- /dev/null +++ b/latest/dev/relism/flash/Main.html @@ -0,0 +1,182 @@ + + + + +Main (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Main

    +
    +
    java.lang.Object +
    dev.relism.flash.Main
    +
    +
    +
    +
    public class Main +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        Main

        +
        public Main()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      + +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/RequestParser.html b/latest/dev/relism/flash/RequestParser.html new file mode 100644 index 0000000..25ca759 --- /dev/null +++ b/latest/dev/relism/flash/RequestParser.html @@ -0,0 +1,203 @@ + + + + +RequestParser (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RequestParser

    +
    +
    java.lang.Object +
    dev.relism.flash.RequestParser
    +
    +
    +
    +
    public class RequestParser +extends Object
    +
    One instance per connection, the buffer is allocated once and reused across keep-alive + requests. Grows on demand (doubling, up to maxHeaderBufferSize). Zero String + allocations during parsing; paths, headers and protocol are exposed as ByteView slices.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RequestParser

        +
        public RequestParser()
        +
        +
      • +
      • +
        +

        RequestParser

        +
        public RequestParser(int maxHeaderBufferSize)
        +
        +
      • +
      • +
        +

        RequestParser

        +
        public RequestParser(int maxHeaderBufferSize, + InetSocketAddress remoteAddress)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      + +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/ServerHandle.html b/latest/dev/relism/flash/ServerHandle.html new file mode 100644 index 0000000..8070de7 --- /dev/null +++ b/latest/dev/relism/flash/ServerHandle.html @@ -0,0 +1,190 @@ + + + + +ServerHandle (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface ServerHandle

    +
    +
    +
    +
    public interface ServerHandle
    +
    Public handle to the underlying HTTP transport. Returned by create(dev.relism.flash.extension.FlashConfiguration, dev.relism.flash.routing.AbstractRouter) + so that FlashApp can start and stop the server + without holding a direct reference to the package-private HttpServer.
    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + + +
       
      +
      void
      + +
      +
      Starts the accept loop on a background platform thread.
      +
      +
      void
      + +
      +
      Starts the accept loop and blocks the calling thread until the server is stopped.
      +
      + + +
      +
      Gracefully stops the server, draining active connections.
      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        start

        +
        void start()
        +
        Starts the accept loop on a background platform thread. Returns immediately.
        +
        +
      • +
      • +
        +

        startAndBlock

        +
        void startAndBlock()
        +
        Starts the accept loop and blocks the calling thread until the server is stopped. + Suitable for use in main() when no other work is needed after startup.
        +
        +
      • +
      • +
        +

        stop

        + +
        Gracefully stops the server, draining active connections.
        +
        +
      • +
      • +
        +

        create

        +
        static ServerHandle create(FlashConfiguration config, + AbstractRouter router) + throws IOException
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/Multipart.html b/latest/dev/relism/flash/api/multipart/Multipart.html new file mode 100644 index 0000000..712c619 --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/Multipart.html @@ -0,0 +1,263 @@ + + + + +Multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Multipart

    +
    +
    java.lang.Object +
    dev.relism.flash.api.multipart.Multipart
    +
    +
    +
    +
    public final class Multipart +extends Object
    +
    Lazy streaming multipart/form-data parser. + +

    Reads from body.stream() — the request body is never fully materialised. + Text fields are buffered eagerly on first encounter (they are small by definition). File part + bodies are exposed as zero-copy InputStreams backed directly by the socket stream and + must be consumed before the next call to any scan method. + +

    
    + Multipart mp = Multipart.of(req);
    +
    + // Text fields — buffered eagerly, accessible in any call order
    + String userId = mp.field("userId");
    + String width  = mp.field("width");
    +
    + // File parts — zero-copy socket stream; consume before requesting the next file
    + Part avatar = mp.file("avatar");
    + Files.copy(avatar.stream(), destination);
    +
    + // Explicit materialization of a file body (opt-in heap allocation)
    + byte[] data = mp.file("doc").materialize();
    +
    + // Collect everything at once — eagerly buffers all bodies (accept the memory cost)
    + List<Part> files = mp.parts("files");
    + 
    + +

    Scan ordering: field(java.lang.String) and file(java.lang.String) scan forward through the stream. + Parts already passed cannot be re-read. Text fields encountered while scanning toward a file + are buffered silently; file bodies encountered while scanning toward a text field are drained + silently. Use parts() only if you need everything and accept full materialisation. + +

    Thread safety: not thread-safe; one instance per request.

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        of

        +
        public static Multipart of(Request req) + throws IOException
        +
        Creates a parser for request. Uses body.stream() — zero heap allocation.
        +
        +
        Throws:
        +
        IllegalArgumentException - if the request is not multipart or boundary is missing
        +
        IOException - if the initial stream read fails
        +
        +
        +
      • +
      • +
        +

        field

        +
        public String field(String name) + throws IOException
        +
        Returns the text value of the first field named name, or null. + Scans forward; text parts encountered along the way are buffered, file bodies are drained.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        file

        +
        public Part file(String name) + throws IOException
        +
        Returns the first file part named name, or null. + Scans forward; text parts encountered along the way are buffered, earlier file bodies + are drained. The returned part's stream must be consumed before the next scan call.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        parts

        +
        public List<Part> parts(String name) + throws IOException
        +
        Returns all parts named name in declaration order. + Forces a full scan; all file bodies are materialised into heap.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        parts

        +
        public List<Part> parts() + throws IOException
        +
        Returns all parts in declaration order. + Forces a full scan; all file bodies are materialised into heap.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/Part.html b/latest/dev/relism/flash/api/multipart/Part.html new file mode 100644 index 0000000..a53c351 --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/Part.html @@ -0,0 +1,250 @@ + + + + +Part (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Part

    +
    +
    java.lang.Object +
    dev.relism.flash.api.multipart.Part
    +
    +
    +
    +
    public final class Part +extends Object
    +
    One part of a multipart/form-data body produced by Multipart. + +

    Two internal states: +

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        name

        +
        public String name()
        +
        Field or file name from Content-Disposition: form-data; name="...".
        +
        +
      • +
      • +
        +

        filename

        +
        public String filename()
        +
        Original filename from filename="...", or null for text fields.
        +
        +
      • +
      • +
        +

        contentType

        +
        public String contentType()
        +
        Content-Type declared in the part headers, or null if absent.
        +
        +
      • +
      • +
        +

        isFile

        +
        public boolean isFile()
        +
        true if this part has a filename attribute (i.e. a file upload).
        +
        +
      • +
      • +
        +

        stream

        +
        public InputStream stream()
        +
        Returns an InputStream over the part body. + For buffered parts: returns a fresh reader each call. + For streaming file parts: returns the raw socket stream — read once only.
        +
        +
      • +
      • +
        +

        materialize

        +
        public byte[] materialize() + throws IOException
        +
        Materialises the body into a byte[]. Result is cached; safe to call repeatedly. + For streaming file parts: triggers a full read from the socket on first call.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      • +
        +

        text

        +
        public String text() + throws IOException
        +
        Decodes the body as UTF-8. Materialises if needed; result is cached. + For streaming file parts: triggers a full read from the socket on first call.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/class-use/Multipart.html b/latest/dev/relism/flash/api/multipart/class-use/Multipart.html new file mode 100644 index 0000000..f63053c --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/class-use/Multipart.html @@ -0,0 +1,89 @@ + + + + +Uses of Class dev.relism.flash.api.multipart.Multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.api.multipart.Multipart

    +
    +
    Packages that use Multipart
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/class-use/Part.html b/latest/dev/relism/flash/api/multipart/class-use/Part.html new file mode 100644 index 0000000..efa7008 --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/class-use/Part.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.api.multipart.Part (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.api.multipart.Part

    +
    +
    Packages that use Part
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/package-summary.html b/latest/dev/relism/flash/api/multipart/package-summary.html new file mode 100644 index 0000000..ce9a7be --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/package-summary.html @@ -0,0 +1,102 @@ + + + + +dev.relism.flash.api.multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.api.multipart

    +
    +
    +
    package dev.relism.flash.api.multipart
    +
    +
      +
    • +
      +
      Classes
      +
      +
      Class
      +
      Description
      + +
      +
      Lazy streaming multipart/form-data parser.
      +
      + +
      +
      One part of a multipart/form-data body produced by Multipart.
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/package-tree.html b/latest/dev/relism/flash/api/multipart/package-tree.html new file mode 100644 index 0000000..acecb53 --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/package-tree.html @@ -0,0 +1,77 @@ + + + + +dev.relism.flash.api.multipart Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.api.multipart

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    +
      +
    • java.lang.Object +
        +
      • dev.relism.flash.api.multipart.Multipart
      • +
      • dev.relism.flash.api.multipart.Part
      • +
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/api/multipart/package-use.html b/latest/dev/relism/flash/api/multipart/package-use.html new file mode 100644 index 0000000..2a2ec50 --- /dev/null +++ b/latest/dev/relism/flash/api/multipart/package-use.html @@ -0,0 +1,90 @@ + + + + +Uses of Package dev.relism.flash.api.multipart (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.api.multipart

    +
    + +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/Flash.Commons.html b/latest/dev/relism/flash/class-use/Flash.Commons.html new file mode 100644 index 0000000..68726e4 --- /dev/null +++ b/latest/dev/relism/flash/class-use/Flash.Commons.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.Flash.Commons (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.Flash.Commons

    +
    +
    Packages that use Flash.Commons
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html b/latest/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html new file mode 100644 index 0000000..dca59c9 --- /dev/null +++ b/latest/dev/relism/flash/class-use/Flash.Middlewares.CorsConfig.html @@ -0,0 +1,114 @@ + + + + +Uses of Class dev.relism.flash.Flash.Middlewares.CorsConfig (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.Flash.Middlewares.CorsConfig

    +
    + +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/Flash.Middlewares.html b/latest/dev/relism/flash/class-use/Flash.Middlewares.html new file mode 100644 index 0000000..ed0f325 --- /dev/null +++ b/latest/dev/relism/flash/class-use/Flash.Middlewares.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.Flash.Middlewares (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.Flash.Middlewares

    +
    +
    Packages that use Flash.Middlewares
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/Flash.html b/latest/dev/relism/flash/class-use/Flash.html new file mode 100644 index 0000000..5fc5344 --- /dev/null +++ b/latest/dev/relism/flash/class-use/Flash.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.Flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.Flash

    +
    +No usage of dev.relism.flash.Flash
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/Main.html b/latest/dev/relism/flash/class-use/Main.html new file mode 100644 index 0000000..f1940dd --- /dev/null +++ b/latest/dev/relism/flash/class-use/Main.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.Main (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.Main

    +
    +No usage of dev.relism.flash.Main
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/RequestParser.html b/latest/dev/relism/flash/class-use/RequestParser.html new file mode 100644 index 0000000..a1f86c1 --- /dev/null +++ b/latest/dev/relism/flash/class-use/RequestParser.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.RequestParser (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.RequestParser

    +
    +No usage of dev.relism.flash.RequestParser
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/class-use/ServerHandle.html b/latest/dev/relism/flash/class-use/ServerHandle.html new file mode 100644 index 0000000..c5121a3 --- /dev/null +++ b/latest/dev/relism/flash/class-use/ServerHandle.html @@ -0,0 +1,88 @@ + + + + +Uses of Interface dev.relism.flash.ServerHandle (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.ServerHandle

    +
    +
    Packages that use ServerHandle
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/HttpException.html b/latest/dev/relism/flash/exceptions/HttpException.html new file mode 100644 index 0000000..3ba6afe --- /dev/null +++ b/latest/dev/relism/flash/exceptions/HttpException.html @@ -0,0 +1,271 @@ + + + + +HttpException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class HttpException

    +
    +
    java.lang.Object +
    java.lang.Throwable +
    java.lang.Exception +
    java.lang.RuntimeException +
    dev.relism.flash.exceptions.HttpException
    +
    +
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    public class HttpException +extends RuntimeException
    +
    Runtime exception carrying an HTTP status code. Extensions map this to a + structured JSON error response via the global exception handler installed by + flash-ext-jackson. + +
    
    + throw HttpException.notFound("Blog");
    + throw new HttpException(422, "Validation failed: title is required");
    + 
    +
    +
    See Also:
    +
    + +
    +
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        HttpException

        +
        public HttpException(int status, + String message)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      + +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/InitializationException.html b/latest/dev/relism/flash/exceptions/InitializationException.html new file mode 100644 index 0000000..ef335c8 --- /dev/null +++ b/latest/dev/relism/flash/exceptions/InitializationException.html @@ -0,0 +1,185 @@ + + + + +InitializationException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class InitializationException

    +
    +
    java.lang.Object +
    java.lang.Throwable +
    java.lang.Exception +
    java.lang.RuntimeException +
    dev.relism.flash.exceptions.InitializationException
    +
    +
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    public class InitializationException +extends RuntimeException
    +
    Thrown at boot time when Flash detects a configuration or registration error. + +

    Fail-fast: a clear crash at startup is always preferable to a server that + starts "empty" and silently drops routes.

    +
    +
    See Also:
    +
    + +
    +
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        InitializationException

        +
        public InitializationException(String message)
        +
        +
      • +
      • +
        +

        InitializationException

        +
        public InitializationException(String message, + Throwable cause)
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/class-use/HttpException.html b/latest/dev/relism/flash/exceptions/class-use/HttpException.html new file mode 100644 index 0000000..7e23f64 --- /dev/null +++ b/latest/dev/relism/flash/exceptions/class-use/HttpException.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.exceptions.HttpException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.exceptions.HttpException

    +
    +
    Packages that use HttpException
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/class-use/InitializationException.html b/latest/dev/relism/flash/exceptions/class-use/InitializationException.html new file mode 100644 index 0000000..5549b5d --- /dev/null +++ b/latest/dev/relism/flash/exceptions/class-use/InitializationException.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.exceptions.InitializationException (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.exceptions.InitializationException

    +
    +No usage of dev.relism.flash.exceptions.InitializationException
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/package-summary.html b/latest/dev/relism/flash/exceptions/package-summary.html new file mode 100644 index 0000000..d0f76d9 --- /dev/null +++ b/latest/dev/relism/flash/exceptions/package-summary.html @@ -0,0 +1,123 @@ + + + + +dev.relism.flash.exceptions (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.exceptions

    +
    +
    +
    package dev.relism.flash.exceptions
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/package-tree.html b/latest/dev/relism/flash/exceptions/package-tree.html new file mode 100644 index 0000000..55549e9 --- /dev/null +++ b/latest/dev/relism/flash/exceptions/package-tree.html @@ -0,0 +1,89 @@ + + + + +dev.relism.flash.exceptions Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.exceptions

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/exceptions/package-use.html b/latest/dev/relism/flash/exceptions/package-use.html new file mode 100644 index 0000000..eab50c4 --- /dev/null +++ b/latest/dev/relism/flash/exceptions/package-use.html @@ -0,0 +1,86 @@ + + + + +Uses of Package dev.relism.flash.exceptions (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.exceptions

    +
    +
    Packages that use dev.relism.flash.exceptions
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/AnnotationProcessor.html b/latest/dev/relism/flash/extension/AnnotationProcessor.html new file mode 100644 index 0000000..b5eee1c --- /dev/null +++ b/latest/dev/relism/flash/extension/AnnotationProcessor.html @@ -0,0 +1,157 @@ + + + + +AnnotationProcessor (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface AnnotationProcessor

    +
    +
    +
    +
    Functional Interface:
    +
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    +
    +
    +
    @FunctionalInterface +public interface AnnotationProcessor
    +
    Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically. + +

    Processors are called once per register call, before + the handler is compiled into the router. Returning an empty list is always + valid: processors may also use the call purely for side effects + (e.g. collecting OpenAPI metadata). + +

    Register processors via FlashContext.addAnnotationProcessor(dev.relism.flash.extension.AnnotationProcessor).

    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + +
      process(Class<? extends RequestHandler> handlerClass)
      +
       
      +
      +
      +
      +
      +
    • +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/ExtensionPhase.html b/latest/dev/relism/flash/extension/ExtensionPhase.html new file mode 100644 index 0000000..0a8538c --- /dev/null +++ b/latest/dev/relism/flash/extension/ExtensionPhase.html @@ -0,0 +1,297 @@ + + + + +ExtensionPhase (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Enum Class ExtensionPhase

    +
    +
    java.lang.Object +
    java.lang.Enum<ExtensionPhase> +
    dev.relism.flash.extension.ExtensionPhase
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparable<ExtensionPhase>, Constable
    +
    +
    +
    public enum ExtensionPhase +extends Enum<ExtensionPhase>
    +
    Semantic execution phases for FlashExtension.priority(). + +

    Phase determines the order in which annotation-processor middlewares are injected into + the chain. Lower value = runs earlier (outermost wrapper = first at request time). + +

    + Request ──► EARLY middlewares ──► DEFAULT middlewares ──► LATE middlewares ──► handler
    + 
    + +

    Within the same phase, extensions execute in install order (sort is stable). + Raw integers are valid for fine-grained ordering within a phase + (e.g. ExtensionPhase.EARLY.value + 10).

    +
    +
    +
      + +
    • +
      +

      Nested Class Summary

      +
      +

      Nested classes/interfaces inherited from class java.lang.Enum

      +Enum.EnumDesc<E extends Enum<E>>
      +
      +
    • + +
    • +
      +

      Enum Constant Summary

      +
      Enum Constants
      +
      +
      Enum Constant
      +
      Description
      + +
      +
      Normal application extensions.
      +
      + +
      +
      Security guards, rate limiting — must short-circuit before expensive processing.
      +
      + +
      +
      Observability, logging, diagnostics — must observe after all business logic.
      +
      +
      +
      +
    • + +
    • +
      +

      Field Summary

      +
      Fields
      +
      +
      Modifier and Type
      +
      Field
      +
      Description
      +
      final int
      + +
      +
      The integer priority value used for sorting.
      +
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + + +
      +
      Returns the enum constant of this class with the specified name.
      +
      + + +
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      +
      +
      + +
      +

      Methods inherited from class java.lang.Object

      +getClass, notify, notifyAll, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Enum Constant Details

      +
        +
      • +
        +

        EARLY

        +
        public static final ExtensionPhase EARLY
        +
        Security guards, rate limiting — must short-circuit before expensive processing.
        +
        +
      • +
      • +
        +

        DEFAULT

        +
        public static final ExtensionPhase DEFAULT
        +
        Normal application extensions. Default when FlashExtension.priority() is not overridden.
        +
        +
      • +
      • +
        +

        LATE

        +
        public static final ExtensionPhase LATE
        +
        Observability, logging, diagnostics — must observe after all business logic.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        value

        +
        public final int value
        +
        The integer priority value used for sorting.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        values

        +
        public static ExtensionPhase[] values()
        +
        Returns an array containing the constants of this enum class, in +the order they are declared.
        +
        +
        Returns:
        +
        an array containing the constants of this enum class, in the order they are declared
        +
        +
        +
      • +
      • +
        +

        valueOf

        +
        public static ExtensionPhase valueOf(String name)
        +
        Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        IllegalArgumentException - if this enum class has no constant with the specified name
        +
        NullPointerException - if the argument is null
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashApp.html b/latest/dev/relism/flash/extension/FlashApp.html new file mode 100644 index 0000000..95ee738 --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashApp.html @@ -0,0 +1,341 @@ + + + + +FlashApp (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FlashApp

    +
    +
    java.lang.Object +
    dev.relism.flash.extension.FlashRegistrar<FlashApp> +
    dev.relism.flash.extension.FlashApp
    +
    +
    +
    +
    +
    public final class FlashApp +extends FlashRegistrar<FlashApp>
    +
    Single entry point for Flash. Owns one flat FastPathRouterImpl — + all routes (app-level and scoped) compile into a single FSM at startup. + +
    
    + FlashApp.create(8080)
    +     .install(new JacksonExtension())
    +     .use(cors)
    +     .get("/ping",    (req, res) -> "pong")
    +     .get("/secured", (req, res) -> user(), oidc.protect())
    +     .scan("dev.example.handlers")
    +     .mount("/api", scope -> scope.get("/health", (req, res) -> "ok"))
    +     .startAndBlock();   // blocks main thread
    + 
    + +

    Startup sequence (both start() and startAndBlock())

    +
      +
    1. Extensions sorted by FlashExtension.priority() — lower first.
    2. +
    3. All FlashExtension.provide(dev.relism.flash.extension.FlashContext) — register services, processors, listeners.
    4. +
    5. FlashContext.resolveAll() — topo-sort, cycle detection.
    6. +
    7. All FlashExtension.routes(dev.relism.flash.extension.FlashRegistrar<?>, dev.relism.flash.extension.FlashContext) — routes registered, services available.
    8. +
    9. Compile all routes into one flat FSM — zero prefix scanning at runtime.
    10. +
    11. Accept loop started.
    12. +
    + +

    Default error handlers

    + Dev mode (-Dflash.env=dev): rich HTML with stack traces. + Prod mode (default): generic JSON — no internal details leaked. + Override via onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler) / onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler).
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashConfiguration.html b/latest/dev/relism/flash/extension/FlashConfiguration.html new file mode 100644 index 0000000..2903266 --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashConfiguration.html @@ -0,0 +1,163 @@ + + + + +FlashConfiguration (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FlashConfiguration

    +
    +
    java.lang.Object +
    dev.relism.flash.extension.FlashConfiguration
    +
    +
    +
    +
    public class FlashConfiguration +extends Object
    +
    Configuration for a FlashApp instance. + +
    
    + // Minimal — port only
    + FlashApp.create(8080);
    +
    + // Full control
    + FlashApp.create(FlashConfiguration.builder()
    +         .port(8080)
    +         .host("127.0.0.1")
    +         .maxHeaderBufferSize(128 * 1024)
    +         .build());
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        FlashConfiguration

        +
        public FlashConfiguration()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashContext.html b/latest/dev/relism/flash/extension/FlashContext.html new file mode 100644 index 0000000..af977cc --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashContext.html @@ -0,0 +1,304 @@ + + + + +FlashContext (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FlashContext

    +
    +
    java.lang.Object +
    dev.relism.flash.extension.FlashContext
    +
    +
    +
    +
    public class FlashContext +extends Object
    +
    Central service registry and boot-time hook coordinator. + +

    Every handler, extension, and scope shares one (or a child of one) FlashContext. + Three capabilities: +

      +
    1. Service registryprovide(java.lang.Class<T>, T)/supply(java.lang.Class<T>, java.util.function.Supplier<T>)/require(java.lang.Class<T>)/find(java.lang.Class<T>).
    2. +
    3. Annotation processors — middleware injection from handler annotations at boot.
    4. +
    5. Route listeners — boot-time observation of the route graph.
    6. +
    + +

    Eager vs lazy registration

    + + +

    A child context (via child()) inherits parent services and processors. + Services provided on the child are scoped and invisible to the parent.

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        FlashContext

        +
        public FlashContext()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        child

        +
        public FlashContext child()
        +
        Creates a child context that inherits this context's services and processors.
        +
        +
      • +
      • +
        +

        provide

        +
        public <T> void provide(Class<T> type, + T instance)
        +
        Registers an already-constructed instance under type.
        +
        +
      • +
      • +
        +

        supply

        +
        public <T> void supply(Class<T> type, + Supplier<T> factory)
        +
        Registers a lazy factory for type. The factory runs once at + resolveAll() time (or on the first require(java.lang.Class<T>) call for this type) + and may call require(java.lang.Class<T>) for its own dependencies — topological order + is resolved automatically. + +
        
        + ctx.supply(JwtValidator.class, () ->
        +     new JwtValidator(ctx.require(OidcProviderMetadata.class).jwksUri()));
        + 
        +
        +
      • +
      • +
        +

        require

        +
        public <T> T require(Class<T> type)
        +
        Returns the service for type. Checks own scope first, then parent chain. + Lazy-registered types are resolved on first access. Circular dependencies throw + IllegalStateException with the full cycle path.
        +
        +
        Throws:
        +
        IllegalStateException - if the service is not found anywhere in the context chain
        +
        +
        +
      • +
      • +
        +

        find

        +
        public <T> Optional<T> find(Class<T> type)
        +
        Returns the service for type, or empty if not found in this scope or any parent.
        +
        +
      • +
      • +
        +

        optional

        +
        public <T> Optional<T> optional(Class<T> type)
        +
        Alias for find(java.lang.Class<T>) — prefer when semantics are "this may or may not exist".
        +
        +
      • +
      • +
        +

        addAnnotationProcessor

        +
        public void addAnnotationProcessor(AnnotationProcessor processor)
        +
        Registers an AnnotationProcessor. Processors run once per class-based handler at boot.
        +
        +
      • +
      • +
        +

        addRouteListener

        +
        public void addRouteListener(RouteListener listener)
        +
        Registers a boot-time RouteListener. Zero overhead on the request hot-path.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashExtension.html b/latest/dev/relism/flash/extension/FlashExtension.html new file mode 100644 index 0000000..03a0d0b --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashExtension.html @@ -0,0 +1,221 @@ + + + + +FlashExtension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface FlashExtension

    +
    +
    +
    +
    public interface FlashExtension
    +
    Two-phase contract for all Flash extensions. + +

    Extension lifecycle inside FlashApp.start(): +

      +
    1. Extensions are sorted by priority() — lower value runs first.
    2. +
    3. Provide phaseprovide(FlashContext) is called for all + installed extensions. Use this phase to register services, annotation processors, + and route listeners. Never call FlashContext.require(java.lang.Class<T>) here.
    4. +
    5. Context resolution — FlashContext.resolveAll() performs topological + resolution of lazy suppliers. Circular or missing dependencies fail here with + a clear message before any request is served.
    6. +
    7. Routes phaseroutes(FlashRegistrar, FlashContext) is called for + all extensions. All services are resolved; FlashContext.require(java.lang.Class<T>) is safe.
    8. +
    + +

    Priority and middleware ordering

    + priority() controls the order annotation processors are registered, which + determines the annotation-layer middleware chain position: +
    + Request ──► EARLY processors' mw ──► DEFAULT processors' mw ──► LATE processors' mw ──► handler
    + 
    + Use ExtensionPhase constants for semantic ordering: +
    
    + @Override public int priority() { return ExtensionPhase.EARLY.value; }
    + 
    + +

    Example

    +
    
    + public class MetricsExtension implements FlashExtension {
    +
    +     @Override public int priority() { return ExtensionPhase.LATE.value; }
    +
    +     @Override
    +     public void provide(FlashContext ctx) {
    +         ctx.provide(MetricsRegistry.class, new PromMetricsRegistry());
    +     }
    +
    +     @Override
    +     public void routes(FlashRegistrar<?> app, FlashContext ctx) {
    +         app.get("/metrics", (req, res) -> ctx.require(MetricsRegistry.class).scrape());
    +     }
    + }
    + 
    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      default int
      + +
      +
      Execution priority.
      +
      +
      default void
      + +
      +
      Phase 1 — register services and processors.
      +
      +
      default void
      + +
      +
      Phase 2 — register routes.
      +
      +
      +
      +
      +
      +
    • +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashRegistrar.html b/latest/dev/relism/flash/extension/FlashRegistrar.html new file mode 100644 index 0000000..dde8250 --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashRegistrar.html @@ -0,0 +1,407 @@ + + + + +FlashRegistrar (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FlashRegistrar<SELF extends FlashRegistrar<SELF>>

    +
    +
    java.lang.Object +
    dev.relism.flash.extension.FlashRegistrar<SELF>
    +
    +
    +
    +
    Type Parameters:
    +
    SELF - concrete registrar type — enables fluent chaining without casting
    +
    +
    +
    Direct Known Subclasses:
    +
    FlashApp, FlashScope
    +
    +
    +
    public abstract class FlashRegistrar<SELF extends FlashRegistrar<SELF>> +extends Object
    +
    Common route-registration surface shared by FlashApp and FlashScope. + +

    All route methods register immediately — no deferred .with() call. + Middleware is passed as a varargs third argument: + +

    
    + app.get("/ping",    (req, res) -> "pong")
    + app.get("/secured", (req, res) -> user(), oidc.protect())
    + app.get("/admin",   handler, oidc.requireRole("admin"), rateLimiter)
    + 
    + +

    FlashExtension.routes(dev.relism.flash.extension.FlashRegistrar<?>, dev.relism.flash.extension.FlashContext) receives a FlashRegistrar<?> for route + registration. Extension installation (install()) is only available on + FlashApp — scoped install is intentionally unsupported.

    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/FlashScope.html b/latest/dev/relism/flash/extension/FlashScope.html new file mode 100644 index 0000000..3f720f6 --- /dev/null +++ b/latest/dev/relism/flash/extension/FlashScope.html @@ -0,0 +1,216 @@ + + + + +FlashScope (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FlashScope

    +
    +
    java.lang.Object +
    dev.relism.flash.extension.FlashRegistrar<FlashScope> +
    dev.relism.flash.extension.FlashScope
    +
    +
    +
    +
    +
    public final class FlashScope +extends FlashRegistrar<FlashScope>
    +
    Scoped builder for namespace-prefixed routes. Pure syntactic sugar — + does not own a router. Routes merge into FlashApp's single flat router + at FlashApp.start(). + +
    
    + app.mount("/api", scope -> {
    +     scope.use(authMiddleware);
    +     scope.get("/health", (req, res) -> "ok");                    // → GET /api/health
    +     scope.get("/users",  (req, res) -> "...", rateLimiter);      // → GET /api/users
    +     scope.scan("dev.example.api.handlers");
    + });
    + 
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/RouteEvent.html b/latest/dev/relism/flash/extension/RouteEvent.html new file mode 100644 index 0000000..2bb60e0 --- /dev/null +++ b/latest/dev/relism/flash/extension/RouteEvent.html @@ -0,0 +1,373 @@ + + + + +RouteEvent (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Record Class RouteEvent

    +
    +
    java.lang.Object +
    java.lang.Record +
    dev.relism.flash.extension.RouteEvent
    +
    +
    +
    +
    +
    Record Components:
    +
    method - HTTP method for this route
    +
    path - full path as declared (including namespace prefix for scoped routes)
    +
    namespace - namespace prefix of the router that owns this route ("/" for root)
    +
    routerType - simple class name of the owning router implementation
    +
    handlerClass - concrete handler class, or null for anonymous lambda handlers
    +
    middlewareChain - ordered middleware classes, outermost first
    +
    +
    +
    public record RouteEvent(HttpMethod method, String path, String namespace, String routerType, Class<?> handlerClass, List<Class<? extends Middleware>> middlewareChain) +extends Record
    +
    Immutable snapshot of a route captured at registration time. + +

    Emitted by FlashApp and FlashScope to every registered + RouteListener before the route is compiled into the routing engine. + All information is derived automatically — no annotations or declarations + are required from the developer. + +

    Middleware chain

    + middlewareChain lists the Middleware classes outermost-first: +
      +
    1. Router-level middlewares (set on the router constructor)
    2. +
    3. Annotation-injected middlewares (e.g. from @Authenticated)
    4. +
    5. Handler-level explicit middlewares (passed inline: app.get(path, h, mw...))
    6. +
    + +

    Handler abstraction chain

    + Walk handlerClass upward via Class.getSuperclass() to reconstruct + the full inheritance chain (e.g. EditPostPageHandler → HtmlHandler → RequestHandler). + Read Class.getAnnotations() on each level to discover declared pointcuts + (@Authenticated, @RolesAllowed, @Route/@GET, etc.).
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RouteEvent

        +
        public RouteEvent(HttpMethod method, + String path, + String namespace, + String routerType, + Class<?> handlerClass, + List<Class<? extends Middleware>> middlewareChain)
        +
        Creates an instance of a RouteEvent record class.
        +
        +
        Parameters:
        +
        method - the value for the method record component
        +
        path - the value for the path record component
        +
        namespace - the value for the namespace record component
        +
        routerType - the value for the routerType record component
        +
        handlerClass - the value for the handlerClass record component
        +
        middlewareChain - the value for the middlewareChain record component
        +
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        toString

        +
        public final String toString()
        +
        Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
        +
        +
        Specified by:
        +
        toString in class Record
        +
        Returns:
        +
        a string representation of this object
        +
        +
        +
      • +
      • +
        +

        hashCode

        +
        public final int hashCode()
        +
        Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
        +
        +
        Specified by:
        +
        hashCode in class Record
        +
        Returns:
        +
        a hash code value for this object
        +
        +
        +
      • +
      • +
        +

        equals

        +
        public final boolean equals(Object o)
        +
        Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
        +
        +
        Specified by:
        +
        equals in class Record
        +
        Parameters:
        +
        o - the object with which to compare
        +
        Returns:
        +
        true if this object is the same as the o argument; false otherwise.
        +
        +
        +
      • +
      • +
        +

        method

        +
        public HttpMethod method()
        +
        Returns the value of the method record component.
        +
        +
        Returns:
        +
        the value of the method record component
        +
        +
        +
      • +
      • +
        +

        path

        +
        public String path()
        +
        Returns the value of the path record component.
        +
        +
        Returns:
        +
        the value of the path record component
        +
        +
        +
      • +
      • +
        +

        namespace

        +
        public String namespace()
        +
        Returns the value of the namespace record component.
        +
        +
        Returns:
        +
        the value of the namespace record component
        +
        +
        +
      • +
      • +
        +

        routerType

        +
        public String routerType()
        +
        Returns the value of the routerType record component.
        +
        +
        Returns:
        +
        the value of the routerType record component
        +
        +
        +
      • +
      • +
        +

        handlerClass

        +
        public Class<?> handlerClass()
        +
        Returns the value of the handlerClass record component.
        +
        +
        Returns:
        +
        the value of the handlerClass record component
        +
        +
        +
      • +
      • +
        +

        middlewareChain

        +
        public List<Class<? extends Middleware>> middlewareChain()
        +
        Returns the value of the middlewareChain record component.
        +
        +
        Returns:
        +
        the value of the middlewareChain record component
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/RouteListener.html b/latest/dev/relism/flash/extension/RouteListener.html new file mode 100644 index 0000000..9616dcb --- /dev/null +++ b/latest/dev/relism/flash/extension/RouteListener.html @@ -0,0 +1,163 @@ + + + + +RouteListener (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface RouteListener

    +
    +
    +
    +
    Functional Interface:
    +
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    +
    +
    +
    @FunctionalInterface +public interface RouteListener
    +
    Observer notified once for each route registered on a FlashApp or FlashScope. + +

    Register via FlashContext.addRouteListener(dev.relism.flash.extension.RouteListener). The listener is called + once per route at boot time, before the route is handed to the routing engine. + There is zero overhead on the request hot-path. + +

    Intended for extensions that need to introspect the route graph (e.g. a route viewer, + OpenAPI schema builder, etc.) without polluting the routing or middleware infrastructure.

    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      void
      + +
      +
      Called once for every registered route, in registration order.
      +
      +
      +
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        onRoute

        +
        void onRoute(RouteEvent event)
        +
        Called once for every registered route, in registration order.
        +
        +
        Parameters:
        +
        event - immutable snapshot of the route's metadata at registration time
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/AnnotationProcessor.html b/latest/dev/relism/flash/extension/class-use/AnnotationProcessor.html new file mode 100644 index 0000000..5dd9770 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/AnnotationProcessor.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.AnnotationProcessor (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.extension.AnnotationProcessor

    +
    +
    Packages that use AnnotationProcessor
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/ExtensionPhase.html b/latest/dev/relism/flash/extension/class-use/ExtensionPhase.html new file mode 100644 index 0000000..497e7e3 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/ExtensionPhase.html @@ -0,0 +1,95 @@ + + + + +Uses of Enum Class dev.relism.flash.extension.ExtensionPhase (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Enum Class
    dev.relism.flash.extension.ExtensionPhase

    +
    +
    Packages that use ExtensionPhase
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashApp.html b/latest/dev/relism/flash/extension/class-use/FlashApp.html new file mode 100644 index 0000000..388ccb6 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashApp.html @@ -0,0 +1,112 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashApp (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.extension.FlashApp

    +
    +
    Packages that use FlashApp
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashConfiguration.html b/latest/dev/relism/flash/extension/class-use/FlashConfiguration.html new file mode 100644 index 0000000..6be4b76 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashConfiguration.html @@ -0,0 +1,104 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashConfiguration (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.extension.FlashConfiguration

    +
    +
    Packages that use FlashConfiguration
    +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashContext.html b/latest/dev/relism/flash/extension/class-use/FlashContext.html new file mode 100644 index 0000000..79b4fc7 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashContext.html @@ -0,0 +1,135 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashContext (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.extension.FlashContext

    +
    +
    Packages that use FlashContext
    +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashExtension.html b/latest/dev/relism/flash/extension/class-use/FlashExtension.html new file mode 100644 index 0000000..c3b563f --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashExtension.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.FlashExtension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.extension.FlashExtension

    +
    +
    Packages that use FlashExtension
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashRegistrar.html b/latest/dev/relism/flash/extension/class-use/FlashRegistrar.html new file mode 100644 index 0000000..2a550b2 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashRegistrar.html @@ -0,0 +1,117 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashRegistrar (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.extension.FlashRegistrar

    +
    +
    Packages that use FlashRegistrar
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/FlashScope.html b/latest/dev/relism/flash/extension/class-use/FlashScope.html new file mode 100644 index 0000000..e96b6e2 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/FlashScope.html @@ -0,0 +1,90 @@ + + + + +Uses of Class dev.relism.flash.extension.FlashScope (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.extension.FlashScope

    +
    +
    Packages that use FlashScope
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/RouteEvent.html b/latest/dev/relism/flash/extension/class-use/RouteEvent.html new file mode 100644 index 0000000..3c48437 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/RouteEvent.html @@ -0,0 +1,89 @@ + + + + +Uses of Record Class dev.relism.flash.extension.RouteEvent (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Record Class
    dev.relism.flash.extension.RouteEvent

    +
    +
    Packages that use RouteEvent
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/class-use/RouteListener.html b/latest/dev/relism/flash/extension/class-use/RouteListener.html new file mode 100644 index 0000000..f6bffa9 --- /dev/null +++ b/latest/dev/relism/flash/extension/class-use/RouteListener.html @@ -0,0 +1,89 @@ + + + + +Uses of Interface dev.relism.flash.extension.RouteListener (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.extension.RouteListener

    +
    +
    Packages that use RouteListener
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/package-summary.html b/latest/dev/relism/flash/extension/package-summary.html new file mode 100644 index 0000000..881e79e --- /dev/null +++ b/latest/dev/relism/flash/extension/package-summary.html @@ -0,0 +1,158 @@ + + + + +dev.relism.flash.extension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.extension

    +
    +
    +
    package dev.relism.flash.extension
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/package-tree.html b/latest/dev/relism/flash/extension/package-tree.html new file mode 100644 index 0000000..510e98e --- /dev/null +++ b/latest/dev/relism/flash/extension/package-tree.html @@ -0,0 +1,119 @@ + + + + +dev.relism.flash.extension Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.extension

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +

    Interface Hierarchy

    + +
    +
    +

    Enum Class Hierarchy

    + +
    +
    +

    Record Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/extension/package-use.html b/latest/dev/relism/flash/extension/package-use.html new file mode 100644 index 0000000..c75baea --- /dev/null +++ b/latest/dev/relism/flash/extension/package-use.html @@ -0,0 +1,153 @@ + + + + +Uses of Package dev.relism.flash.extension (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.extension

    +
    +
    Packages that use dev.relism.flash.extension
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/ContentType.html b/latest/dev/relism/flash/http/ContentType.html new file mode 100644 index 0000000..df6af1e --- /dev/null +++ b/latest/dev/relism/flash/http/ContentType.html @@ -0,0 +1,507 @@ + + + + +ContentType (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Enum Class ContentType

    +
    +
    java.lang.Object +
    java.lang.Enum<ContentType> +
    dev.relism.flash.http.ContentType
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparable<ContentType>, Constable
    +
    +
    +
    public enum ContentType +extends Enum<ContentType>
    +
    Pre-compiled byte representations of common HTTP Content-Type values. + +
    +invalid reference +
    #getBytes()
    +
    + returns the pre-computed array directly, never allocates.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Enum Constant Details

      +
        +
      • +
        +

        NONE

        +
        public static final ContentType NONE
        +
        +
      • +
      • +
        +

        TEXT_PLAIN

        +
        public static final ContentType TEXT_PLAIN
        +
        +
      • +
      • +
        +

        TEXT_HTML

        +
        public static final ContentType TEXT_HTML
        +
        +
      • +
      • +
        +

        TEXT_CSS

        +
        public static final ContentType TEXT_CSS
        +
        +
      • +
      • +
        +

        TEXT_JAVASCRIPT

        +
        public static final ContentType TEXT_JAVASCRIPT
        +
        +
      • +
      • +
        +

        TEXT_XML

        +
        public static final ContentType TEXT_XML
        +
        +
      • +
      • +
        +

        TEXT_CSV

        +
        public static final ContentType TEXT_CSV
        +
        +
      • +
      • +
        +

        TEXT_MARKDOWN

        +
        public static final ContentType TEXT_MARKDOWN
        +
        +
      • +
      • +
        +

        TEXT_EVENT_STREAM

        +
        public static final ContentType TEXT_EVENT_STREAM
        +
        +
      • +
      • +
        +

        JSON

        +
        public static final ContentType JSON
        +
        +
      • +
      • +
        +

        XML

        +
        public static final ContentType XML
        +
        +
      • +
      • +
        +

        BINARY

        +
        public static final ContentType BINARY
        +
        +
      • +
      • +
        +

        PDF

        +
        public static final ContentType PDF
        +
        +
      • +
      • +
        +

        ZIP

        +
        public static final ContentType ZIP
        +
        +
      • +
      • +
        +

        GZIP

        +
        public static final ContentType GZIP
        +
        +
      • +
      • +
        +

        FORM_URLENCODED

        +
        public static final ContentType FORM_URLENCODED
        +
        +
      • +
      • +
        +

        MULTIPART_FORM

        +
        public static final ContentType MULTIPART_FORM
        +
        +
      • +
      • +
        +

        GRAPHQL

        +
        public static final ContentType GRAPHQL
        +
        +
      • +
      • +
        +

        NDJSON

        +
        public static final ContentType NDJSON
        +
        +
      • +
      • +
        +

        MSGPACK

        +
        public static final ContentType MSGPACK
        +
        +
      • +
      • +
        +

        CBOR

        +
        public static final ContentType CBOR
        +
        +
      • +
      • +
        +

        LD_JSON

        +
        public static final ContentType LD_JSON
        +
        +
      • +
      • +
        +

        IMAGE_PNG

        +
        public static final ContentType IMAGE_PNG
        +
        +
      • +
      • +
        +

        IMAGE_JPEG

        +
        public static final ContentType IMAGE_JPEG
        +
        +
      • +
      • +
        +

        IMAGE_GIF

        +
        public static final ContentType IMAGE_GIF
        +
        +
      • +
      • +
        +

        IMAGE_WEBP

        +
        public static final ContentType IMAGE_WEBP
        +
        +
      • +
      • +
        +

        IMAGE_SVG

        +
        public static final ContentType IMAGE_SVG
        +
        +
      • +
      • +
        +

        IMAGE_ICO

        +
        public static final ContentType IMAGE_ICO
        +
        +
      • +
      • +
        +

        IMAGE_AVIF

        +
        public static final ContentType IMAGE_AVIF
        +
        +
      • +
      • +
        +

        FONT_WOFF

        +
        public static final ContentType FONT_WOFF
        +
        +
      • +
      • +
        +

        FONT_WOFF2

        +
        public static final ContentType FONT_WOFF2
        +
        +
      • +
      • +
        +

        AUDIO_MPEG

        +
        public static final ContentType AUDIO_MPEG
        +
        +
      • +
      • +
        +

        AUDIO_OGG

        +
        public static final ContentType AUDIO_OGG
        +
        +
      • +
      • +
        +

        VIDEO_MP4

        +
        public static final ContentType VIDEO_MP4
        +
        +
      • +
      • +
        +

        VIDEO_WEBM

        +
        public static final ContentType VIDEO_WEBM
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        values

        +
        public static ContentType[] values()
        +
        Returns an array containing the constants of this enum class, in +the order they are declared.
        +
        +
        Returns:
        +
        an array containing the constants of this enum class, in the order they are declared
        +
        +
        +
      • +
      • +
        +

        valueOf

        +
        public static ContentType valueOf(String name)
        +
        Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        IllegalArgumentException - if this enum class has no constant with the specified name
        +
        NullPointerException - if the argument is null
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/HttpMethod.html b/latest/dev/relism/flash/http/HttpMethod.html new file mode 100644 index 0000000..653f337 --- /dev/null +++ b/latest/dev/relism/flash/http/HttpMethod.html @@ -0,0 +1,330 @@ + + + + +HttpMethod (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Enum Class HttpMethod

    +
    +
    java.lang.Object +
    java.lang.Enum<HttpMethod> +
    dev.relism.flash.http.HttpMethod
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparable<HttpMethod>, Constable
    +
    +
    +
    public enum HttpMethod +extends Enum<HttpMethod>
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Enum Constant Details

      +
        +
      • +
        +

        GET

        +
        public static final HttpMethod GET
        +
        +
      • +
      • +
        +

        POST

        +
        public static final HttpMethod POST
        +
        +
      • +
      • +
        +

        PUT

        +
        public static final HttpMethod PUT
        +
        +
      • +
      • +
        +

        DELETE

        +
        public static final HttpMethod DELETE
        +
        +
      • +
      • +
        +

        PATCH

        +
        public static final HttpMethod PATCH
        +
        +
      • +
      • +
        +

        OPTIONS

        +
        public static final HttpMethod OPTIONS
        +
        +
      • +
      • + +
      • +
      • +
        +

        TRACE

        +
        public static final HttpMethod TRACE
        +
        +
      • +
      • +
        +

        CONNECT

        +
        public static final HttpMethod CONNECT
        +
        +
      • +
      • +
        +

        PURGE

        +
        public static final HttpMethod PURGE
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        values

        +
        public static HttpMethod[] values()
        +
        Returns an array containing the constants of this enum class, in +the order they are declared.
        +
        +
        Returns:
        +
        an array containing the constants of this enum class, in the order they are declared
        +
        +
        +
      • +
      • +
        +

        valueOf

        +
        public static HttpMethod valueOf(String name)
        +
        Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        IllegalArgumentException - if this enum class has no constant with the specified name
        +
        NullPointerException - if the argument is null
        +
        +
        +
      • +
      • +
        +

        fromBytes

        +
        public static HttpMethod fromBytes(byte[] buf, + int off, + int len)
        +
        Resolves the HttpMethod from a byte buffer segment using O(1) dispatch. + Extremely fast, zero allocations, branch-prediction friendly.
        +
        +
      • +
      • +
        +

        toString

        +
        public String toString()
        +
        +
        Overrides:
        +
        toString in class Enum<HttpMethod>
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/HttpStatus.html b/latest/dev/relism/flash/http/HttpStatus.html new file mode 100644 index 0000000..0c5119f --- /dev/null +++ b/latest/dev/relism/flash/http/HttpStatus.html @@ -0,0 +1,531 @@ + + + + +HttpStatus (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Enum Class HttpStatus

    +
    +
    java.lang.Object +
    java.lang.Enum<HttpStatus> +
    dev.relism.flash.http.HttpStatus
    +
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparable<HttpStatus>, Constable
    +
    +
    +
    public enum HttpStatus +extends Enum<HttpStatus>
    +
    Pre-compiled byte representations of standard HTTP status lines. + Uses a direct-access array for O(1) lookup with zero allocation.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Enum Constant Details

      +
        +
      • +
        +

        CONTINUE

        +
        public static final HttpStatus CONTINUE
        +
        +
      • +
      • +
        +

        SWITCHING_PROTOCOLS

        +
        public static final HttpStatus SWITCHING_PROTOCOLS
        +
        +
      • +
      • +
        +

        OK

        +
        public static final HttpStatus OK
        +
        +
      • +
      • +
        +

        CREATED

        +
        public static final HttpStatus CREATED
        +
        +
      • +
      • +
        +

        ACCEPTED

        +
        public static final HttpStatus ACCEPTED
        +
        +
      • +
      • +
        +

        NO_CONTENT

        +
        public static final HttpStatus NO_CONTENT
        +
        +
      • +
      • +
        +

        PARTIAL_CONTENT

        +
        public static final HttpStatus PARTIAL_CONTENT
        +
        +
      • +
      • +
        +

        MOVED_PERMANENTLY

        +
        public static final HttpStatus MOVED_PERMANENTLY
        +
        +
      • +
      • +
        +

        FOUND

        +
        public static final HttpStatus FOUND
        +
        +
      • +
      • +
        +

        NOT_MODIFIED

        +
        public static final HttpStatus NOT_MODIFIED
        +
        +
      • +
      • +
        +

        TEMPORARY_REDIRECT

        +
        public static final HttpStatus TEMPORARY_REDIRECT
        +
        +
      • +
      • +
        +

        PERMANENT_REDIRECT

        +
        public static final HttpStatus PERMANENT_REDIRECT
        +
        +
      • +
      • +
        +

        BAD_REQUEST

        +
        public static final HttpStatus BAD_REQUEST
        +
        +
      • +
      • +
        +

        UNAUTHORIZED

        +
        public static final HttpStatus UNAUTHORIZED
        +
        +
      • +
      • +
        +

        FORBIDDEN

        +
        public static final HttpStatus FORBIDDEN
        +
        +
      • +
      • +
        +

        NOT_FOUND

        +
        public static final HttpStatus NOT_FOUND
        +
        +
      • +
      • +
        +

        METHOD_NOT_ALLOWED

        +
        public static final HttpStatus METHOD_NOT_ALLOWED
        +
        +
      • +
      • +
        +

        NOT_ACCEPTABLE

        +
        public static final HttpStatus NOT_ACCEPTABLE
        +
        +
      • +
      • +
        +

        CONFLICT

        +
        public static final HttpStatus CONFLICT
        +
        +
      • +
      • +
        +

        GONE

        +
        public static final HttpStatus GONE
        +
        +
      • +
      • +
        +

        LENGTH_REQUIRED

        +
        public static final HttpStatus LENGTH_REQUIRED
        +
        +
      • +
      • +
        +

        PAYLOAD_TOO_LARGE

        +
        public static final HttpStatus PAYLOAD_TOO_LARGE
        +
        +
      • +
      • +
        +

        URI_TOO_LONG

        +
        public static final HttpStatus URI_TOO_LONG
        +
        +
      • +
      • +
        +

        UNSUPPORTED_MEDIA_TYPE

        +
        public static final HttpStatus UNSUPPORTED_MEDIA_TYPE
        +
        +
      • +
      • +
        +

        UNPROCESSABLE_ENTITY

        +
        public static final HttpStatus UNPROCESSABLE_ENTITY
        +
        +
      • +
      • +
        +

        TOO_MANY_REQUESTS

        +
        public static final HttpStatus TOO_MANY_REQUESTS
        +
        +
      • +
      • +
        +

        INTERNAL_SERVER_ERROR

        +
        public static final HttpStatus INTERNAL_SERVER_ERROR
        +
        +
      • +
      • +
        +

        NOT_IMPLEMENTED

        +
        public static final HttpStatus NOT_IMPLEMENTED
        +
        +
      • +
      • +
        +

        BAD_GATEWAY

        +
        public static final HttpStatus BAD_GATEWAY
        +
        +
      • +
      • +
        +

        SERVICE_UNAVAILABLE

        +
        public static final HttpStatus SERVICE_UNAVAILABLE
        +
        +
      • +
      • +
        +

        GATEWAY_TIMEOUT

        +
        public static final HttpStatus GATEWAY_TIMEOUT
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        values

        +
        public static HttpStatus[] values()
        +
        Returns an array containing the constants of this enum class, in +the order they are declared.
        +
        +
        Returns:
        +
        an array containing the constants of this enum class, in the order they are declared
        +
        +
        +
      • +
      • +
        +

        valueOf

        +
        public static HttpStatus valueOf(String name)
        +
        Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        IllegalArgumentException - if this enum class has no constant with the specified name
        +
        NullPointerException - if the argument is null
        +
        +
        +
      • +
      • +
        +

        code

        +
        public int code()
        +
        Numeric status code (e.g. 200).
        +
        +
      • +
      • +
        +

        bytes

        +
        public byte[] bytes()
        +
        Pre-encoded "200 OK" bytes — zero allocation on the write path.
        +
        +
      • +
      • +
        +

        reason

        +
        public String reason()
        +
        Reason phrase (e.g. "OK").
        +
        +
      • +
      • +
        +

        bytesForCode

        +
        public static byte[] bytesForCode(int code)
        +
        Returns pre-compiled status bytes for the given code. + Access is O(1) and generates zero garbage.
        +
        +
      • +
      • +
        +

        reasonForCode

        +
        public static String reasonForCode(int code)
        +
        Returns reason phrase for the given code, or null if unknown.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/class-use/ContentType.html b/latest/dev/relism/flash/http/class-use/ContentType.html new file mode 100644 index 0000000..60560a5 --- /dev/null +++ b/latest/dev/relism/flash/http/class-use/ContentType.html @@ -0,0 +1,131 @@ + + + + +Uses of Enum Class dev.relism.flash.http.ContentType (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Enum Class
    dev.relism.flash.http.ContentType

    +
    +
    Packages that use ContentType
    +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/class-use/HttpMethod.html b/latest/dev/relism/flash/http/class-use/HttpMethod.html new file mode 100644 index 0000000..f5e6ffe --- /dev/null +++ b/latest/dev/relism/flash/http/class-use/HttpMethod.html @@ -0,0 +1,224 @@ + + + + +Uses of Enum Class dev.relism.flash.http.HttpMethod (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Enum Class
    dev.relism.flash.http.HttpMethod

    +
    +
    Packages that use HttpMethod
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/class-use/HttpStatus.html b/latest/dev/relism/flash/http/class-use/HttpStatus.html new file mode 100644 index 0000000..a81de0b --- /dev/null +++ b/latest/dev/relism/flash/http/class-use/HttpStatus.html @@ -0,0 +1,119 @@ + + + + +Uses of Enum Class dev.relism.flash.http.HttpStatus (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Enum Class
    dev.relism.flash.http.HttpStatus

    +
    +
    Packages that use HttpStatus
    +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/package-summary.html b/latest/dev/relism/flash/http/package-summary.html new file mode 100644 index 0000000..1160461 --- /dev/null +++ b/latest/dev/relism/flash/http/package-summary.html @@ -0,0 +1,125 @@ + + + + +dev.relism.flash.http (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.http

    +
    +
    +
    package dev.relism.flash.http
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/package-tree.html b/latest/dev/relism/flash/http/package-tree.html new file mode 100644 index 0000000..6c8a1e1 --- /dev/null +++ b/latest/dev/relism/flash/http/package-tree.html @@ -0,0 +1,82 @@ + + + + +dev.relism.flash.http Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.http

    +
    +Package Hierarchies: + +
    +

    Enum Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/http/package-use.html b/latest/dev/relism/flash/http/package-use.html new file mode 100644 index 0000000..4607c4f --- /dev/null +++ b/latest/dev/relism/flash/http/package-use.html @@ -0,0 +1,152 @@ + + + + +Uses of Package dev.relism.flash.http (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.http

    +
    +
    Packages that use dev.relism.flash.http
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/HeaderMap.html b/latest/dev/relism/flash/models/HeaderMap.html new file mode 100644 index 0000000..0f8d40b --- /dev/null +++ b/latest/dev/relism/flash/models/HeaderMap.html @@ -0,0 +1,267 @@ + + + + +HeaderMap (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class HeaderMap

    +
    +
    java.lang.Object +
    dev.relism.flash.models.HeaderMap
    +
    +
    +
    +
    public class HeaderMap +extends Object
    +
    Lazy, zero-copy header access backed directly by the request parser's byte buffer. + Strings are allocated only when first(java.lang.String) / all(java.lang.String) / view(java.lang.String) is called; + the raw bytes are never copied at parse time. + +

    Lifetime contract — read carefully

    + One HeaderMap instance lives on the connection (not per-request). On every + keep-alive request reset(byte[], int, int) is called to slide the window over the new header + section of the same reused buffer. This has two critical implications: + +
      +
    1. Do not retain the HeaderMap beyond the handler. After the handler + returns, the next request reuses and overwrites the buffer. Any String + values retrieved via first(java.lang.String)/all(java.lang.String) are safe (they are independent + heap copies); the HeaderMap object itself is not.
    2. +
    3. view(java.lang.String) returns a zero-copy ByteView slice + into the live buffer. Storing this view and reading it after the handler + returns (e.g. in an async callback, a CompletableFuture + continuation, or a virtual-thread handoff) is a data race — the bytes + may have been overwritten by the next request. Copy to a String or + byte[] before leaving the synchronous handler scope.
    4. +
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + +
      all()
      +
      +
      Returns all header values in declaration order.
      +
      + +
      all(String name)
      +
      +
      Returns all values of header name in declaration order, or an empty list.
      +
      + +
      first(String name)
      +
      +
      Returns the first value of header name (case-insensitive), or null.
      +
      +
      void
      +
      reset(byte[] buffer, + int sectionStart, + int sectionEnd)
      +
      +
      Resets this map to the header section buffer[sectionStart, sectionEnd).
      +
      +
      boolean
      + +
      +
      Case-insensitive comparison of the first value of name against value.
      +
      +
      dev.relism.fpr.core.ByteView
      +
      view(String name)
      +
      +
      Returns a zero-copy ByteView over the first value of name, or null.
      +
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        HeaderMap

        +
        public HeaderMap()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        reset

        +
        public void reset(byte[] buffer, + int sectionStart, + int sectionEnd)
        +
        Resets this map to the header section buffer[sectionStart, sectionEnd).
        +
        +
      • +
      • +
        +

        first

        +
        public String first(String name)
        +
        Returns the first value of header name (case-insensitive), or null.
        +
        +
      • +
      • +
        +

        all

        +
        public List<String> all(String name)
        +
        Returns all values of header name in declaration order, or an empty list.
        +
        +
      • +
      • +
        +

        all

        +
        public List<String> all()
        +
        Returns all header values in declaration order.
        +
        +
      • +
      • +
        +

        valueEqualsIgnoreCase

        +
        public boolean valueEqualsIgnoreCase(String name, + String value)
        +
        Case-insensitive comparison of the first value of name against value.
        +
        +
      • +
      • +
        +

        view

        +
        public dev.relism.fpr.core.ByteView view(String name)
        +
        Returns a zero-copy ByteView over the first value of name, or null.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/PathParams.html b/latest/dev/relism/flash/models/PathParams.html new file mode 100644 index 0000000..9e86d07 --- /dev/null +++ b/latest/dev/relism/flash/models/PathParams.html @@ -0,0 +1,201 @@ + + + + +PathParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PathParams

    +
    +
    java.lang.Object +
    dev.relism.flash.models.PathParams
    +
    +
    +
    +
    public class PathParams +extends Object
    +
    Path parameters captured during routing, stored as byte offsets into the path view. + get(java.lang.String) allocates a String on call; view(java.lang.String) is zero-copy.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        PathParams

        +
        public PathParams(dev.relism.fpr.core.ByteView source, + String[] names, + int[] starts, + int[] lens)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        inject

        +
        public static void inject(Request request, + PathParams params)
        +
        Injects path parameters into a request. The cross-package bridge from + AbstractRouter — keeps Request.setPathParams(dev.relism.flash.models.PathParams) + package-private while allowing the router to set params without a public setter.
        +
        +
      • +
      • +
        +

        get

        +
        public String get(String name)
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/QueryParams.html b/latest/dev/relism/flash/models/QueryParams.html new file mode 100644 index 0000000..647cd1d --- /dev/null +++ b/latest/dev/relism/flash/models/QueryParams.html @@ -0,0 +1,220 @@ + + + + +QueryParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class QueryParams

    +
    +
    java.lang.Object +
    dev.relism.flash.models.QueryParams
    +
    +
    +
    +
    public class QueryParams +extends Object
    +
    Lazy query parameter access (?key=value&...). Backed by a zero-copy ByteView + over the raw query string bytes, no parsing at construction, values percent-decoded on demand. + +

    Percent-decoding (%XX → byte, + → space) follows the + application/x-www-form-urlencoded convention used by all browsers.

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Field Details

      +
        +
      • +
        +

        EMPTY

        +
        public static final QueryParams EMPTY
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        QueryParams

        +
        public QueryParams(dev.relism.fpr.core.ByteView raw)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      + +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/Request.html b/latest/dev/relism/flash/models/Request.html new file mode 100644 index 0000000..2b82611 --- /dev/null +++ b/latest/dev/relism/flash/models/Request.html @@ -0,0 +1,377 @@ + + + + +Request (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Request

    +
    +
    java.lang.Object +
    dev.relism.flash.models.Request
    +
    +
    +
    +
    public class Request +extends Object
    +
    Immutable view of an incoming HTTP/1.1 request. Constructed by RequestParser + and passed directly to route handlers; never modified after creation (path/query params are + injected once by the router before the handler runs). + +
    
    + server.get("/users/{id}", (req, res) -> {
    +     String id      = req.param("id");            // /users/42 → "42"
    +     String page    = req.query("page");           // ?page=2   → "2"
    +     String accept  = req.header("Accept");        // first Accept value
    +     byte[] body    = req.body().bytes();          // materialise body
    +     InputStream in = req.body().stream();         // zero-copy stream
    + });
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        Request

        +
        public Request(RequestLine requestLine, + byte[] body)
        +
        Test / manual constructor — remoteAddress() returns null.
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        forParsed

        +
        public static Request forParsed(RequestLine requestLine, + InputStream stream, + long contentLength, + byte[] headerBuf, + int bodyStart, + int preBufLen, + InetSocketAddress remoteAddress)
        +
        +
      • +
      • +
        +

        method

        +
        public HttpMethod method()
        +
        HTTP method (GET, POST, …).
        +
        +
      • +
      • +
        +

        path

        +
        public String path()
        +
        Request path decoded as UTF-8. Includes a leading slash; never includes the query string. + Example: a request for /users/42?page=1 returns "/users/42".
        +
        +
      • +
      • +
        +

        header

        +
        public String header(String name)
        +
        Returns the first value of header name, or null if absent. + Lookup is case-insensitive ("content-type" and "Content-Type" are equivalent).
        +
        +
      • +
      • +
        +

        headers

        +
        public List<String> headers(String name)
        +
        Returns all values of header name in declaration order. + Useful for headers that appear multiple times (e.g. Accept, Cookie). + Lookup is case-insensitive. Returns an empty list if the header is absent.
        +
        +
      • +
      • +
        +

        headers

        +
        public List<String> headers()
        +
        Returns all header values in declaration order, one entry per header line. + Useful for debugging; for targeted access prefer header(String).
        +
        +
      • +
      • +
        +

        param

        +
        public String param(String name)
        +
        Returns the path parameter named name, or null. + Parameters are declared in the route pattern (e.g. /users/{id}) and + injected by the router before the handler runs. Returns null if this + route has no such parameter or the route is not parametric.
        +
        +
      • +
      • +
        +

        query

        +
        public String query(String name)
        +
        Returns the first query parameter named name, or null. + The query string is parsed lazily on the first call and cached for the request lifetime. + For ?a=1&a=2, returns "1".
        +
        +
      • +
      • +
        +

        queries

        +
        public List<String> queries(String name)
        +
        Returns all query parameters named name in declaration order. + For ?tag=a&tag=b, returns ["a", "b"]. + Returns an empty list if the parameter is absent.
        +
        +
      • +
      • +
        +

        remoteAddress

        +
        public InetSocketAddress remoteAddress()
        +
        Returns the remote socket address of the connected client, or null + for test-constructed requests. + +

        The InetSocketAddress is the JDK object created during + ServerSocket.accept() — no allocation occurs here. + To obtain the IP string (lazy, allocates once): +

        
        + InetSocketAddress addr = req.remoteAddress();
        + if (addr != null) String ip = addr.getAddress().getHostAddress();
        + 
        +
        +
      • +
      • +
        +

        body

        +
        public RequestBody body()
        +
        Returns the request body accessor. Use RequestBody.bytes() to materialise + the full body or RequestBody.stream() for zero-copy streaming access. + The two modes are mutually exclusive per request.
        +
        +
      • +
      • +
        +

        drain

        +
        public void drain()
        +
        Discards unread body bytes; called by the server after each request on keep-alive connections.
        +
        +
      • +
      • +
        +

        headerEquals

        +
        public boolean headerEquals(String name, + String value)
        +
        Internal: case-insensitive header value comparison used by the server keep-alive logic.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/RequestBody.html b/latest/dev/relism/flash/models/RequestBody.html new file mode 100644 index 0000000..997f107 --- /dev/null +++ b/latest/dev/relism/flash/models/RequestBody.html @@ -0,0 +1,237 @@ + + + + +RequestBody (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RequestBody

    +
    +
    java.lang.Object +
    dev.relism.flash.models.RequestBody
    +
    +
    +
    +
    public final class RequestBody +extends Object
    +
    Accessor for the HTTP request body. Supports two mutually exclusive read modes per request: + +
      +
    • bytes() — materialises the full body into a byte[] and caches it. + Safe to call multiple times; the second call returns the cached array. Throws for + bodies larger than 2 GB.
    • +
    • stream() — returns a bounded InputStream without upfront allocation. + For fixed-length bodies this is a view into the already-buffered header bytes stitched + to the socket; for chunked bodies it is the raw +
      +invalid reference +
      dev.relism.ChunkedInputStream
      +
      + + that de-chunks on the fly.
    • +
    + +

    Mutual exclusivity: calling both bytes() and stream() on the same + request produces undefined results. Choose one mode per handler. + +

    Keep-alive: unread body bytes are discarded by Request.drain() after the + handler returns so the socket is correctly positioned for the next pipelined request.

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        isEmpty

        +
        public boolean isEmpty()
        +
        true if the body has zero bytes (Content-Length: 0 or no body).
        +
        +
      • +
      • +
        +

        contentLength

        +
        public long contentLength()
        +
        Declared body size in bytes. Returns -1 for Transfer-Encoding: chunked + bodies where the size is not known upfront.
        +
        +
      • +
      • +
        +

        bytes

        +
        public byte[] bytes()
        +
        Materialises and caches the full body. Suitable for JSON, small form data, and any payload + that must be inspected in full. The result is cached — repeated calls return the same array. + +

        For chunked bodies (contentLength() == -1), reads until the chunked + stream signals EOF.

        +
        +
        Throws:
        +
        IllegalStateException - if contentLength() exceeds Integer.MAX_VALUE + (~2 GB); use stream() for large bodies instead
        +
        +
        +
      • +
      • +
        +

        stream

        +
        public InputStream stream()
        +
        Returns a bounded InputStream over the body without upfront allocation. + +

        For fixed-length bodies: a SequenceInputStream of any already-buffered header + bytes followed by a bounded view of the socket stream — zero heap beyond those small + pre-buffered bytes. + +

        For chunked bodies: the raw +

        +invalid reference +
        dev.relism.ChunkedInputStream
        +
        + that de-chunks on + the fly; EOF signals the end of the logical body and leaves the socket positioned for + the next keep-alive request. + +

        If bytes() was called first, returns a fresh ByteArrayInputStream + over the cached array.

        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/RequestHandler.html b/latest/dev/relism/flash/models/RequestHandler.html new file mode 100644 index 0000000..b9f9667 --- /dev/null +++ b/latest/dev/relism/flash/models/RequestHandler.html @@ -0,0 +1,335 @@ + + + + +RequestHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RequestHandler

    +
    +
    java.lang.Object +
    dev.relism.flash.models.RequestHandler
    +
    +
    +
    +
    Direct Known Subclasses:
    +
    SimpleHandler
    +
    +
    +
    public abstract class RequestHandler +extends Object
    +
    Base class for class-based route handlers. + +

    Declare the route with @Route or a shorthand such as + @GET("/path"), then register via FlashRegistrar.scan(java.lang.String). + For ad-hoc routes use the fluent API (app.get(path, handler) or with middleware). + +

    Lifecycle

    +
      +
    1. Instantiation — no-arg constructor (for scan) or manual new Handler(...)
    2. +
    3. bind(dev.relism.flash.extension.FlashContext) — called once by the framework at start(), injects the + FlashContext and invokes onInit()
    4. +
    5. handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) — called on every matching request (hot-path, zero-alloc)
    6. +
    + +

    Service access

    + Override onInit() to cache services from the FlashContext + into private fields. This keeps the hot-path (handle) free of map lookups. + +
    
    + @GET("/users")
    + public class UserHandler extends RequestHandler {
    +     private UserService users;
    +
    +     @Override protected void onInit() {
    +         users = require(UserService.class);
    +     }
    +
    +     @Override public Object handle(Request req, Response res) {
    +         return users.findAll();
    +     }
    + }
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RequestHandler

        +
        public RequestHandler()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        bind

        +
        public final void bind(FlashContext ctx)
        +
        Called once by the framework after instantiation, before the first request. + Injects the FlashContext and triggers onInit(). + +

        Infrastructure method — do not call from user code. + Use FlashRegistrar.scan(java.lang.String) instead.

        +
        +
      • +
      • +
        +

        onInit

        +
        protected void onInit()
        +
        Override to cache services at boot time. Called once after bind(dev.relism.flash.extension.FlashContext), + before any request reaches this handler. + +

        Use require(java.lang.Class<T>) and find(java.lang.Class<T>) to retrieve services from the + FlashContext. Cache them in private fields so the hot-path + (handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response)) has zero lookup overhead. + +

        Important: if your class extends another handler base (e.g. + JacksonHandler), call super.onInit() first so the parent + can initialise its own services. + +

        
        + @Override protected void onInit() {
        +     super.onInit();
        +     myService = require(MyService.class);
        + }
        + 
        +
        +
      • +
      • +
        +

        require

        +
        protected <T> T require(Class<T> type)
        +
        Retrieves a required service from the FlashContext. + Throws IllegalStateException if the service is not registered or + this handler has not been bound yet. + +

        Typically called inside onInit() to cache the result.

        +
        +
        Type Parameters:
        +
        T - the service type
        +
        Parameters:
        +
        type - the service class
        +
        Returns:
        +
        the service instance, never null
        +
        +
        +
      • +
      • +
        +

        find

        +
        protected <T> Optional<T> find(Class<T> type)
        +
        Looks up an optional service from the FlashContext.
        +
        +
        Type Parameters:
        +
        T - the service type
        +
        Parameters:
        +
        type - the service class
        +
        Returns:
        +
        the service, or empty if not registered
        +
        +
        +
      • +
      • +
        +

        optional

        +
        protected <T> Optional<T> optional(Class<T> type)
        +
        Looks up an optional service from the FlashContext. + Identical to find(java.lang.Class<T>) — prefer this name for expressive call sites + (optional(MyService.class).ifPresent(...)).
        +
        +
        Type Parameters:
        +
        T - the service type
        +
        Parameters:
        +
        type - the service class
        +
        Returns:
        +
        the service, or empty if not registered
        +
        +
        +
      • +
      • +
        +

        handle

        +
        public abstract Object handle(Request request, + Response response) + throws Exception
        +
        Handles an incoming request. The return value determines the response body: + return a Response to replace the whole response, any other non-null value + to set it as the body, or null to leave the response as-is.
        +
        +
        Throws:
        +
        Exception
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/RequestHelper.html b/latest/dev/relism/flash/models/RequestHelper.html new file mode 100644 index 0000000..bf4b682 --- /dev/null +++ b/latest/dev/relism/flash/models/RequestHelper.html @@ -0,0 +1,256 @@ + + + + +RequestHelper (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RequestHelper

    +
    +
    java.lang.Object +
    dev.relism.flash.models.RequestHelper
    +
    +
    +
    +
    public final class RequestHelper +extends Object
    +
    Typed accessors for request parameters. All methods throw + HttpException (400) on missing or malformed input, so handlers + do not need to write per-field validation boilerplate. + +
    
    + int  page = RequestHelper.queryInt(req, "page", 1, 100);
    + long id   = RequestHelper.paramLong(req, "id");
    + String q  = RequestHelper.queryRequired(req, "q");
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        queryInt

        +
        public static int queryInt(Request req, + String name, + int defaultValue, + int max)
        +
        Returns the query param as an int, or defaultValue if absent. + Caps the result at max. Throws 400 on non-integer input.
        +
        +
      • +
      • +
        +

        queryRequired

        +
        public static String queryRequired(Request req, + String name)
        +
        Returns the query param value. Throws 400 if absent or blank.
        +
        +
      • +
      • +
        +

        queryOptional

        +
        public static String queryOptional(Request req, + String name)
        +
        Returns the query param, or null if absent.
        +
        +
      • +
      • +
        +

        queryLong

        +
        public static long queryLong(Request req, + String name, + long defaultValue)
        +
        Returns the query param as a long, or defaultValue if absent. + Throws 400 on non-long input.
        +
        +
      • +
      • +
        +

        paramLong

        +
        public static long paramLong(Request req, + String name)
        +
        Returns the path parameter as a long. Throws 400 if absent or non-long.
        +
        +
      • +
      • +
        +

        paramInt

        +
        public static int paramInt(Request req, + String name)
        +
        Returns the path parameter as an int. Throws 400 if absent or non-int.
        +
        +
      • +
      • +
        +

        paramRequired

        +
        public static String paramRequired(Request req, + String name)
        +
        Returns the path parameter as a String. Throws 400 if absent.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/RequestLine.html b/latest/dev/relism/flash/models/RequestLine.html new file mode 100644 index 0000000..cedc254 --- /dev/null +++ b/latest/dev/relism/flash/models/RequestLine.html @@ -0,0 +1,150 @@ + + + + +RequestLine (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RequestLine

    +
    +
    java.lang.Object +
    dev.relism.flash.models.RequestLine
    +
    +
    +
    +
    public class RequestLine +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RequestLine

        +
        public RequestLine()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/Response.html b/latest/dev/relism/flash/models/Response.html new file mode 100644 index 0000000..fe230c5 --- /dev/null +++ b/latest/dev/relism/flash/models/Response.html @@ -0,0 +1,411 @@ + + + + +Response (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Response

    +
    +
    java.lang.Object +
    dev.relism.flash.models.Response
    +
    +
    +
    +
    public class Response +extends Object
    +
    HTTP response. All mutating methods return this for fluent chaining. + +
    
    + // fixed body
    + return new Response(200, "ok", ContentType.TEXT_PLAIN);
    +
    + // known-length stream → Content-Length header
    + return new Response(200, ContentType.BINARY).stream(Files.newInputStream(p), Files.size(p));
    +
    + // unknown-length stream → Transfer-Encoding: chunked
    + return new Response(200, ContentType.TEXT_PLAIN).chunked(source);
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        Response

        +
        public Response(int statusCode, + ContentType contentType)
        +
        +
      • +
      • +
        +

        Response

        +
        public Response(int statusCode, + byte[] body, + ContentType contentType)
        +
        +
      • +
      • +
        +

        Response

        +
        public Response(int statusCode, + String text, + ContentType contentType)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        status

        +
        public Response status(int code)
        +
        Sets the status code. The phrase is looked up from HttpStatus on the write path.
        +
        +
      • +
      • +
        +

        status

        +
        public Response status(HttpStatus status)
        +
        Sets the status from an HttpStatus constant. The pre-encoded bytes are used + directly on the write path — zero lookup, zero allocation.
        +
        +
      • +
      • +
        +

        type

        +
        public Response type(ContentType ct)
        +
        +
      • +
      • +
        +

        type

        +
        public Response type(String ct)
        +
        +
      • +
      • +
        +

        body

        +
        public Response body(byte[] bytes)
        +
        +
      • +
      • +
        +

        body

        +
        public Response body(String text)
        +
        +
      • +
      • +
        +

        stream

        +
        public Response stream(InputStream is, + long length)
        +
        Streaming response with known length; written with Content-Length.
        +
        +
      • +
      • +
        +

        chunked

        +
        public Response chunked(InputStream is)
        +
        Streaming response with unknown length; written with Transfer-Encoding: chunked.
        +
        +
      • +
      • +
        +

        redirect

        +
        public Response redirect(String url)
        +
        302 Found redirect. Clears the body, sets status and Location header. + Encoded once at call time; zero-alloc on the write path. + +
        
        + return res.redirect("/login");
        + 
        +
        +
      • +
      • +
        +

        redirect

        +
        public Response redirect(HttpStatus status, + String url)
        +
        Redirect with an explicit 3xx status. Use HttpStatus.MOVED_PERMANENTLY, + HttpStatus.TEMPORARY_REDIRECT (307), or HttpStatus.PERMANENT_REDIRECT (308) + when semantics matter. + +
        
        + return res.redirect(HttpStatus.MOVED_PERMANENTLY, "/new-path");
        + 
        +
        +
      • +
      • +
        +

        header

        +
        public Response header(String name, + String value)
        +
        Adds a response header. Encoded once at call time; zero-alloc on the write path.
        +
        +
      • +
      • +
        +

        header

        +
        public Response header(byte[] preEncoded)
        +
        Adds a pre-encoded header (e.g. a static "X-RateLimit-Limit: 100\r\n" byte array + pre-built at boot time). Zero-alloc on both the call path and the write path.
        +
        +
      • +
      • +
        +

        isStreaming

        +
        public boolean isStreaming()
        +
        +
      • +
      • +
        +

        setBody

        +
        public Response setBody(Object body)
        +
        Sets the body from a handler return value. Accepted types: byte[], + String, CharSequence. Any other non-null type throws + IllegalArgumentException — return a Response directly, or + serialize to String/byte[] before returning.
        +
        +
      • +
      • +
        +

        getHeaders

        +
        public List<byte[]> getHeaders()
        +
        Returns custom headers, or an empty list if none were added.
        +
        +
      • +
      • +
        +

        writeHeaders

        +
        public void writeHeaders(OutputStream out) + throws IOException
        +
        Writes pre-encoded custom headers directly to out. Zero-alloc when no headers are set.
        +
        +
        Throws:
        +
        IOException
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html b/latest/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html new file mode 100644 index 0000000..fd3cbf1 --- /dev/null +++ b/latest/dev/relism/flash/models/SimpleHandler.FunctionalHandler.html @@ -0,0 +1,160 @@ + + + + +SimpleHandler.FunctionalHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface SimpleHandler.FunctionalHandler

    +
    +
    +
    +
    Enclosing class:
    +
    SimpleHandler
    +
    +
    +
    Functional Interface:
    +
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    +
    +
    +
    @FunctionalInterface +public static interface SimpleHandler.FunctionalHandler
    +
    Functional interface for handling requests, used by SimpleHandler.
    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + +
      handle(Request request, + Response response)
      +
       
      +
      +
      +
      +
      +
    • +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/SimpleHandler.html b/latest/dev/relism/flash/models/SimpleHandler.html new file mode 100644 index 0000000..1dde56c --- /dev/null +++ b/latest/dev/relism/flash/models/SimpleHandler.html @@ -0,0 +1,216 @@ + + + + +SimpleHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class SimpleHandler

    +
    +
    java.lang.Object +
    dev.relism.flash.models.RequestHandler +
    dev.relism.flash.models.SimpleHandler
    +
    +
    +
    +
    +
    public class SimpleHandler +extends RequestHandler
    +
    Delegates handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      + +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        handle

        +
        public Object handle(Request request, + Response response) + throws Exception
        +
        Description copied from class: RequestHandler
        +
        Handles an incoming request. The return value determines the response body: + return a Response to replace the whole response, any other non-null value + to set it as the body, or null to leave the response as-is.
        +
        +
        Specified by:
        +
        handle in class RequestHandler
        +
        Throws:
        +
        Exception
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/HeaderMap.html b/latest/dev/relism/flash/models/class-use/HeaderMap.html new file mode 100644 index 0000000..8203b27 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/HeaderMap.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.models.HeaderMap (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.HeaderMap

    +
    +No usage of dev.relism.flash.models.HeaderMap
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/PathParams.html b/latest/dev/relism/flash/models/class-use/PathParams.html new file mode 100644 index 0000000..51187eb --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/PathParams.html @@ -0,0 +1,90 @@ + + + + +Uses of Class dev.relism.flash.models.PathParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.PathParams

    +
    +
    Packages that use PathParams
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/QueryParams.html b/latest/dev/relism/flash/models/class-use/QueryParams.html new file mode 100644 index 0000000..f08be69 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/QueryParams.html @@ -0,0 +1,87 @@ + + + + +Uses of Class dev.relism.flash.models.QueryParams (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.QueryParams

    +
    +
    Packages that use QueryParams
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/Request.html b/latest/dev/relism/flash/models/class-use/Request.html new file mode 100644 index 0000000..bff9c66 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/Request.html @@ -0,0 +1,262 @@ + + + + +Uses of Class dev.relism.flash.models.Request (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.Request

    +
    +
    Packages that use Request
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/RequestBody.html b/latest/dev/relism/flash/models/class-use/RequestBody.html new file mode 100644 index 0000000..e9f4930 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/RequestBody.html @@ -0,0 +1,89 @@ + + + + +Uses of Class dev.relism.flash.models.RequestBody (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.RequestBody

    +
    +
    Packages that use RequestBody
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/RequestHandler.html b/latest/dev/relism/flash/models/class-use/RequestHandler.html new file mode 100644 index 0000000..e2b1b47 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/RequestHandler.html @@ -0,0 +1,208 @@ + + + + +Uses of Class dev.relism.flash.models.RequestHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.RequestHandler

    +
    +
    Packages that use RequestHandler
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/RequestHelper.html b/latest/dev/relism/flash/models/class-use/RequestHelper.html new file mode 100644 index 0000000..2a90422 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/RequestHelper.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.models.RequestHelper (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.RequestHelper

    +
    +No usage of dev.relism.flash.models.RequestHelper
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/RequestLine.html b/latest/dev/relism/flash/models/class-use/RequestLine.html new file mode 100644 index 0000000..a4b36aa --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/RequestLine.html @@ -0,0 +1,105 @@ + + + + +Uses of Class dev.relism.flash.models.RequestLine (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.RequestLine

    +
    +
    Packages that use RequestLine
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/Response.html b/latest/dev/relism/flash/models/class-use/Response.html new file mode 100644 index 0000000..85e8045 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/Response.html @@ -0,0 +1,183 @@ + + + + +Uses of Class dev.relism.flash.models.Response (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.Response

    +
    +
    Packages that use Response
    +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html b/latest/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html new file mode 100644 index 0000000..05cf756 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/SimpleHandler.FunctionalHandler.html @@ -0,0 +1,180 @@ + + + + +Uses of Interface dev.relism.flash.models.SimpleHandler.FunctionalHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.models.SimpleHandler.FunctionalHandler

    +
    + + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/class-use/SimpleHandler.html b/latest/dev/relism/flash/models/class-use/SimpleHandler.html new file mode 100644 index 0000000..6496480 --- /dev/null +++ b/latest/dev/relism/flash/models/class-use/SimpleHandler.html @@ -0,0 +1,96 @@ + + + + +Uses of Class dev.relism.flash.models.SimpleHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.models.SimpleHandler

    +
    +
    Packages that use SimpleHandler
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/package-summary.html b/latest/dev/relism/flash/models/package-summary.html new file mode 100644 index 0000000..85b22c4 --- /dev/null +++ b/latest/dev/relism/flash/models/package-summary.html @@ -0,0 +1,160 @@ + + + + +dev.relism.flash.models (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.models

    +
    +
    +
    package dev.relism.flash.models
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/package-tree.html b/latest/dev/relism/flash/models/package-tree.html new file mode 100644 index 0000000..4d604e4 --- /dev/null +++ b/latest/dev/relism/flash/models/package-tree.html @@ -0,0 +1,94 @@ + + + + +dev.relism.flash.models Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.models

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +

    Interface Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/models/package-use.html b/latest/dev/relism/flash/models/package-use.html new file mode 100644 index 0000000..903dfb3 --- /dev/null +++ b/latest/dev/relism/flash/models/package-use.html @@ -0,0 +1,227 @@ + + + + +Uses of Package dev.relism.flash.models (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.models

    +
    +
    Packages that use dev.relism.flash.models
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/package-summary.html b/latest/dev/relism/flash/package-summary.html new file mode 100644 index 0000000..bf584dc --- /dev/null +++ b/latest/dev/relism/flash/package-summary.html @@ -0,0 +1,138 @@ + + + + +dev.relism.flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash

    +
    +
    +
    package dev.relism.flash
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/package-tree.html b/latest/dev/relism/flash/package-tree.html new file mode 100644 index 0000000..aa2e790 --- /dev/null +++ b/latest/dev/relism/flash/package-tree.html @@ -0,0 +1,87 @@ + + + + +dev.relism.flash Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +

    Interface Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/package-use.html b/latest/dev/relism/flash/package-use.html new file mode 100644 index 0000000..0d49fa2 --- /dev/null +++ b/latest/dev/relism/flash/package-use.html @@ -0,0 +1,92 @@ + + + + +Uses of Package dev.relism.flash (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash

    +
    +
    Packages that use dev.relism.flash
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html b/latest/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html new file mode 100644 index 0000000..392fd6a --- /dev/null +++ b/latest/dev/relism/flash/routing/AbstractRouter.ExceptionHandler.html @@ -0,0 +1,156 @@ + + + + +AbstractRouter.ExceptionHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface AbstractRouter.ExceptionHandler

    +
    +
    +
    +
    Enclosing class:
    +
    AbstractRouter
    +
    +
    +
    Functional Interface:
    +
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    +
    +
    +
    @FunctionalInterface +public static interface AbstractRouter.ExceptionHandler
    +
    +
    +
      + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      + +
      handle(Exception exception, + Request request, + Response response)
      +
       
      +
      +
      +
      +
      +
    • +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/AbstractRouter.html b/latest/dev/relism/flash/routing/AbstractRouter.html new file mode 100644 index 0000000..21c09c0 --- /dev/null +++ b/latest/dev/relism/flash/routing/AbstractRouter.html @@ -0,0 +1,336 @@ + + + + +AbstractRouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class AbstractRouter

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.AbstractRouter
    +
    +
    +
    +
    Direct Known Subclasses:
    +
    FastPathRouterImpl
    +
    +
    +
    public abstract class AbstractRouter +extends Object
    +
    Base router contract. Owns error handlers and the compile-time middleware + wrapping logic. The only concrete implementation is + FastPathRouterImpl. + +

    All middleware composition happens once at boot time; the hot-path sees + only a plain RequestHandler call with zero allocation overhead. + +

    Default error handlers

    +
      +
    • Dev mode (-Dflash.env=dev): rich HTML pages with full stack traces.
    • +
    • Prod mode (default): generic JSON — no internal detail leaked to clients.
    • +
    + Override via FlashApp.onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler) / + FlashApp.onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler). + +

    Registration: use FlashApp — the single + public registration API. doRegister(dev.relism.flash.http.HttpMethod, java.lang.String, dev.relism.flash.models.RequestHandler, dev.relism.flash.routing.Middleware[]) is an infrastructure method.

    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/CONNECT.html b/latest/dev/relism/flash/routing/CONNECT.html new file mode 100644 index 0000000..bd7f541 --- /dev/null +++ b/latest/dev/relism/flash/routing/CONNECT.html @@ -0,0 +1,138 @@ + + + + +CONNECT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface CONNECT

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface CONNECT
    +
    Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/DELETE.html b/latest/dev/relism/flash/routing/DELETE.html new file mode 100644 index 0000000..78aafad --- /dev/null +++ b/latest/dev/relism/flash/routing/DELETE.html @@ -0,0 +1,138 @@ + + + + +DELETE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface DELETE

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface DELETE
    +
    Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/GET.html b/latest/dev/relism/flash/routing/GET.html new file mode 100644 index 0000000..2287aa3 --- /dev/null +++ b/latest/dev/relism/flash/routing/GET.html @@ -0,0 +1,138 @@ + + + + +GET (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface GET

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface GET
    +
    Shorthand for @Route(method = HttpMethod.GET, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/HEAD.html b/latest/dev/relism/flash/routing/HEAD.html new file mode 100644 index 0000000..c665173 --- /dev/null +++ b/latest/dev/relism/flash/routing/HEAD.html @@ -0,0 +1,138 @@ + + + + +HEAD (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface HEAD

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface HEAD
    +
    Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/Middleware.html b/latest/dev/relism/flash/routing/Middleware.html new file mode 100644 index 0000000..60e6418 --- /dev/null +++ b/latest/dev/relism/flash/routing/Middleware.html @@ -0,0 +1,204 @@ + + + + +Middleware (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Interface Middleware

    +
    +
    +
    +
    Functional Interface:
    +
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
    +
    +
    +
    @FunctionalInterface +public interface Middleware
    +
    Stateless interceptor applied around a RequestHandler. + +

    Middleware is composed once at registration time and stored as a pre-built handler + chain inside the router's state machine. There is zero runtime overhead: no lists are visited, + no lookups performed, and no objects allocated on the request hot-path. + +

    Middleware is intentionally stateless — it can read Request, + write to Response, and decide whether to call next or + short-circuit. Shared state between layers belongs in HDI handler chains, not here. + +

    
    + // Inline definition — pure lambda, no wrapper types needed
    + Middleware auth = next -> (req, res) -> {
    +     if (req.header("Authorization") == null) { res.status(401); return null; }
    +     return next.handle(req, res);
    + };
    +
    + // Named reusable chain — composed into a single object at call time
    + Middleware secured = Middleware.of(cors, auth, rateLimit);
    +
    + // Router-level: applied to every handler registered on this router
    + AbstractRouter api = new MyRouter(cors, auth);
    +
    + // Handler-level: applied only to this route
    + app.get("/admin", (req, res) -> "secret", auth);
    + app.get("/log",   handler, logging, auth);
    + 
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        wrap

        + +
        Wraps next with this middleware's logic. Called once at boot time + during handler registration. Returns a SimpleHandler.FunctionalHandler lambda + — no wrapper types required at the call site. + +

        The returned functional handler is boxed into a SimpleHandler internally by + AbstractRouter; callers never need to do this manually.

        +
        +
      • +
      • +
        +

        of

        +
        static Middleware of(Middleware... chain)
        +
        Composes an ordered chain of middlewares into a single Middleware. + The first element is the outermost wrapper and therefore executes first. + +

        The composition loop runs once when wrap(dev.relism.flash.models.RequestHandler) is called (i.e. at registration + time), not at construction of the chain. Zero allocations on the hot-path. + +

        
        + Middleware secured = Middleware.of(cors, auth, rateLimit);
        + // execution order: cors → auth → rateLimit → handler
        + 
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/OPTIONS.html b/latest/dev/relism/flash/routing/OPTIONS.html new file mode 100644 index 0000000..f1776a5 --- /dev/null +++ b/latest/dev/relism/flash/routing/OPTIONS.html @@ -0,0 +1,138 @@ + + + + +OPTIONS (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface OPTIONS

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface OPTIONS
    +
    Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/PATCH.html b/latest/dev/relism/flash/routing/PATCH.html new file mode 100644 index 0000000..670dcc7 --- /dev/null +++ b/latest/dev/relism/flash/routing/PATCH.html @@ -0,0 +1,138 @@ + + + + +PATCH (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface PATCH

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface PATCH
    +
    Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/POST.html b/latest/dev/relism/flash/routing/POST.html new file mode 100644 index 0000000..f8fa343 --- /dev/null +++ b/latest/dev/relism/flash/routing/POST.html @@ -0,0 +1,138 @@ + + + + +POST (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface POST

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface POST
    +
    Shorthand for @Route(method = HttpMethod.POST, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/PURGE.html b/latest/dev/relism/flash/routing/PURGE.html new file mode 100644 index 0000000..2331b91 --- /dev/null +++ b/latest/dev/relism/flash/routing/PURGE.html @@ -0,0 +1,138 @@ + + + + +PURGE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface PURGE

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface PURGE
    +
    Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/PUT.html b/latest/dev/relism/flash/routing/PUT.html new file mode 100644 index 0000000..5fe04d2 --- /dev/null +++ b/latest/dev/relism/flash/routing/PUT.html @@ -0,0 +1,138 @@ + + + + +PUT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface PUT

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface PUT
    +
    Shorthand for @Route(method = HttpMethod.PUT, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/PathUtils.html b/latest/dev/relism/flash/routing/PathUtils.html new file mode 100644 index 0000000..ecabf25 --- /dev/null +++ b/latest/dev/relism/flash/routing/PathUtils.html @@ -0,0 +1,196 @@ + + + + +PathUtils (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class PathUtils

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.PathUtils
    +
    +
    +
    +
    public class PathUtils +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        PathUtils

        +
        public PathUtils()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        sanitize

        +
        public static String sanitize(String path)
        +
        Sanitizes a path segment to ensure it starts with '/' and has no trailing slash. + Replaces multiple slashes with a single one.
        +
        +
      • +
      • +
        +

        join

        +
        public static String join(String base, + String path)
        +
        Joins two path segments and ensures the result is sanitized. + Prevents "double namespace" if the path already starts with the base.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/Route.html b/latest/dev/relism/flash/routing/Route.html new file mode 100644 index 0000000..838968a --- /dev/null +++ b/latest/dev/relism/flash/routing/Route.html @@ -0,0 +1,169 @@ + + + + +Route (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface Route

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target({TYPE,ANNOTATION_TYPE}) +public @interface Route
    +
    HTTP method and path for a class-based RequestHandler. + Path is relative to the mount namespace (e.g. path = "/profile" under /api + → /api/profile). + +

    Prefer shorthand (@GET("/x"), @POST("/x"), …); they are meta-annotated + with @Route and resolve to the same metadata as an explicit @Route(method=…, path=…) + via Routes.of(Class).

    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • + +
    • +
      +

      Optional Element Summary

      +
      Optional Elements
      +
      +
      Modifier and Type
      +
      Optional Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        method

        +
        HttpMethod method
        +
        +
        Default:
        +
        GET
        +
        +
        +
      • +
      • +
        +

        path

        +
        String path
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/Routes.html b/latest/dev/relism/flash/routing/Routes.html new file mode 100644 index 0000000..34a30c7 --- /dev/null +++ b/latest/dev/relism/flash/routing/Routes.html @@ -0,0 +1,156 @@ + + + + +Routes (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class Routes

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.Routes
    +
    +
    +
    +
    public final class Routes +extends Object
    +
    Boot-time resolution of Route from a handler class (direct @Route or shorthand).
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        of

        +
        public static Route of(Class<?> cls)
        +
        Effective route for cls, or null. Prefers @Route on the class; + otherwise the first annotation type meta-annotated with @Route (e.g. @GET). + If several routing annotations are present, behaviour is undefined — use one.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/TRACE.html b/latest/dev/relism/flash/routing/TRACE.html new file mode 100644 index 0000000..88639e6 --- /dev/null +++ b/latest/dev/relism/flash/routing/TRACE.html @@ -0,0 +1,138 @@ + + + + +TRACE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Annotation Interface TRACE

    +
    +
    +
    +
    @Retention(RUNTIME) +@Target(TYPE) +public @interface TRACE
    +
    Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
    +
    +
    +
      + +
    • +
      +

      Required Element Summary

      +
      Required Elements
      +
      +
      Modifier and Type
      +
      Required Element
      +
      Description
      + + +
       
      +
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Element Details

      +
        +
      • +
        +

        value

        +
        String value
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html b/latest/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html new file mode 100644 index 0000000..fbf4d73 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/AbstractRouter.ExceptionHandler.html @@ -0,0 +1,121 @@ + + + + +Uses of Interface dev.relism.flash.routing.AbstractRouter.ExceptionHandler (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.routing.AbstractRouter.ExceptionHandler

    +
    + +
    +
    Package
    +
    Description
    + +
     
    + +
     
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/AbstractRouter.html b/latest/dev/relism/flash/routing/class-use/AbstractRouter.html new file mode 100644 index 0000000..39c61e5 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/AbstractRouter.html @@ -0,0 +1,143 @@ + + + + +Uses of Class dev.relism.flash.routing.AbstractRouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.AbstractRouter

    +
    +
    Packages that use AbstractRouter
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/CONNECT.html b/latest/dev/relism/flash/routing/class-use/CONNECT.html new file mode 100644 index 0000000..fbd037f --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/CONNECT.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.CONNECT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.CONNECT

    +
    +No usage of dev.relism.flash.routing.CONNECT
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/DELETE.html b/latest/dev/relism/flash/routing/class-use/DELETE.html new file mode 100644 index 0000000..5879e07 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/DELETE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.DELETE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.DELETE

    +
    +No usage of dev.relism.flash.routing.DELETE
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/GET.html b/latest/dev/relism/flash/routing/class-use/GET.html new file mode 100644 index 0000000..7208739 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/GET.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.GET (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.GET

    +
    +No usage of dev.relism.flash.routing.GET
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/HEAD.html b/latest/dev/relism/flash/routing/class-use/HEAD.html new file mode 100644 index 0000000..18a4c96 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/HEAD.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.HEAD (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.HEAD

    +
    +No usage of dev.relism.flash.routing.HEAD
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/Middleware.html b/latest/dev/relism/flash/routing/class-use/Middleware.html new file mode 100644 index 0000000..e6b035c --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/Middleware.html @@ -0,0 +1,265 @@ + + + + +Uses of Interface dev.relism.flash.routing.Middleware (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Interface
    dev.relism.flash.routing.Middleware

    +
    +
    Packages that use Middleware
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/OPTIONS.html b/latest/dev/relism/flash/routing/class-use/OPTIONS.html new file mode 100644 index 0000000..d5e4dea --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/OPTIONS.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.OPTIONS (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.OPTIONS

    +
    +No usage of dev.relism.flash.routing.OPTIONS
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/PATCH.html b/latest/dev/relism/flash/routing/class-use/PATCH.html new file mode 100644 index 0000000..133f61d --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/PATCH.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PATCH (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.PATCH

    +
    +No usage of dev.relism.flash.routing.PATCH
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/POST.html b/latest/dev/relism/flash/routing/class-use/POST.html new file mode 100644 index 0000000..8700d56 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/POST.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.POST (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.POST

    +
    +No usage of dev.relism.flash.routing.POST
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/PURGE.html b/latest/dev/relism/flash/routing/class-use/PURGE.html new file mode 100644 index 0000000..6a8ee42 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/PURGE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PURGE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.PURGE

    +
    +No usage of dev.relism.flash.routing.PURGE
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/PUT.html b/latest/dev/relism/flash/routing/class-use/PUT.html new file mode 100644 index 0000000..d517438 --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/PUT.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.PUT (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.PUT

    +
    +No usage of dev.relism.flash.routing.PUT
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/PathUtils.html b/latest/dev/relism/flash/routing/class-use/PathUtils.html new file mode 100644 index 0000000..8bd57ca --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/PathUtils.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.PathUtils (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.PathUtils

    +
    +No usage of dev.relism.flash.routing.PathUtils
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/Route.html b/latest/dev/relism/flash/routing/class-use/Route.html new file mode 100644 index 0000000..e75da9a --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/Route.html @@ -0,0 +1,145 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.Route (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.Route

    +
    +
    Packages that use Route
    +
    +
    Package
    +
    Description
    + +
     
    +
    +
    +
      +
    • +
      +

      Uses of Route in dev.relism.flash.routing

      +
      Classes in dev.relism.flash.routing with annotations of type Route
      +
      +
      Modifier and Type
      +
      Class
      +
      Description
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.GET, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.POST, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.PUT, path = "…").
      +
      +
      @interface 
      + +
      +
      Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
      +
      +
      +
      Methods in dev.relism.flash.routing that return Route
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      static Route
      +
      Routes.of(Class<?> cls)
      +
      +
      Effective route for cls, or null.
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/Routes.html b/latest/dev/relism/flash/routing/class-use/Routes.html new file mode 100644 index 0000000..ce8993d --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/Routes.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.Routes (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.Routes

    +
    +No usage of dev.relism.flash.routing.Routes
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/class-use/TRACE.html b/latest/dev/relism/flash/routing/class-use/TRACE.html new file mode 100644 index 0000000..f92825d --- /dev/null +++ b/latest/dev/relism/flash/routing/class-use/TRACE.html @@ -0,0 +1,62 @@ + + + + +Uses of Annotation Interface dev.relism.flash.routing.TRACE (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Annotation Interface
    dev.relism.flash.routing.TRACE

    +
    +No usage of dev.relism.flash.routing.TRACE
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/package-summary.html b/latest/dev/relism/flash/routing/package-summary.html new file mode 100644 index 0000000..7633537 --- /dev/null +++ b/latest/dev/relism/flash/routing/package-summary.html @@ -0,0 +1,177 @@ + + + + +dev.relism.flash.routing (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.routing

    +
    +
    +
    package dev.relism.flash.routing
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/package-tree.html b/latest/dev/relism/flash/routing/package-tree.html new file mode 100644 index 0000000..ed44fe0 --- /dev/null +++ b/latest/dev/relism/flash/routing/package-tree.html @@ -0,0 +1,101 @@ + + + + +dev.relism.flash.routing Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.routing

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +

    Interface Hierarchy

    + +
    +
    +

    Annotation Interface Hierarchy

    +
      +
    • dev.relism.flash.routing.CONNECT (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.DELETE (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.GET (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.HEAD (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.OPTIONS (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PATCH (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.POST (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PURGE (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PUT (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.Route (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.TRACE (implements java.lang.annotation.Annotation)
    • +
    +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/package-use.html b/latest/dev/relism/flash/routing/package-use.html new file mode 100644 index 0000000..10acf36 --- /dev/null +++ b/latest/dev/relism/flash/routing/package-use.html @@ -0,0 +1,147 @@ + + + + +Uses of Package dev.relism.flash.routing (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.routing

    +
    +
    Packages that use dev.relism.flash.routing
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html new file mode 100644 index 0000000..ba28a9b --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathRouterImpl.html @@ -0,0 +1,225 @@ + + + + +FastPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathRouterImpl

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.AbstractRouter +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
    +
    +
    +
    +
    +
    public class FastPathRouterImpl +extends AbstractRouter
    +
    Router backed by the fpr-core byte-level state machine. Routes are compiled lazily + on the first request and recompiled when routes are added after startup. Matching runs on a + virtual METHOD + path byte sequence in a single pass; MatchResult and + FastPathViews.MethodPathByteView are reused per-thread to avoid hot-path allocations.
    +
    +
    + +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html new file mode 100644 index 0000000..a0dec9a --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.MethodPathByteView.html @@ -0,0 +1,218 @@ + + + + +FastPathViews.MethodPathByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathViews.MethodPathByteView

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    dev.relism.fpr.core.ByteView
    +
    +
    +
    Enclosing class:
    +
    FastPathViews
    +
    +
    +
    public static final class FastPathViews.MethodPathByteView +extends Object +implements dev.relism.fpr.core.ByteView
    +
    Mutable composite view: method bytes + path. Reused via ThreadLocal, call reset() before use.
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      byte
      +
      byteAt(int index)
      +
       
      +
      int
      + +
       
      +
      void
      +
      reset(byte[] method, + dev.relism.fpr.core.ByteView path)
      +
       
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +

      Methods inherited from interface dev.relism.fpr.core.ByteView

      +longAt, supportsLong
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        MethodPathByteView

        +
        public MethodPathByteView()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        reset

        +
        public void reset(byte[] method, + dev.relism.fpr.core.ByteView path)
        +
        +
      • +
      • +
        +

        length

        +
        public int length()
        +
        +
        Specified by:
        +
        length in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      • +
        +

        byteAt

        +
        public byte byteAt(int index)
        +
        +
        Specified by:
        +
        byteAt in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html new file mode 100644 index 0000000..7973c2d --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.RequestByteView.html @@ -0,0 +1,223 @@ + + + + +FastPathViews.RequestByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathViews.RequestByteView

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    dev.relism.fpr.core.ByteView
    +
    +
    +
    Enclosing class:
    +
    FastPathViews
    +
    +
    +
    public static final class FastPathViews.RequestByteView +extends Object +implements dev.relism.fpr.core.ByteView
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      RequestByteView(byte[] buffer, + int start, + int length)
      +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      byte
      +
      byteAt(int index)
      +
       
      +
      int
      + +
       
      + + +
       
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      +
      +

      Methods inherited from interface dev.relism.fpr.core.ByteView

      +longAt, supportsLong
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RequestByteView

        +
        public RequestByteView(byte[] buffer, + int start, + int length)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        length

        +
        public int length()
        +
        +
        Specified by:
        +
        length in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      • +
        +

        byteAt

        +
        public byte byteAt(int index)
        +
        +
        Specified by:
        +
        byteAt in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      • +
        +

        toString

        +
        public String toString()
        +
        +
        Overrides:
        +
        toString in class Object
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html new file mode 100644 index 0000000..87cbc9c --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.SocketByteView.html @@ -0,0 +1,206 @@ + + + + +FastPathViews.SocketByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathViews.SocketByteView

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    dev.relism.fpr.core.ByteView
    +
    +
    +
    Enclosing class:
    +
    FastPathViews
    +
    +
    +
    public static class FastPathViews.SocketByteView +extends Object +implements dev.relism.fpr.core.ByteView
    +
    +
    +
      + +
    • +
      +

      Constructor Summary

      +
      Constructors
      +
      +
      Constructor
      +
      Description
      +
      SocketByteView(byte[] data)
      +
       
      +
      +
      +
    • + +
    • +
      +

      Method Summary

      +
      +
      +
      +
      +
      Modifier and Type
      +
      Method
      +
      Description
      +
      byte
      +
      byteAt(int index)
      +
       
      +
      int
      + +
       
      +
      +
      +
      +
      +

      Methods inherited from class java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +

      Methods inherited from interface dev.relism.fpr.core.ByteView

      +longAt, supportsLong
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        SocketByteView

        +
        public SocketByteView(byte[] data)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        length

        +
        public int length()
        +
        +
        Specified by:
        +
        length in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      • +
        +

        byteAt

        +
        public byte byteAt(int index)
        +
        +
        Specified by:
        +
        byteAt in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html new file mode 100644 index 0000000..3ae968b --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.StringByteView.html @@ -0,0 +1,206 @@ + + + + +FastPathViews.StringByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathViews.StringByteView

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
    +
    +
    +
    +
    All Implemented Interfaces:
    +
    dev.relism.fpr.core.ByteView
    +
    +
    +
    Enclosing class:
    +
    FastPathViews
    +
    +
    +
    public static class FastPathViews.StringByteView +extends Object +implements dev.relism.fpr.core.ByteView
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        StringByteView

        +
        public StringByteView(String str)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        length

        +
        public int length()
        +
        +
        Specified by:
        +
        length in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      • +
        +

        byteAt

        +
        public byte byteAt(int index)
        +
        +
        Specified by:
        +
        byteAt in interface dev.relism.fpr.core.ByteView
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html new file mode 100644 index 0000000..352455b --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/FastPathViews.html @@ -0,0 +1,177 @@ + + + + +FastPathViews (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class FastPathViews

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
    +
    +
    +
    +
    public final class FastPathViews +extends Object
    +
    ByteView implementations used on the router and parser hot paths.
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        FastPathViews

        +
        public FastPathViews()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html new file mode 100644 index 0000000..86cd576 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathRouterImpl.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html new file mode 100644 index 0000000..8908883 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.MethodPathByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html new file mode 100644 index 0000000..4ea0ac5 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.RequestByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html new file mode 100644 index 0000000..4f7e8fd --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.SocketByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html new file mode 100644 index 0000000..1b8c2e0 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.StringByteView.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html new file mode 100644 index 0000000..1fcf1a9 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/class-use/FastPathViews.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.fastpathrouter.FastPathViews

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html new file mode 100644 index 0000000..3515938 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-summary.html @@ -0,0 +1,112 @@ + + + + +dev.relism.flash.routing.routers.fastpathrouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.routing.routers.fastpathrouter

    +
    +
    +
    package dev.relism.flash.routing.routers.fastpathrouter
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html new file mode 100644 index 0000000..347bdc8 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-tree.html @@ -0,0 +1,85 @@ + + + + +dev.relism.flash.routing.routers.fastpathrouter Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.routing.routers.fastpathrouter

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/fastpathrouter/package-use.html b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-use.html new file mode 100644 index 0000000..14d1bef --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/fastpathrouter/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.routing.routers.fastpathrouter (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.routing.routers.fastpathrouter

    +
    +No usage of dev.relism.flash.routing.routers.fastpathrouter
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html b/latest/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html new file mode 100644 index 0000000..ea77368 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/radix/RadixPathRouterImpl.html @@ -0,0 +1,150 @@ + + + + +RadixPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class RadixPathRouterImpl

    +
    +
    java.lang.Object +
    dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
    +
    +
    +
    +
    public class RadixPathRouterImpl +extends Object
    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        RadixPathRouterImpl

        +
        public RadixPathRouterImpl()
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html b/latest/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html new file mode 100644 index 0000000..689e447 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/radix/class-use/RadixPathRouterImpl.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.routing.routers.radix.RadixPathRouterImpl (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.routing.routers.radix.RadixPathRouterImpl

    +
    +No usage of dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/radix/package-summary.html b/latest/dev/relism/flash/routing/routers/radix/package-summary.html new file mode 100644 index 0000000..b5a0cdb --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/radix/package-summary.html @@ -0,0 +1,96 @@ + + + + +dev.relism.flash.routing.routers.radix (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.routing.routers.radix

    +
    +
    +
    package dev.relism.flash.routing.routers.radix
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/radix/package-tree.html b/latest/dev/relism/flash/routing/routers/radix/package-tree.html new file mode 100644 index 0000000..522dce2 --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/radix/package-tree.html @@ -0,0 +1,76 @@ + + + + +dev.relism.flash.routing.routers.radix Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.routing.routers.radix

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/routing/routers/radix/package-use.html b/latest/dev/relism/flash/routing/routers/radix/package-use.html new file mode 100644 index 0000000..b1c266f --- /dev/null +++ b/latest/dev/relism/flash/routing/routers/radix/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.routing.routers.radix (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.routing.routers.radix

    +
    +No usage of dev.relism.flash.routing.routers.radix
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/ByteTemplate.html b/latest/dev/relism/flash/template/ByteTemplate.html new file mode 100644 index 0000000..4e696cf --- /dev/null +++ b/latest/dev/relism/flash/template/ByteTemplate.html @@ -0,0 +1,188 @@ + + + + +ByteTemplate (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class ByteTemplate

    +
    +
    java.lang.Object +
    dev.relism.flash.template.ByteTemplate
    +
    +
    +
    +
    public final class ByteTemplate +extends Object
    +
    Precompiled, allocation-minimal byte template. +

    + Placeholders of the form {{name}} are detected once at construction. + Each render(java.lang.String...) call makes exactly one allocation: the output byte[]. +

    + Layout: seg[0] slot[0] seg[1] slot[1] … seg[n-1] slot[n-1] seg[n]

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ByteTemplate

        +
        public ByteTemplate(String source)
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        render

        +
        public byte[] render(String... kvPairs)
        +
        Render with alternating key-value String pairs: k1, v1, k2, v2, … + Unmatched slots are rendered as empty.
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/ErrorPages.html b/latest/dev/relism/flash/template/ErrorPages.html new file mode 100644 index 0000000..243c369 --- /dev/null +++ b/latest/dev/relism/flash/template/ErrorPages.html @@ -0,0 +1,193 @@ + + + + +ErrorPages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Class ErrorPages

    +
    +
    java.lang.Object +
    dev.relism.flash.template.ErrorPages
    +
    +
    +
    +
    public final class ErrorPages +extends Object
    +
    Precompiled error page templates. +

    + Static placeholders (logo_img, version) are baked in once at + class init. Dynamic placeholders (method, path, exception …) are filled per + call with a single allocation via ByteTemplate.render(java.lang.String...).

    +
    +
    + +
    +
    +
      + +
    • +
      +

      Constructor Details

      +
        +
      • +
        +

        ErrorPages

        +
        public ErrorPages()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Method Details

      +
        +
      • +
        +

        renderNotFound

        +
        public static byte[] renderNotFound(Request request)
        +
        +
      • +
      • +
        +

        renderException

        +
        public static byte[] renderException(Request request, + Exception ex)
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/class-use/ByteTemplate.html b/latest/dev/relism/flash/template/class-use/ByteTemplate.html new file mode 100644 index 0000000..dd60044 --- /dev/null +++ b/latest/dev/relism/flash/template/class-use/ByteTemplate.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.template.ByteTemplate (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.template.ByteTemplate

    +
    +No usage of dev.relism.flash.template.ByteTemplate
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/class-use/ErrorPages.html b/latest/dev/relism/flash/template/class-use/ErrorPages.html new file mode 100644 index 0000000..f6a96e6 --- /dev/null +++ b/latest/dev/relism/flash/template/class-use/ErrorPages.html @@ -0,0 +1,62 @@ + + + + +Uses of Class dev.relism.flash.template.ErrorPages (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Class
    dev.relism.flash.template.ErrorPages

    +
    +No usage of dev.relism.flash.template.ErrorPages
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/package-summary.html b/latest/dev/relism/flash/template/package-summary.html new file mode 100644 index 0000000..c9ae560 --- /dev/null +++ b/latest/dev/relism/flash/template/package-summary.html @@ -0,0 +1,123 @@ + + + + +dev.relism.flash.template (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package dev.relism.flash.template

    +
    +
    +
    package dev.relism.flash.template
    +
    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/package-tree.html b/latest/dev/relism/flash/template/package-tree.html new file mode 100644 index 0000000..fc124d2 --- /dev/null +++ b/latest/dev/relism/flash/template/package-tree.html @@ -0,0 +1,77 @@ + + + + +dev.relism.flash.template Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For Package dev.relism.flash.template

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/dev/relism/flash/template/package-use.html b/latest/dev/relism/flash/template/package-use.html new file mode 100644 index 0000000..e4b498d --- /dev/null +++ b/latest/dev/relism/flash/template/package-use.html @@ -0,0 +1,62 @@ + + + + +Uses of Package dev.relism.flash.template (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Uses of Package
    dev.relism.flash.template

    +
    +No usage of dev.relism.flash.template
    +
    +
    + +
    +
    +
    + + diff --git a/latest/element-list b/latest/element-list new file mode 100644 index 0000000..658a1f0 --- /dev/null +++ b/latest/element-list @@ -0,0 +1,10 @@ +dev.relism.flash +dev.relism.flash.api.multipart +dev.relism.flash.exceptions +dev.relism.flash.extension +dev.relism.flash.http +dev.relism.flash.models +dev.relism.flash.routing +dev.relism.flash.routing.routers.fastpathrouter +dev.relism.flash.routing.routers.radix +dev.relism.flash.template diff --git a/latest/help-doc.html b/latest/help-doc.html new file mode 100644 index 0000000..cc0d38a --- /dev/null +++ b/latest/help-doc.html @@ -0,0 +1,203 @@ + + + + +API Help (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +

    JavaDoc Help

    + +
    +
    +

    Navigation

    +Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
    +
    +
    +

    Kinds of Pages

    +The following sections describe the different kinds of pages in this collection. +
    +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
    +
    +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

    +
      +
    • Interfaces
    • +
    • Classes
    • +
    • Enum Classes
    • +
    • Exception Classes
    • +
    • Annotation Interfaces
    • +
    +
    +
    +

    Class or Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

    +
      +
    • Class Inheritance Diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class or Interface Declaration
    • +
    • Class or Interface Description
    • +
    +
    +
      +
    • Nested Class Summary
    • +
    • Enum Constant Summary
    • +
    • Field Summary
    • +
    • Property Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    +
    +
      +
    • Enum Constant Details
    • +
    • Field Details
    • +
    • Property Details
    • +
    • Constructor Details
    • +
    • Method Details
    • +
    • Element Details
    • +
    +

    Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

    +

    The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
    +
    +

    Other Files

    +

    Packages and modules may contain pages with additional information related to the declarations nearby.

    +
    +
    +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

    +
    +
    +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
    • +
    +
    +
    +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
    +
    +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

    +
    +
    +

    All Packages

    +

    The All Packages page contains an alphabetic index of all packages contained in the documentation.

    +
    +
    +

    All Classes and Interfaces

    +

    The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

    +
    +
    +

    Index

    +

    The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

    +
    +
    +
    +This help file applies to API documentation generated by the standard doclet.
    +
    +
    + +
    +
    +
    + + diff --git a/latest/index-all.html b/latest/index-all.html new file mode 100644 index 0000000..aba0af6 --- /dev/null +++ b/latest/index-all.html @@ -0,0 +1,1296 @@ + + + + +Index (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Index

    +
    +A B C D E F G H I J L M N O P Q R S T U V W X Z 
    All Classes and Interfaces|All Packages|Constant Field Values|Serialized Form +

    A

    +
    +
    AbstractRouter - Class in dev.relism.flash.routing
    +
    +
    Base router contract.
    +
    +
    AbstractRouter() - Constructor for class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    AbstractRouter.ExceptionHandler - Interface in dev.relism.flash.routing
    +
     
    +
    ACCEPTED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    addAnnotationProcessor(AnnotationProcessor) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Registers an AnnotationProcessor.
    +
    +
    addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
    +
    Registers a middleware in this registrar's own scope (global or scope-level).
    +
    +
    addMiddleware(Middleware) - Method in class dev.relism.flash.extension.FlashScope
    +
     
    +
    addRoute(HttpMethod, String, RequestHandler) - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    addRoute(HttpMethod, String, RequestHandler) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
    +
     
    +
    addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
    +
    Adds a route immediately to this registrar's deferred compilation list.
    +
    +
    addRoute(HttpMethod, String, RequestHandler, List<Middleware>) - Method in class dev.relism.flash.extension.FlashScope
    +
     
    +
    addRouteListener(RouteListener) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Registers a boot-time RouteListener.
    +
    +
    all() - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Returns all header values in declaration order.
    +
    +
    all(String) - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Returns all values of header name in declaration order, or an empty list.
    +
    +
    AnnotationProcessor - Interface in dev.relism.flash.extension
    +
    +
    Inspects a handler class at registration time and returns zero or more + middlewares to inject automatically.
    +
    +
    AUDIO_MPEG - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    AUDIO_OGG - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +

    B

    +
    +
    BAD_GATEWAY - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    BAD_REQUEST - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    badRequest(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    BINARY - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    bind(FlashContext) - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Called once by the framework after instantiation, before the first request.
    +
    +
    body() - Method in class dev.relism.flash.models.Request
    +
    +
    Returns the request body accessor.
    +
    +
    body(byte[]) - Method in class dev.relism.flash.models.Response
    +
     
    +
    body(String) - Method in class dev.relism.flash.models.Response
    +
     
    +
    byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
     
    +
    byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
     
    +
    byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
    +
     
    +
    byteAt(int) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
    +
     
    +
    bytes() - Method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Pre-encoded "200 OK" bytes — zero allocation on the write path.
    +
    +
    bytes() - Method in class dev.relism.flash.models.RequestBody
    +
    +
    Materialises and caches the full body.
    +
    +
    bytesForCode(int) - Static method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Returns pre-compiled status bytes for the given code.
    +
    +
    ByteTemplate - Class in dev.relism.flash.template
    +
    +
    Precompiled, allocation-minimal byte template.
    +
    +
    ByteTemplate(String) - Constructor for class dev.relism.flash.template.ByteTemplate
    +
     
    +
    +

    C

    +
    +
    CBOR - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    child() - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Creates a child context that inherits this context's services and processors.
    +
    +
    chunked(InputStream) - Method in class dev.relism.flash.models.Response
    +
    +
    Streaming response with unknown length; written with Transfer-Encoding: chunked.
    +
    +
    code() - Method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Numeric status code (e.g.
    +
    +
    commons - Static variable in class dev.relism.flash.Flash
    +
     
    +
    Commons() - Constructor for class dev.relism.flash.Flash.Commons
    +
     
    +
    conflict(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    CONFLICT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    connect(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    CONNECT - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    CONNECT - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.CONNECT, path = "…").
    +
    +
    contentLength() - Method in class dev.relism.flash.models.RequestBody
    +
    +
    Declared body size in bytes.
    +
    +
    contentType() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Content-Type declared in the part headers, or null if absent.
    +
    +
    ContentType - Enum Class in dev.relism.flash.http
    +
    +
    Pre-compiled byte representations of common HTTP Content-Type values.
    +
    +
    CONTINUE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    cors() - Method in class dev.relism.flash.Flash.Middlewares
    +
     
    +
    cors(Flash.Middlewares.CorsConfig) - Method in class dev.relism.flash.Flash.Middlewares
    +
     
    +
    cors(Consumer<Flash.Middlewares.CorsConfig>) - Method in class dev.relism.flash.Flash.Middlewares
    +
     
    +
    CorsConfig() - Constructor for class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    create(int) - Static method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    create(FlashConfiguration) - Static method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    create(FlashConfiguration, AbstractRouter) - Static method in interface dev.relism.flash.ServerHandle
    +
     
    +
    CREATED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    credentials() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    credentials(boolean) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    ctx() - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    ctx() - Method in class dev.relism.flash.extension.FlashRegistrar
    +
    +
    Returns the FlashContext for this registrar.
    +
    +
    ctx() - Method in class dev.relism.flash.extension.FlashScope
    +
     
    +
    +

    D

    +
    +
    DEFAULT - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    Normal application extensions.
    +
    +
    Default error handlers - Search tag in class dev.relism.flash.extension.FlashApp
    +
    Section
    +
    Default error handlers - Search tag in class dev.relism.flash.routing.AbstractRouter
    +
    Section
    +
    delete(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    DELETE - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    DELETE - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.DELETE, path = "…").
    +
    +
    DEV - Static variable in class dev.relism.flash.Flash
    +
     
    +
    dev.relism.flash - package dev.relism.flash
    +
     
    +
    dev.relism.flash.api.multipart - package dev.relism.flash.api.multipart
    +
     
    +
    dev.relism.flash.exceptions - package dev.relism.flash.exceptions
    +
     
    +
    dev.relism.flash.extension - package dev.relism.flash.extension
    +
     
    +
    dev.relism.flash.http - package dev.relism.flash.http
    +
     
    +
    dev.relism.flash.models - package dev.relism.flash.models
    +
     
    +
    dev.relism.flash.routing - package dev.relism.flash.routing
    +
     
    +
    dev.relism.flash.routing.routers.fastpathrouter - package dev.relism.flash.routing.routers.fastpathrouter
    +
     
    +
    dev.relism.flash.routing.routers.radix - package dev.relism.flash.routing.routers.radix
    +
     
    +
    dev.relism.flash.template - package dev.relism.flash.template
    +
     
    +
    Dev mode - Search tag in class dev.relism.flash.Flash
    +
    Section
    +
    doRegister(HttpMethod, String, RequestHandler, Middleware[]) - Method in class dev.relism.flash.routing.AbstractRouter
    +
    +
    Registers a handler with a pre-built middleware array.
    +
    +
    drain() - Method in class dev.relism.flash.models.Request
    +
    +
    Discards unread body bytes; called by the server after each request on keep-alive connections.
    +
    +
    +

    E

    +
    +
    Eager vs lazy registration - Search tag in class dev.relism.flash.extension.FlashContext
    +
    Section
    +
    EARLY - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    Security guards, rate limiting — must short-circuit before expensive processing.
    +
    +
    EMPTY - Static variable in class dev.relism.flash.models.QueryParams
    +
     
    +
    equals(Object) - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    ErrorPages - Class in dev.relism.flash.template
    +
    +
    Precompiled error page templates.
    +
    +
    ErrorPages() - Constructor for class dev.relism.flash.template.ErrorPages
    +
     
    +
    Example - Search tag in interface dev.relism.flash.extension.FlashExtension
    +
    Section
    +
    exceptionHandler - Variable in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    ExtensionPhase - Enum Class in dev.relism.flash.extension
    +
    +
    Semantic execution phases for FlashExtension.priority().
    +
    +
    +

    F

    +
    +
    FastPathRouterImpl - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
    +
    Router backed by the fpr-core byte-level state machine.
    +
    +
    FastPathRouterImpl() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
    +
     
    +
    FastPathViews - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
    +
    ByteView implementations used on the router and parser hot paths.
    +
    +
    FastPathViews() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews
    +
     
    +
    FastPathViews.MethodPathByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
    +
    Mutable composite view: method bytes + path.
    +
    +
    FastPathViews.RequestByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
     
    +
    FastPathViews.SocketByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
     
    +
    FastPathViews.StringByteView - Class in dev.relism.flash.routing.routers.fastpathrouter
    +
     
    +
    field(String) - Method in class dev.relism.flash.api.multipart.Multipart
    +
    +
    Returns the text value of the first field named name, or null.
    +
    +
    file(String) - Method in class dev.relism.flash.api.multipart.Multipart
    +
    +
    Returns the first file part named name, or null.
    +
    +
    filename() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Original filename from filename="...", or null for text fields.
    +
    +
    find(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Returns the service for type, or empty if not found in this scope or any parent.
    +
    +
    find(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Looks up an optional service from the FlashContext.
    +
    +
    first(String) - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Returns the first value of header name (case-insensitive), or null.
    +
    +
    Flash - Class in dev.relism.flash
    +
    +
    Global Flash constants and runtime environment flags.
    +
    +
    Flash.Commons - Class in dev.relism.flash
    +
     
    +
    Flash.Middlewares - Class in dev.relism.flash
    +
     
    +
    Flash.Middlewares.CorsConfig - Class in dev.relism.flash
    +
     
    +
    FlashApp - Class in dev.relism.flash.extension
    +
    +
    Single entry point for Flash.
    +
    +
    FlashConfiguration - Class in dev.relism.flash.extension
    +
    +
    Configuration for a FlashApp instance.
    +
    +
    FlashConfiguration() - Constructor for class dev.relism.flash.extension.FlashConfiguration
    +
     
    +
    FlashContext - Class in dev.relism.flash.extension
    +
    +
    Central service registry and boot-time hook coordinator.
    +
    +
    FlashContext() - Constructor for class dev.relism.flash.extension.FlashContext
    +
     
    +
    FlashExtension - Interface in dev.relism.flash.extension
    +
    +
    Two-phase contract for all Flash extensions.
    +
    +
    FlashRegistrar<SELF> - Class in dev.relism.flash.extension
    +
    +
    Common route-registration surface shared by FlashApp and FlashScope.
    +
    +
    FlashRegistrar() - Constructor for class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    FlashScope - Class in dev.relism.flash.extension
    +
    +
    Scoped builder for namespace-prefixed routes.
    +
    +
    FONT_WOFF - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    FONT_WOFF2 - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    forbidden() - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    FORBIDDEN - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    FORM_URLENCODED - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    forParsed(RequestLine, InputStream, long, byte[], int, int, InetSocketAddress) - Static method in class dev.relism.flash.models.Request
    +
     
    +
    FOUND - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    fromBytes(byte[], int, int) - Static method in enum class dev.relism.flash.http.HttpMethod
    +
    +
    Resolves the HttpMethod from a byte buffer segment using O(1) dispatch.
    +
    +
    +

    G

    +
    +
    GATEWAY_TIMEOUT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    get(String) - Method in class dev.relism.flash.models.PathParams
    +
     
    +
    get(String) - Method in class dev.relism.flash.models.QueryParams
    +
     
    +
    get(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    GET - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    GET - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.GET, path = "…").
    +
    +
    getAll(String) - Method in class dev.relism.flash.models.QueryParams
    +
     
    +
    getExceptionHandler() - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    getHeaders() - Method in class dev.relism.flash.models.Response
    +
    +
    Returns custom headers, or an empty list if none were added.
    +
    +
    getNotFoundHandler() - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    GONE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    GRAPHQL - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    GZIP - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +

    H

    +
    +
    handle(Request, Response) - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Handles an incoming request.
    +
    +
    handle(Request, Response) - Method in interface dev.relism.flash.models.SimpleHandler.FunctionalHandler
    +
     
    +
    handle(Request, Response) - Method in class dev.relism.flash.models.SimpleHandler
    +
     
    +
    handle(Exception, Request, Response) - Method in interface dev.relism.flash.routing.AbstractRouter.ExceptionHandler
    +
     
    +
    Handler abstraction chain - Search tag in record class dev.relism.flash.extension.RouteEvent
    +
    Section
    +
    handlerClass() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the handlerClass record component.
    +
    +
    hashCode() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns a hash code value for this object.
    +
    +
    head(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    HEAD - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    HEAD - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.HEAD, path = "…").
    +
    +
    header(byte[]) - Method in class dev.relism.flash.models.Response
    +
    +
    Adds a pre-encoded header (e.g. a static "X-RateLimit-Limit: 100\r\n" byte array + pre-built at boot time).
    +
    +
    header(String) - Method in class dev.relism.flash.models.Request
    +
    +
    Returns the first value of header name, or null if absent.
    +
    +
    header(String, String) - Method in class dev.relism.flash.models.Response
    +
    +
    Adds a response header.
    +
    +
    headerEquals(String, String) - Method in class dev.relism.flash.models.Request
    +
    +
    Internal: case-insensitive header value comparison used by the server keep-alive logic.
    +
    +
    HeaderMap - Class in dev.relism.flash.models
    +
    +
    Lazy, zero-copy header access backed directly by the request parser's byte buffer.
    +
    +
    HeaderMap() - Constructor for class dev.relism.flash.models.HeaderMap
    +
     
    +
    headers() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    headers() - Method in class dev.relism.flash.models.Request
    +
    +
    Returns all header values in declaration order, one entry per header line.
    +
    +
    headers(String) - Method in class dev.relism.flash.models.Request
    +
    +
    Returns all values of header name in declaration order.
    +
    +
    headers(String...) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    HttpException - Exception Class in dev.relism.flash.exceptions
    +
    +
    Runtime exception carrying an HTTP status code.
    +
    +
    HttpException(int, String) - Constructor for exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    HttpMethod - Enum Class in dev.relism.flash.http
    +
     
    +
    HttpStatus - Enum Class in dev.relism.flash.http
    +
    +
    Pre-compiled byte representations of standard HTTP status lines.
    +
    +
    +

    I

    +
    +
    IMAGE_AVIF - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_GIF - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_ICO - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_JPEG - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_PNG - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_SVG - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    IMAGE_WEBP - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    InitializationException - Exception Class in dev.relism.flash.exceptions
    +
    +
    Thrown at boot time when Flash detects a configuration or registration error.
    +
    +
    InitializationException(String) - Constructor for exception class dev.relism.flash.exceptions.InitializationException
    +
     
    +
    InitializationException(String, Throwable) - Constructor for exception class dev.relism.flash.exceptions.InitializationException
    +
     
    +
    inject(Request, PathParams) - Static method in class dev.relism.flash.models.PathParams
    +
    +
    Injects path parameters into a request.
    +
    +
    install(FlashExtension) - Method in class dev.relism.flash.extension.FlashApp
    +
    +
    Registers an extension for two-phase installation at startup.
    +
    +
    instantiate(Class<?>) - Static method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    internal(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    INTERNAL_SERVER_ERROR - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    isEmpty() - Method in class dev.relism.flash.models.RequestBody
    +
    +
    true if the body has zero bytes (Content-Length: 0 or no body).
    +
    +
    isFile() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    true if this part has a filename attribute (i.e. a file upload).
    +
    +
    isStreaming() - Method in class dev.relism.flash.models.Response
    +
     
    +
    +

    J

    +
    +
    join(String, String) - Static method in class dev.relism.flash.routing.PathUtils
    +
    +
    Joins two path segments and ensures the result is sanitized.
    +
    +
    JSON - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +

    L

    +
    +
    LATE - Enum constant in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    Observability, logging, diagnostics — must observe after all business logic.
    +
    +
    LD_JSON - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
     
    +
    length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
     
    +
    length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
    +
     
    +
    length() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
    +
     
    +
    LENGTH_REQUIRED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    Lifecycle - Search tag in class dev.relism.flash.models.RequestHandler
    +
    Section
    +
    Lifetime contract — read carefully - Search tag in class dev.relism.flash.models.HeaderMap
    +
    Section
    +
    +

    M

    +
    +
    main(String[]) - Static method in class dev.relism.flash.Main
    +
     
    +
    Main - Class in dev.relism.flash
    +
     
    +
    Main() - Constructor for class dev.relism.flash.Main
    +
     
    +
    materialize() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Materialises the body into a byte[].
    +
    +
    method() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the method record component.
    +
    +
    method() - Method in class dev.relism.flash.models.Request
    +
    +
    HTTP method (GET, POST, …).
    +
    +
    method() - Element in annotation interface dev.relism.flash.routing.Route
    +
     
    +
    METHOD_NOT_ALLOWED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    MethodPathByteView() - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
     
    +
    methods() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    methods(String...) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    Middleware - Interface in dev.relism.flash.routing
    +
    +
    Stateless interceptor applied around a RequestHandler.
    +
    +
    middlewareChain() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the middlewareChain record component.
    +
    +
    Middleware chain - Search tag in record class dev.relism.flash.extension.RouteEvent
    +
    Section
    +
    middlewares - Variable in class dev.relism.flash.Flash.Commons
    +
     
    +
    Middlewares() - Constructor for class dev.relism.flash.Flash.Middlewares
    +
     
    +
    mount(String, Consumer<FlashScope>) - Method in class dev.relism.flash.extension.FlashApp
    +
    +
    Mounts a scoped group of routes under namespace.
    +
    +
    MOVED_PERMANENTLY - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    MSGPACK - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    Multipart - Class in dev.relism.flash.api.multipart
    +
    +
    Lazy streaming multipart/form-data parser.
    +
    +
    MULTIPART_FORM - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +

    N

    +
    +
    name() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Field or file name from Content-Disposition: form-data; name="...".
    +
    +
    namespace() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the namespace record component.
    +
    +
    NDJSON - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    NO_CONTENT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    NONE - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    NOT_ACCEPTABLE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    NOT_FOUND - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    NOT_IMPLEMENTED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    NOT_MODIFIED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    notFound(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    notFoundHandler - Variable in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    +

    O

    +
    +
    of(Request) - Static method in class dev.relism.flash.api.multipart.Multipart
    +
    +
    Creates a parser for request.
    +
    +
    of(Middleware...) - Static method in interface dev.relism.flash.routing.Middleware
    +
    +
    Composes an ordered chain of middlewares into a single Middleware.
    +
    +
    of(Class<?>) - Static method in class dev.relism.flash.routing.Routes
    +
    +
    Effective route for cls, or null.
    +
    +
    OK - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    onException(AbstractRouter.ExceptionHandler) - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    onException(AbstractRouter.ExceptionHandler) - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    onInit() - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Override to cache services at boot time.
    +
    +
    onNotFound(SimpleHandler.FunctionalHandler) - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    onNotFound(SimpleHandler.FunctionalHandler) - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    onRoute(RouteEvent) - Method in interface dev.relism.flash.extension.RouteListener
    +
    +
    Called once for every registered route, in registration order.
    +
    +
    optional(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Alias for FlashContext.find(java.lang.Class<T>) — prefer when semantics are "this may or may not exist".
    +
    +
    optional(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Looks up an optional service from the FlashContext.
    +
    +
    options(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    OPTIONS - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    OPTIONS - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.OPTIONS, path = "…").
    +
    +
    origin() - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    origin(String) - Method in class dev.relism.flash.Flash.Middlewares.CorsConfig
    +
     
    +
    +

    P

    +
    +
    param(String) - Method in class dev.relism.flash.models.Request
    +
    +
    Returns the path parameter named name, or null.
    +
    +
    paramInt(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the path parameter as an int.
    +
    +
    paramLong(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the path parameter as a long.
    +
    +
    paramRequired(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the path parameter as a String.
    +
    +
    parse(InputStream) - Method in class dev.relism.flash.RequestParser
    +
     
    +
    Part - Class in dev.relism.flash.api.multipart
    +
    +
    One part of a multipart/form-data body produced by Multipart.
    +
    +
    PARTIAL_CONTENT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    parts() - Method in class dev.relism.flash.api.multipart.Multipart
    +
    +
    Returns all parts in declaration order.
    +
    +
    parts(String) - Method in class dev.relism.flash.api.multipart.Multipart
    +
    +
    Returns all parts named name in declaration order.
    +
    +
    patch(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    PATCH - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    PATCH - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.PATCH, path = "…").
    +
    +
    path() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the path record component.
    +
    +
    path() - Method in class dev.relism.flash.models.Request
    +
    +
    Request path decoded as UTF-8.
    +
    +
    path() - Element in annotation interface dev.relism.flash.routing.Route
    +
     
    +
    PathParams - Class in dev.relism.flash.models
    +
    +
    Path parameters captured during routing, stored as byte offsets into the path view.
    +
    +
    PathParams(ByteView, String[], int[], int[]) - Constructor for class dev.relism.flash.models.PathParams
    +
     
    +
    PathUtils - Class in dev.relism.flash.routing
    +
     
    +
    PathUtils() - Constructor for class dev.relism.flash.routing.PathUtils
    +
     
    +
    PAYLOAD_TOO_LARGE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    PDF - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    PERMANENT_REDIRECT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    post(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    POST - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    POST - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.POST, path = "…").
    +
    +
    priority() - Method in interface dev.relism.flash.extension.FlashExtension
    +
    +
    Execution priority.
    +
    +
    Priority and middleware ordering - Search tag in interface dev.relism.flash.extension.FlashExtension
    +
    Section
    +
    process(Class<? extends RequestHandler>) - Method in interface dev.relism.flash.extension.AnnotationProcessor
    +
     
    +
    provide(FlashContext) - Method in interface dev.relism.flash.extension.FlashExtension
    +
    +
    Phase 1 — register services and processors.
    +
    +
    provide(Class<T>, T) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Registers an already-constructed instance under type.
    +
    +
    purge(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    PURGE - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    PURGE - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.PURGE, path = "…").
    +
    +
    put(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    PUT - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    PUT - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.PUT, path = "…").
    +
    +
    +

    Q

    +
    +
    queries(String) - Method in class dev.relism.flash.models.Request
    +
    +
    Returns all query parameters named name in declaration order.
    +
    +
    query(String) - Method in class dev.relism.flash.models.Request
    +
    +
    Returns the first query parameter named name, or null.
    +
    +
    queryInt(Request, String, int, int) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the query param as an int, or defaultValue if absent.
    +
    +
    queryLong(Request, String, long) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the query param as a long, or defaultValue if absent.
    +
    +
    queryOptional(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the query param, or null if absent.
    +
    +
    QueryParams - Class in dev.relism.flash.models
    +
    +
    Lazy query parameter access (?key=value&...).
    +
    +
    QueryParams(ByteView) - Constructor for class dev.relism.flash.models.QueryParams
    +
     
    +
    queryRequired(Request, String) - Static method in class dev.relism.flash.models.RequestHelper
    +
    +
    Returns the query param value.
    +
    +
    +

    R

    +
    +
    RadixPathRouterImpl - Class in dev.relism.flash.routing.routers.radix
    +
     
    +
    RadixPathRouterImpl() - Constructor for class dev.relism.flash.routing.routers.radix.RadixPathRouterImpl
    +
     
    +
    reason() - Method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Reason phrase (e.g.
    +
    +
    reasonForCode(int) - Static method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Returns reason phrase for the given code, or null if unknown.
    +
    +
    redirect(HttpStatus, String) - Method in class dev.relism.flash.models.Response
    +
    +
    Redirect with an explicit 3xx status.
    +
    +
    redirect(String) - Method in class dev.relism.flash.models.Response
    +
    +
    302 Found redirect.
    +
    +
    remoteAddress() - Method in class dev.relism.flash.models.Request
    +
    +
    Returns the remote socket address of the connected client, or null + for test-constructed requests.
    +
    +
    render(String...) - Method in class dev.relism.flash.template.ByteTemplate
    +
    +
    Render with alternating key-value String pairs: k1, v1, k2, v2, … + Unmatched slots are rendered as empty.
    +
    +
    renderException(Request, Exception) - Static method in class dev.relism.flash.template.ErrorPages
    +
     
    +
    renderNotFound(Request) - Static method in class dev.relism.flash.template.ErrorPages
    +
     
    +
    Request - Class in dev.relism.flash.models
    +
    +
    Immutable view of an incoming HTTP/1.1 request.
    +
    +
    Request(RequestLine, byte[]) - Constructor for class dev.relism.flash.models.Request
    +
    +
    Test / manual constructor — remoteAddress() returns null.
    +
    +
    RequestBody - Class in dev.relism.flash.models
    +
    +
    Accessor for the HTTP request body.
    +
    +
    RequestByteView(byte[], int, int) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
     
    +
    RequestHandler - Class in dev.relism.flash.models
    +
    +
    Base class for class-based route handlers.
    +
    +
    RequestHandler() - Constructor for class dev.relism.flash.models.RequestHandler
    +
     
    +
    RequestHelper - Class in dev.relism.flash.models
    +
    +
    Typed accessors for request parameters.
    +
    +
    RequestLine - Class in dev.relism.flash.models
    +
     
    +
    RequestLine() - Constructor for class dev.relism.flash.models.RequestLine
    +
     
    +
    RequestParser - Class in dev.relism.flash
    +
    +
    One instance per connection, the buffer is allocated once and reused across keep-alive + requests.
    +
    +
    RequestParser() - Constructor for class dev.relism.flash.RequestParser
    +
     
    +
    RequestParser(int) - Constructor for class dev.relism.flash.RequestParser
    +
     
    +
    RequestParser(int, InetSocketAddress) - Constructor for class dev.relism.flash.RequestParser
    +
     
    +
    require(Class<T>) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Returns the service for type.
    +
    +
    require(Class<T>) - Method in class dev.relism.flash.models.RequestHandler
    +
    +
    Retrieves a required service from the FlashContext.
    +
    +
    reset(byte[], int, int) - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Resets this map to the header section buffer[sectionStart, sectionEnd).
    +
    +
    reset(byte[], ByteView) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.MethodPathByteView
    +
     
    +
    Response - Class in dev.relism.flash.models
    +
    +
    HTTP response.
    +
    +
    Response(int, byte[], ContentType) - Constructor for class dev.relism.flash.models.Response
    +
     
    +
    Response(int, ContentType) - Constructor for class dev.relism.flash.models.Response
    +
     
    +
    Response(int, String, ContentType) - Constructor for class dev.relism.flash.models.Response
    +
     
    +
    route(Request) - Method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    route(Request) - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl
    +
     
    +
    Route - Annotation Interface in dev.relism.flash.routing
    +
    +
    HTTP method and path for a class-based RequestHandler.
    +
    +
    RouteEvent - Record Class in dev.relism.flash.extension
    +
    +
    Immutable snapshot of a route captured at registration time.
    +
    +
    RouteEvent(HttpMethod, String, String, String, Class<?>, List<Class<? extends Middleware>>) - Constructor for record class dev.relism.flash.extension.RouteEvent
    +
    +
    Creates an instance of a RouteEvent record class.
    +
    +
    RouteListener - Interface in dev.relism.flash.extension
    +
    +
    Observer notified once for each route registered on a FlashApp or FlashScope.
    +
    +
    routerType() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns the value of the routerType record component.
    +
    +
    routes(FlashRegistrar<?>, FlashContext) - Method in interface dev.relism.flash.extension.FlashExtension
    +
    +
    Phase 2 — register routes.
    +
    +
    Routes - Class in dev.relism.flash.routing
    +
    +
    Boot-time resolution of Route from a handler class (direct @Route or shorthand).
    +
    +
    +

    S

    +
    +
    sanitize(String) - Static method in class dev.relism.flash.routing.PathUtils
    +
    +
    Sanitizes a path segment to ensure it starts with '/' and has no trailing slash.
    +
    +
    scan(String) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
    +
    Scans packageName for RequestHandler subclasses with a routing + annotation (@Route or @GET, @POST, …).
    +
    +
    ServerHandle - Interface in dev.relism.flash
    +
    +
    Public handle to the underlying HTTP transport.
    +
    +
    SERVICE_UNAVAILABLE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    Service access - Search tag in class dev.relism.flash.models.RequestHandler
    +
    Section
    +
    setBody(Object) - Method in class dev.relism.flash.models.Response
    +
    +
    Sets the body from a handler return value.
    +
    +
    setPathParams(Request, String[], ByteView, int[], int[]) - Static method in class dev.relism.flash.routing.AbstractRouter
    +
     
    +
    SimpleHandler - Class in dev.relism.flash.models
    +
    +
    Delegates SimpleHandler.handle(dev.relism.flash.models.Request, dev.relism.flash.models.Response) to a SimpleHandler.FunctionalHandler so lambdas can be used without + relying on Lombok-generated constructors (IDE-safe, annotation-processing independent).
    +
    +
    SimpleHandler(SimpleHandler.FunctionalHandler) - Constructor for class dev.relism.flash.models.SimpleHandler
    +
     
    +
    SimpleHandler.FunctionalHandler - Interface in dev.relism.flash.models
    +
    +
    Functional interface for handling requests, used by SimpleHandler.
    +
    +
    SocketByteView(byte[]) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.SocketByteView
    +
     
    +
    start() - Method in class dev.relism.flash.extension.FlashApp
    +
    +
    Boots the server and starts accepting connections.
    +
    +
    start() - Method in interface dev.relism.flash.ServerHandle
    +
    +
    Starts the accept loop on a background platform thread.
    +
    +
    startAndBlock() - Method in class dev.relism.flash.extension.FlashApp
    +
    +
    Boots the server and blocks the calling thread until the server is stopped.
    +
    +
    startAndBlock() - Method in interface dev.relism.flash.ServerHandle
    +
    +
    Starts the accept loop and blocks the calling thread until the server is stopped.
    +
    +
    Startup sequence (both #start() and #startAndBlock()) - Search tag in class dev.relism.flash.extension.FlashApp
    +
    Section
    +
    status() - Method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    status(int) - Method in class dev.relism.flash.models.Response
    +
    +
    Sets the status code.
    +
    +
    status(HttpStatus) - Method in class dev.relism.flash.models.Response
    +
    +
    Sets the status from an HttpStatus constant.
    +
    +
    stop() - Method in class dev.relism.flash.extension.FlashApp
    +
     
    +
    stop() - Method in interface dev.relism.flash.ServerHandle
    +
    +
    Gracefully stops the server, draining active connections.
    +
    +
    stream() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Returns an InputStream over the part body.
    +
    +
    stream() - Method in class dev.relism.flash.models.RequestBody
    +
    +
    Returns a bounded InputStream over the body without upfront allocation.
    +
    +
    stream(InputStream, long) - Method in class dev.relism.flash.models.Response
    +
    +
    Streaming response with known length; written with Content-Length.
    +
    +
    StringByteView(String) - Constructor for class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.StringByteView
    +
     
    +
    supply(Class<T>, Supplier<T>) - Method in class dev.relism.flash.extension.FlashContext
    +
    +
    Registers a lazy factory for type.
    +
    +
    SWITCHING_PROTOCOLS - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    +

    T

    +
    +
    TEMPORARY_REDIRECT - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    text() - Method in class dev.relism.flash.api.multipart.Part
    +
    +
    Decodes the body as UTF-8.
    +
    +
    TEXT_CSS - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_CSV - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_EVENT_STREAM - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_HTML - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_JAVASCRIPT - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_MARKDOWN - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_PLAIN - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TEXT_XML - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    TOO_MANY_REQUESTS - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    toString() - Method in record class dev.relism.flash.extension.RouteEvent
    +
    +
    Returns a string representation of this record class.
    +
    +
    toString() - Method in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    toString() - Method in class dev.relism.flash.routing.routers.fastpathrouter.FastPathViews.RequestByteView
    +
     
    +
    trace(String, SimpleHandler.FunctionalHandler, Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
     
    +
    TRACE - Enum constant in enum class dev.relism.flash.http.HttpMethod
    +
     
    +
    TRACE - Annotation Interface in dev.relism.flash.routing
    +
    +
    Shorthand for @Route(method = HttpMethod.TRACE, path = "…").
    +
    +
    type(ContentType) - Method in class dev.relism.flash.models.Response
    +
     
    +
    type(String) - Method in class dev.relism.flash.models.Response
    +
     
    +
    +

    U

    +
    +
    unauthorized() - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    UNAUTHORIZED - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    unprocessable(String) - Static method in exception class dev.relism.flash.exceptions.HttpException
    +
     
    +
    UNPROCESSABLE_ENTITY - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    UNSUPPORTED_MEDIA_TYPE - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    URI_TOO_LONG - Enum constant in enum class dev.relism.flash.http.HttpStatus
    +
     
    +
    use(Middleware...) - Method in class dev.relism.flash.extension.FlashRegistrar
    +
    +
    Adds middlewares to this registrar's own scope.
    +
    +
    +

    V

    +
    +
    value - Variable in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    The integer priority value used for sorting.
    +
    +
    value() - Element in annotation interface dev.relism.flash.routing.CONNECT
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.DELETE
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.GET
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.HEAD
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.OPTIONS
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.PATCH
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.POST
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.PURGE
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.PUT
    +
     
    +
    value() - Element in annotation interface dev.relism.flash.routing.TRACE
    +
     
    +
    valueEqualsIgnoreCase(String, String) - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Case-insensitive comparison of the first value of name against value.
    +
    +
    valueOf(String) - Static method in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    valueOf(String) - Static method in enum class dev.relism.flash.http.ContentType
    +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    valueOf(String) - Static method in enum class dev.relism.flash.http.HttpMethod
    +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    valueOf(String) - Static method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    values() - Static method in enum class dev.relism.flash.extension.ExtensionPhase
    +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    values() - Static method in enum class dev.relism.flash.http.ContentType
    +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    values() - Static method in enum class dev.relism.flash.http.HttpMethod
    +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    values() - Static method in enum class dev.relism.flash.http.HttpStatus
    +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    VERSION - Static variable in class dev.relism.flash.Flash
    +
     
    +
    VIDEO_MP4 - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    VIDEO_WEBM - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    view(String) - Method in class dev.relism.flash.models.HeaderMap
    +
    +
    Returns a zero-copy ByteView over the first value of name, or null.
    +
    +
    +

    W

    +
    +
    wrap(RequestHandler) - Method in interface dev.relism.flash.routing.Middleware
    +
    +
    Wraps next with this middleware's logic.
    +
    +
    writeHeaders(OutputStream) - Method in class dev.relism.flash.models.Response
    +
    +
    Writes pre-encoded custom headers directly to out.
    +
    +
    +

    X

    +
    +
    XML - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +

    Z

    +
    +
    ZIP - Enum constant in enum class dev.relism.flash.http.ContentType
    +
     
    +
    +A B C D E F G H I J L M N O P Q R S T U V W X Z 
    All Classes and Interfaces|All Packages|Constant Field Values|Serialized Form
    +
    +
    + +
    +
    +
    + + diff --git a/latest/index.html b/latest/index.html new file mode 100644 index 0000000..dd8b212 --- /dev/null +++ b/latest/index.html @@ -0,0 +1,89 @@ + + + + +Overview (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + + +
    + + diff --git a/latest/legal/ADDITIONAL_LICENSE_INFO b/latest/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..ff700cd --- /dev/null +++ b/latest/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1,37 @@ + ADDITIONAL INFORMATION ABOUT LICENSING + +Certain files distributed by Oracle America, Inc. and/or its affiliates are +subject to the following clarification and special exception to the GPLv2, +based on the GNU Project exception for its Classpath libraries, known as the +GNU Classpath Exception. + +Note that Oracle includes multiple, independent programs in this software +package. Some of those programs are provided under licenses deemed +incompatible with the GPLv2 by the Free Software Foundation and others. +For example, the package includes programs licensed under the Apache +License, Version 2.0 and may include FreeType. Such programs are licensed +to you under their original licenses. + +Oracle facilitates your further distribution of this package by adding the +Classpath Exception to the necessary parts of its GPLv2 code, which permits +you to use that code in combination with other independent modules not +licensed under the GPLv2. However, note that this would not permit you to +commingle code under an incompatible license with Oracle's GPLv2 licensed +code by, for example, cutting and pasting such code into a file also +containing Oracle's GPLv2 licensed code and then distributing the result. + +Additionally, if you were to remove the Classpath Exception from any of the +files to which it applies and distribute the result, you would likely be +required to license some or all of the other code in that distribution under +the GPLv2 as well, and since the GPLv2 is incompatible with the license terms +of some items included in the distribution by Oracle, removing the Classpath +Exception could therefore effectively compromise your ability to further +distribute the package. + +Failing to distribute notices associated with some files may also create +unexpected legal consequences. + +Proceed with caution and we recommend that you obtain the advice of a lawyer +skilled in open source matters before removing the Classpath Exception or +making modifications to this package which may subsequently be redistributed +and/or involve the use of third party software. diff --git a/latest/legal/ASSEMBLY_EXCEPTION b/latest/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..4296666 --- /dev/null +++ b/latest/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1,27 @@ + +OPENJDK ASSEMBLY EXCEPTION + +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at +openjdk.org ("OpenJDK Code") is distributed under the terms of the GNU +General Public License version 2 +only ("GPL2"), with the following clarification and special exception. + + Linking this OpenJDK Code statically or dynamically with other code + is making a combined work based on this library. Thus, the terms + and conditions of GPL2 cover the whole combination. + + As a special exception, Oracle gives you permission to link this + OpenJDK Code with certain code licensed by Oracle as indicated at + https://openjdk.org/legal/exception-modules-2007-05-08.html + ("Designated Exception Modules") to produce an executable, + regardless of the license terms of the Designated Exception Modules, + and to copy and distribute the resulting executable under GPL2, + provided that the Designated Exception Modules continue to be + governed by the licenses under which they were offered by Oracle. + +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code +to build an executable that includes those portions of necessary code that +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2 +with the Classpath exception). If you modify or add to the OpenJDK code, +that new GPL2 code may still be combined with Designated Exception Modules +if the new code is made subject to this exception by its copyright holder. diff --git a/latest/legal/LICENSE b/latest/legal/LICENSE new file mode 100644 index 0000000..8b400c7 --- /dev/null +++ b/latest/legal/LICENSE @@ -0,0 +1,347 @@ +The GNU General Public License (GPL) + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of +this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each licensee is addressed as +"you". + +Activities other than copying, distribution and modification are not covered by +this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as +you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus +forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all of +these conditions: + + a) You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in whole or + in part contains or is derived from the Program or any part thereof, to be + licensed as a whole at no charge to all third parties under the terms of + this License. + + c) If the modified program normally reads commands interactively when run, + you must cause it, when started running for such interactive use in the + most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or + else, saying that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to view a copy + of this License. (Exception: if the Program itself is interactive but does + not normally print such an announcement, your work based on the Program is + not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, and +its terms, do not apply to those sections when you distribute them as separate +works. But when you distribute the same sections as part of a whole which is a +work based on the Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 above + on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three years, to + give any third party, for a charge no more than your cost of physically + performing source distribution, a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source +code from the same place counts as distribution of the source code, even though +third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, or +rights, from you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the Program +or its derivative works. These actions are prohibited by law if you do not +accept this License. Therefore, by modifying or distributing the Program (or +any work based on the Program), you indicate your acceptance of this License to +do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor to +copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of the +rights granted herein. You are not responsible for enforcing compliance by +third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the +General Public License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to address new problems +or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software Foundation. +If the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status of +all derivatives of our free software and of promoting the sharing and reuse of +software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + + Copyright (C) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes + with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free + software, and you are welcome to redistribute it under certain conditions; + type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than 'show w' and 'show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + 'Gnomovision' (which makes passes at compilers) written by James Hacker. + + signature of Ty Coon, 1 April 1989 + + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. + + +"CLASSPATH" EXCEPTION TO THE GPL + +Certain source files distributed by Oracle America and/or its affiliates are +subject to the following clarification and special exception to the GPL, but +only where Oracle has expressly included in the particular source file's header +the words "Oracle designates this particular file as subject to the "Classpath" +exception as provided by Oracle in the LICENSE file that accompanied this code." + + Linking this library statically or dynamically with other modules is making + a combined work based on this library. Thus, the terms and conditions of + the GNU General Public License cover the whole combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules, + and to copy and distribute the resulting executable under terms of your + choice, provided that you also meet, for each linked independent module, + the terms and conditions of the license of that module. An independent + module is a module which is not derived from or based on this library. If + you modify this library, you may extend this exception to your version of + the library, but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. diff --git a/latest/legal/jquery.md b/latest/legal/jquery.md new file mode 100644 index 0000000..a763ec6 --- /dev/null +++ b/latest/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/latest/legal/jqueryUI.md b/latest/legal/jqueryUI.md new file mode 100644 index 0000000..46bfbaa --- /dev/null +++ b/latest/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.14.1 + +### jQuery UI License +``` +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/latest/link.svg b/latest/link.svg new file mode 100644 index 0000000..7ccc5ed --- /dev/null +++ b/latest/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/latest/member-search-index.js b/latest/member-search-index.js new file mode 100644 index 0000000..3d93085 --- /dev/null +++ b/latest/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"AbstractRouter()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"ACCEPTED"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"addAnnotationProcessor(AnnotationProcessor)","u":"addAnnotationProcessor(dev.relism.flash.extension.AnnotationProcessor)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"addMiddleware(Middleware)","u":"addMiddleware(dev.relism.flash.routing.Middleware)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"addRoute(HttpMethod, String, RequestHandler)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"addRoute(HttpMethod, String, RequestHandler)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"addRoute(HttpMethod, String, RequestHandler, List)","u":"addRoute(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,java.util.List)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"addRouteListener(RouteListener)","u":"addRouteListener(dev.relism.flash.extension.RouteListener)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"all()"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"all(String)","u":"all(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"AUDIO_MPEG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"AUDIO_OGG"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"BAD_GATEWAY"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"BAD_REQUEST"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"badRequest(String)","u":"badRequest(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"BINARY"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"bind(FlashContext)","u":"bind(dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.models","c":"Request","l":"body()"},{"p":"dev.relism.flash.models","c":"Response","l":"body(byte[])"},{"p":"dev.relism.flash.models","c":"Response","l":"body(String)","u":"body(java.lang.String)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"byteAt(int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"bytes()"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"bytes()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"bytesForCode(int)"},{"p":"dev.relism.flash.template","c":"ByteTemplate","l":"ByteTemplate(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"CBOR"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"child()"},{"p":"dev.relism.flash.models","c":"Response","l":"chunked(InputStream)","u":"chunked(java.io.InputStream)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"code()"},{"p":"dev.relism.flash","c":"Flash","l":"commons"},{"p":"dev.relism.flash","c":"Flash.Commons","l":"Commons()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CONFLICT"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"conflict(String)","u":"conflict(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"CONNECT"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"connect(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"connect(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"contentLength()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"contentType()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CONTINUE"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors()"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors(Consumer)","u":"cors(java.util.function.Consumer)"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"cors(Flash.Middlewares.CorsConfig)","u":"cors(dev.relism.flash.Flash.Middlewares.CorsConfig)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"CorsConfig()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"create(FlashConfiguration)","u":"create(dev.relism.flash.extension.FlashConfiguration)"},{"p":"dev.relism.flash","c":"ServerHandle","l":"create(FlashConfiguration, AbstractRouter)","u":"create(dev.relism.flash.extension.FlashConfiguration,dev.relism.flash.routing.AbstractRouter)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"create(int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"CREATED"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"credentials()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"credentials(boolean)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"FlashScope","l":"ctx()"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"DEFAULT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"DELETE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"delete(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"delete(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash","c":"Flash","l":"DEV"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"doRegister(HttpMethod, String, RequestHandler, Middleware[])","u":"doRegister(dev.relism.flash.http.HttpMethod,java.lang.String,dev.relism.flash.models.RequestHandler,dev.relism.flash.routing.Middleware[])"},{"p":"dev.relism.flash.models","c":"Request","l":"drain()"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"EARLY"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"EMPTY"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"ErrorPages()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"exceptionHandler"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"FastPathRouterImpl()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews","l":"FastPathViews()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"field(String)","u":"field(java.lang.String)"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"file(String)","u":"file(java.lang.String)"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"filename()"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"find(Class)","u":"find(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"find(Class)","u":"find(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"first(String)","u":"first(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashConfiguration","l":"FlashConfiguration()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"FlashContext()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"FlashRegistrar()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FONT_WOFF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FONT_WOFF2"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"FORBIDDEN"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"forbidden()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"FORM_URLENCODED"},{"p":"dev.relism.flash.models","c":"Request","l":"forParsed(RequestLine, InputStream, long, byte[], int, int, InetSocketAddress)","u":"forParsed(dev.relism.flash.models.RequestLine,java.io.InputStream,long,byte[],int,int,java.net.InetSocketAddress)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"FOUND"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"fromBytes(byte[], int, int)","u":"fromBytes(byte[],int,int)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"GATEWAY_TIMEOUT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"GET"},{"p":"dev.relism.flash.models","c":"PathParams","l":"get(String)","u":"get(java.lang.String)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"get(String)","u":"get(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"get(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"get(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"getAll(String)","u":"getAll(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"getExceptionHandler()"},{"p":"dev.relism.flash.models","c":"Response","l":"getHeaders()"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"getNotFoundHandler()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"GONE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"GRAPHQL"},{"p":"dev.relism.flash.http","c":"ContentType","l":"GZIP"},{"p":"dev.relism.flash.routing","c":"AbstractRouter.ExceptionHandler","l":"handle(Exception, Request, Response)","u":"handle(java.lang.Exception,dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"SimpleHandler.FunctionalHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.models","c":"SimpleHandler","l":"handle(Request, Response)","u":"handle(dev.relism.flash.models.Request,dev.relism.flash.models.Response)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"handlerClass()"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"hashCode()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"HEAD"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"head(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"head(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Response","l":"header(byte[])"},{"p":"dev.relism.flash.models","c":"Request","l":"header(String)","u":"header(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Response","l":"header(String, String)","u":"header(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"headerEquals(String, String)","u":"headerEquals(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"HeaderMap()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"headers()"},{"p":"dev.relism.flash.models","c":"Request","l":"headers()"},{"p":"dev.relism.flash.models","c":"Request","l":"headers(String)","u":"headers(java.lang.String)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"headers(String...)","u":"headers(java.lang.String...)"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"HttpException(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_AVIF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_GIF"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_ICO"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_JPEG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_PNG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_SVG"},{"p":"dev.relism.flash.http","c":"ContentType","l":"IMAGE_WEBP"},{"p":"dev.relism.flash.exceptions","c":"InitializationException","l":"InitializationException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.exceptions","c":"InitializationException","l":"InitializationException(String, Throwable)","u":"%3Cinit%3E(java.lang.String,java.lang.Throwable)"},{"p":"dev.relism.flash.models","c":"PathParams","l":"inject(Request, PathParams)","u":"inject(dev.relism.flash.models.Request,dev.relism.flash.models.PathParams)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"install(FlashExtension)","u":"install(dev.relism.flash.extension.FlashExtension)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"instantiate(Class)","u":"instantiate(java.lang.Class)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"INTERNAL_SERVER_ERROR"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"internal(String)","u":"internal(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"isEmpty()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"isFile()"},{"p":"dev.relism.flash.models","c":"Response","l":"isStreaming()"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"join(String, String)","u":"join(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"JSON"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"LATE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"LD_JSON"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"LENGTH_REQUIRED"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"length()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"length()"},{"p":"dev.relism.flash","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"materialize()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"METHOD_NOT_ALLOWED"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"method()"},{"p":"dev.relism.flash.models","c":"Request","l":"method()"},{"p":"dev.relism.flash.routing","c":"Route","l":"method()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"MethodPathByteView()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"methods()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"methods(String...)","u":"methods(java.lang.String...)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"middlewareChain()"},{"p":"dev.relism.flash","c":"Flash.Commons","l":"middlewares"},{"p":"dev.relism.flash","c":"Flash.Middlewares","l":"Middlewares()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"mount(String, Consumer)","u":"mount(java.lang.String,java.util.function.Consumer)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"MOVED_PERMANENTLY"},{"p":"dev.relism.flash.http","c":"ContentType","l":"MSGPACK"},{"p":"dev.relism.flash.http","c":"ContentType","l":"MULTIPART_FORM"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"name()"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"namespace()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"NDJSON"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NO_CONTENT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"NONE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_ACCEPTABLE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_FOUND"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_IMPLEMENTED"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"NOT_MODIFIED"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"notFound(String)","u":"notFound(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"notFoundHandler"},{"p":"dev.relism.flash.routing","c":"Routes","l":"of(Class)","u":"of(java.lang.Class)"},{"p":"dev.relism.flash.routing","c":"Middleware","l":"of(Middleware...)","u":"of(dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"of(Request)","u":"of(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"OK"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"onException(AbstractRouter.ExceptionHandler)","u":"onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"onException(AbstractRouter.ExceptionHandler)","u":"onException(dev.relism.flash.routing.AbstractRouter.ExceptionHandler)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"onInit()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"onNotFound(SimpleHandler.FunctionalHandler)","u":"onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"onNotFound(SimpleHandler.FunctionalHandler)","u":"onNotFound(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.extension","c":"RouteListener","l":"onRoute(RouteEvent)","u":"onRoute(dev.relism.flash.extension.RouteEvent)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"optional(Class)","u":"optional(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"optional(Class)","u":"optional(java.lang.Class)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"OPTIONS"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"options(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"options(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"origin()"},{"p":"dev.relism.flash","c":"Flash.Middlewares.CorsConfig","l":"origin(String)","u":"origin(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"param(String)","u":"param(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramInt(Request, String)","u":"paramInt(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramLong(Request, String)","u":"paramLong(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"paramRequired(Request, String)","u":"paramRequired(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash","c":"RequestParser","l":"parse(InputStream)","u":"parse(java.io.InputStream)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PARTIAL_CONTENT"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"parts()"},{"p":"dev.relism.flash.api.multipart","c":"Multipart","l":"parts(String)","u":"parts(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PATCH"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"patch(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"patch(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"path()"},{"p":"dev.relism.flash.models","c":"Request","l":"path()"},{"p":"dev.relism.flash.routing","c":"Route","l":"path()"},{"p":"dev.relism.flash.models","c":"PathParams","l":"PathParams(ByteView, String[], int[], int[])","u":"%3Cinit%3E(dev.relism.fpr.core.ByteView,java.lang.String[],int[],int[])"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"PathUtils()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PAYLOAD_TOO_LARGE"},{"p":"dev.relism.flash.http","c":"ContentType","l":"PDF"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"PERMANENT_REDIRECT"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"POST"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"post(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"post(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"priority()"},{"p":"dev.relism.flash.extension","c":"AnnotationProcessor","l":"process(Class)","u":"process(java.lang.Class)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"provide(Class, T)","u":"provide(java.lang.Class,T)"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"provide(FlashContext)","u":"provide(dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PURGE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"purge(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"purge(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"PUT"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"put(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"put(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Request","l":"queries(String)","u":"queries(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"query(String)","u":"query(java.lang.String)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryInt(Request, String, int, int)","u":"queryInt(dev.relism.flash.models.Request,java.lang.String,int,int)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryLong(Request, String, long)","u":"queryLong(dev.relism.flash.models.Request,java.lang.String,long)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryOptional(Request, String)","u":"queryOptional(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.models","c":"QueryParams","l":"QueryParams(ByteView)","u":"%3Cinit%3E(dev.relism.fpr.core.ByteView)"},{"p":"dev.relism.flash.models","c":"RequestHelper","l":"queryRequired(Request, String)","u":"queryRequired(dev.relism.flash.models.Request,java.lang.String)"},{"p":"dev.relism.flash.routing.routers.radix","c":"RadixPathRouterImpl","l":"RadixPathRouterImpl()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"reason()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"reasonForCode(int)"},{"p":"dev.relism.flash.models","c":"Response","l":"redirect(HttpStatus, String)","u":"redirect(dev.relism.flash.http.HttpStatus,java.lang.String)"},{"p":"dev.relism.flash.models","c":"Response","l":"redirect(String)","u":"redirect(java.lang.String)"},{"p":"dev.relism.flash.models","c":"Request","l":"remoteAddress()"},{"p":"dev.relism.flash.template","c":"ByteTemplate","l":"render(String...)","u":"render(java.lang.String...)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"renderException(Request, Exception)","u":"renderException(dev.relism.flash.models.Request,java.lang.Exception)"},{"p":"dev.relism.flash.template","c":"ErrorPages","l":"renderNotFound(Request)","u":"renderNotFound(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.models","c":"Request","l":"Request(RequestLine, byte[])","u":"%3Cinit%3E(dev.relism.flash.models.RequestLine,byte[])"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"RequestByteView(byte[], int, int)","u":"%3Cinit%3E(byte[],int,int)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"RequestHandler()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash.models","c":"RequestLine","l":"RequestLine()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser()","u":"%3Cinit%3E()"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser(int)","u":"%3Cinit%3E(int)"},{"p":"dev.relism.flash","c":"RequestParser","l":"RequestParser(int, InetSocketAddress)","u":"%3Cinit%3E(int,java.net.InetSocketAddress)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"require(Class)","u":"require(java.lang.Class)"},{"p":"dev.relism.flash.models","c":"RequestHandler","l":"require(Class)","u":"require(java.lang.Class)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.MethodPathByteView","l":"reset(byte[], ByteView)","u":"reset(byte[],dev.relism.fpr.core.ByteView)"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"reset(byte[], int, int)","u":"reset(byte[],int,int)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, byte[], ContentType)","u":"%3Cinit%3E(int,byte[],dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, ContentType)","u":"%3Cinit%3E(int,dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"Response(int, String, ContentType)","u":"%3Cinit%3E(int,java.lang.String,dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"route(Request)","u":"route(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathRouterImpl","l":"route(Request)","u":"route(dev.relism.flash.models.Request)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"RouteEvent(HttpMethod, String, String, String, Class, List>)","u":"%3Cinit%3E(dev.relism.flash.http.HttpMethod,java.lang.String,java.lang.String,java.lang.String,java.lang.Class,java.util.List)"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"routerType()"},{"p":"dev.relism.flash.extension","c":"FlashExtension","l":"routes(FlashRegistrar, FlashContext)","u":"routes(dev.relism.flash.extension.FlashRegistrar,dev.relism.flash.extension.FlashContext)"},{"p":"dev.relism.flash.routing","c":"PathUtils","l":"sanitize(String)","u":"sanitize(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"scan(String)","u":"scan(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"SERVICE_UNAVAILABLE"},{"p":"dev.relism.flash.models","c":"Response","l":"setBody(Object)","u":"setBody(java.lang.Object)"},{"p":"dev.relism.flash.routing","c":"AbstractRouter","l":"setPathParams(Request, String[], ByteView, int[], int[])","u":"setPathParams(dev.relism.flash.models.Request,java.lang.String[],dev.relism.fpr.core.ByteView,int[],int[])"},{"p":"dev.relism.flash.models","c":"SimpleHandler","l":"SimpleHandler(SimpleHandler.FunctionalHandler)","u":"%3Cinit%3E(dev.relism.flash.models.SimpleHandler.FunctionalHandler)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.SocketByteView","l":"SocketByteView(byte[])","u":"%3Cinit%3E(byte[])"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"start()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"start()"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"startAndBlock()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"startAndBlock()"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"status()"},{"p":"dev.relism.flash.models","c":"Response","l":"status(HttpStatus)","u":"status(dev.relism.flash.http.HttpStatus)"},{"p":"dev.relism.flash.models","c":"Response","l":"status(int)"},{"p":"dev.relism.flash.extension","c":"FlashApp","l":"stop()"},{"p":"dev.relism.flash","c":"ServerHandle","l":"stop()"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"stream()"},{"p":"dev.relism.flash.models","c":"RequestBody","l":"stream()"},{"p":"dev.relism.flash.models","c":"Response","l":"stream(InputStream, long)","u":"stream(java.io.InputStream,long)"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.StringByteView","l":"StringByteView(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"FlashContext","l":"supply(Class, Supplier)","u":"supply(java.lang.Class,java.util.function.Supplier)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"SWITCHING_PROTOCOLS"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"TEMPORARY_REDIRECT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_CSS"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_CSV"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_EVENT_STREAM"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_HTML"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_JAVASCRIPT"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_MARKDOWN"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_PLAIN"},{"p":"dev.relism.flash.http","c":"ContentType","l":"TEXT_XML"},{"p":"dev.relism.flash.api.multipart","c":"Part","l":"text()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"TOO_MANY_REQUESTS"},{"p":"dev.relism.flash.extension","c":"RouteEvent","l":"toString()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"toString()"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","c":"FastPathViews.RequestByteView","l":"toString()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"TRACE"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"trace(String, SimpleHandler.FunctionalHandler, Middleware...)","u":"trace(java.lang.String,dev.relism.flash.models.SimpleHandler.FunctionalHandler,dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.models","c":"Response","l":"type(ContentType)","u":"type(dev.relism.flash.http.ContentType)"},{"p":"dev.relism.flash.models","c":"Response","l":"type(String)","u":"type(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNAUTHORIZED"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"unauthorized()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNPROCESSABLE_ENTITY"},{"p":"dev.relism.flash.exceptions","c":"HttpException","l":"unprocessable(String)","u":"unprocessable(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"UNSUPPORTED_MEDIA_TYPE"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"URI_TOO_LONG"},{"p":"dev.relism.flash.extension","c":"FlashRegistrar","l":"use(Middleware...)","u":"use(dev.relism.flash.routing.Middleware...)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"value"},{"p":"dev.relism.flash.routing","c":"CONNECT","l":"value()"},{"p":"dev.relism.flash.routing","c":"DELETE","l":"value()"},{"p":"dev.relism.flash.routing","c":"GET","l":"value()"},{"p":"dev.relism.flash.routing","c":"HEAD","l":"value()"},{"p":"dev.relism.flash.routing","c":"OPTIONS","l":"value()"},{"p":"dev.relism.flash.routing","c":"PATCH","l":"value()"},{"p":"dev.relism.flash.routing","c":"POST","l":"value()"},{"p":"dev.relism.flash.routing","c":"PURGE","l":"value()"},{"p":"dev.relism.flash.routing","c":"PUT","l":"value()"},{"p":"dev.relism.flash.routing","c":"TRACE","l":"value()"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"valueEqualsIgnoreCase(String, String)","u":"valueEqualsIgnoreCase(java.lang.String,java.lang.String)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"dev.relism.flash.extension","c":"ExtensionPhase","l":"values()"},{"p":"dev.relism.flash.http","c":"ContentType","l":"values()"},{"p":"dev.relism.flash.http","c":"HttpMethod","l":"values()"},{"p":"dev.relism.flash.http","c":"HttpStatus","l":"values()"},{"p":"dev.relism.flash","c":"Flash","l":"VERSION"},{"p":"dev.relism.flash.http","c":"ContentType","l":"VIDEO_MP4"},{"p":"dev.relism.flash.http","c":"ContentType","l":"VIDEO_WEBM"},{"p":"dev.relism.flash.models","c":"HeaderMap","l":"view(String)","u":"view(java.lang.String)"},{"p":"dev.relism.flash.routing","c":"Middleware","l":"wrap(RequestHandler)","u":"wrap(dev.relism.flash.models.RequestHandler)"},{"p":"dev.relism.flash.models","c":"Response","l":"writeHeaders(OutputStream)","u":"writeHeaders(java.io.OutputStream)"},{"p":"dev.relism.flash.http","c":"ContentType","l":"XML"},{"p":"dev.relism.flash.http","c":"ContentType","l":"ZIP"}];updateSearchResults(); \ No newline at end of file diff --git a/latest/module-search-index.js b/latest/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/latest/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/latest/overview-summary.html b/latest/overview-summary.html new file mode 100644 index 0000000..db9d5ba --- /dev/null +++ b/latest/overview-summary.html @@ -0,0 +1,26 @@ + + + + +flash-parent 2.0.0 API + + + + + + + + + + + +
    + +

    index.html

    +
    + + diff --git a/latest/overview-tree.html b/latest/overview-tree.html new file mode 100644 index 0000000..9f8f687 --- /dev/null +++ b/latest/overview-tree.html @@ -0,0 +1,201 @@ + + + + +Class Hierarchy (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchy For All Packages

    +
    +Package Hierarchies: + +
    +

    Class Hierarchy

    + +
    +
    +

    Interface Hierarchy

    + +
    +
    +

    Annotation Interface Hierarchy

    +
      +
    • dev.relism.flash.routing.CONNECT (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.DELETE (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.GET (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.HEAD (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.OPTIONS (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PATCH (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.POST (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PURGE (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.PUT (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.Route (implements java.lang.annotation.Annotation)
    • +
    • dev.relism.flash.routing.TRACE (implements java.lang.annotation.Annotation)
    • +
    +
    +
    +

    Enum Class Hierarchy

    + +
    +
    +

    Record Class Hierarchy

    + +
    +
    +
    +
    + +
    +
    +
    + + diff --git a/latest/package-search-index.js b/latest/package-search-index.js new file mode 100644 index 0000000..ab45b8a --- /dev/null +++ b/latest/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"dev.relism.flash"},{"l":"dev.relism.flash.api.multipart"},{"l":"dev.relism.flash.exceptions"},{"l":"dev.relism.flash.extension"},{"l":"dev.relism.flash.http"},{"l":"dev.relism.flash.models"},{"l":"dev.relism.flash.routing"},{"l":"dev.relism.flash.routing.routers.fastpathrouter"},{"l":"dev.relism.flash.routing.routers.radix"},{"l":"dev.relism.flash.template"}];updateSearchResults(); \ No newline at end of file diff --git a/latest/resources/glass.png b/latest/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/latest/resources/glass.png differ diff --git a/latest/resources/x.png b/latest/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/latest/resources/x.png differ diff --git a/latest/script-dir/jquery-3.7.1.min.js b/latest/script-dir/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/latest/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(x){x.ui=x.ui||{};x.ui.version="1.14.1";var n,s,C,k,o,l,a,r,u,i,h=0,c=Array.prototype.hasOwnProperty,d=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l,a={},r=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?x.error("Invalid widget name: "+t):(l=r+"-"+t,e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[l.toLowerCase()]=function(t){return!!x.data(t,l)},x[r]=x[r]||{},s=x[r][t],n=x[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n)},x.widget.extend=function(t){for(var e,i,s=d.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n{var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})})(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+a.eventNamespace,t=t[2];t?l.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}}),x.widget;function E(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function T(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,k=Math.abs,o=/left|center|right/,l=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,r=/^\w+/,u=/%$/,i=x.fn.position,x.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=x("
    ")).children()[0],x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(k(s),k(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})):i.apply(this,arguments)},x.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,l=n-o,a=o+e.collisionWidth-s-n;s",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
      ").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=x("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
      ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),x.ui.autocomplete}); \ No newline at end of file diff --git a/latest/script.js b/latest/script.js new file mode 100644 index 0000000..bb9c8a2 --- /dev/null +++ b/latest/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.getElementById(tableId + '.tabpanel') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/latest/search-page.js b/latest/search-page.js new file mode 100644 index 0000000..540c90f --- /dev/null +++ b/latest/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
      ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
      ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
      ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
      " + col1 + "
      ").appendTo(table); + if (category !== "modules") { + $("
      " + col2 + "
      ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
      ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
      ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/latest/search.html b/latest/search.html new file mode 100644 index 0000000..1126540 --- /dev/null +++ b/latest/search.html @@ -0,0 +1,77 @@ + + + + +Search (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
      + +
      +
      +

      Search

      +
      + + +
      +Additional resources +
      +
      +
      +

      The help page provides an introduction to the scope and syntax of JavaDoc search.

      +

      You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

      +

      The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

      +link +

      + +

      +
      +

      Loading search index...

      + +
      +
      +
      + +
      +
      +
      + + diff --git a/latest/search.js b/latest/search.js new file mode 100644 index 0000000..d398670 --- /dev/null +++ b/latest/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + categories[item.category] + "
    • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
      " + + idx.d + "
      "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" " + messages.linkIcon +""); + } + }); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/latest/serialized-form.html b/latest/serialized-form.html new file mode 100644 index 0000000..d395614 --- /dev/null +++ b/latest/serialized-form.html @@ -0,0 +1,96 @@ + + + + +Serialized Form (flash-parent 2.0.0 API) + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Serialized Form

      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/latest/stylesheet.css b/latest/stylesheet.css new file mode 100644 index 0000000..f71489f --- /dev/null +++ b/latest/stylesheet.css @@ -0,0 +1,1272 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/latest/tag-search-index.js b/latest/tag-search-index.js new file mode 100644 index 0000000..efcc0b3 --- /dev/null +++ b/latest/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Default error handlers","h":"class dev.relism.flash.extension.FlashApp","d":"Section","u":"dev/relism/flash/extension/FlashApp.html#default-error-handlers-heading"},{"l":"Default error handlers","h":"class dev.relism.flash.routing.AbstractRouter","d":"Section","u":"dev/relism/flash/routing/AbstractRouter.html#default-error-handlers-heading"},{"l":"Dev mode","h":"class dev.relism.flash.Flash","d":"Section","u":"dev/relism/flash/Flash.html#dev-mode-heading"},{"l":"Eager vs lazy registration","h":"class dev.relism.flash.extension.FlashContext","d":"Section","u":"dev/relism/flash/extension/FlashContext.html#eager-vs-lazy-registration-heading"},{"l":"Example","h":"interface dev.relism.flash.extension.FlashExtension","d":"Section","u":"dev/relism/flash/extension/FlashExtension.html#example-heading"},{"l":"Handler abstraction chain","h":"record class dev.relism.flash.extension.RouteEvent","d":"Section","u":"dev/relism/flash/extension/RouteEvent.html#handler-abstraction-chain-heading"},{"l":"Lifecycle","h":"class dev.relism.flash.models.RequestHandler","d":"Section","u":"dev/relism/flash/models/RequestHandler.html#lifecycle-heading"},{"l":"Lifetime contract — read carefully","h":"class dev.relism.flash.models.HeaderMap","d":"Section","u":"dev/relism/flash/models/HeaderMap.html#lifetime-contract-read-carefully-heading"},{"l":"Middleware chain","h":"record class dev.relism.flash.extension.RouteEvent","d":"Section","u":"dev/relism/flash/extension/RouteEvent.html#middleware-chain-heading"},{"l":"Priority and middleware ordering","h":"interface dev.relism.flash.extension.FlashExtension","d":"Section","u":"dev/relism/flash/extension/FlashExtension.html#priority-and-middleware-ordering-heading"},{"l":"Serialized Form","h":"","u":"serialized-form.html"},{"l":"Service access","h":"class dev.relism.flash.models.RequestHandler","d":"Section","u":"dev/relism/flash/models/RequestHandler.html#service-access-heading"},{"l":"Startup sequence (both #start() and #startAndBlock())","h":"class dev.relism.flash.extension.FlashApp","d":"Section","u":"dev/relism/flash/extension/FlashApp.html#startup-sequence-both-start-and-startandblock--heading"}];updateSearchResults(); \ No newline at end of file diff --git a/latest/type-search-index.js b/latest/type-search-index.js new file mode 100644 index 0000000..42d13f7 --- /dev/null +++ b/latest/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"dev.relism.flash.routing","l":"AbstractRouter"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"dev.relism.flash.extension","l":"AnnotationProcessor"},{"p":"dev.relism.flash.template","l":"ByteTemplate"},{"p":"dev.relism.flash","l":"Flash.Commons"},{"p":"dev.relism.flash.routing","l":"CONNECT"},{"p":"dev.relism.flash.http","l":"ContentType"},{"p":"dev.relism.flash","l":"Flash.Middlewares.CorsConfig"},{"p":"dev.relism.flash.routing","l":"DELETE"},{"p":"dev.relism.flash.template","l":"ErrorPages"},{"p":"dev.relism.flash.routing","l":"AbstractRouter.ExceptionHandler"},{"p":"dev.relism.flash.extension","l":"ExtensionPhase"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathRouterImpl"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews"},{"p":"dev.relism.flash","l":"Flash"},{"p":"dev.relism.flash.extension","l":"FlashApp"},{"p":"dev.relism.flash.extension","l":"FlashConfiguration"},{"p":"dev.relism.flash.extension","l":"FlashContext"},{"p":"dev.relism.flash.extension","l":"FlashExtension"},{"p":"dev.relism.flash.extension","l":"FlashRegistrar"},{"p":"dev.relism.flash.extension","l":"FlashScope"},{"p":"dev.relism.flash.models","l":"SimpleHandler.FunctionalHandler"},{"p":"dev.relism.flash.routing","l":"GET"},{"p":"dev.relism.flash.routing","l":"HEAD"},{"p":"dev.relism.flash.models","l":"HeaderMap"},{"p":"dev.relism.flash.exceptions","l":"HttpException"},{"p":"dev.relism.flash.http","l":"HttpMethod"},{"p":"dev.relism.flash.http","l":"HttpStatus"},{"p":"dev.relism.flash.exceptions","l":"InitializationException"},{"p":"dev.relism.flash","l":"Main"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.MethodPathByteView"},{"p":"dev.relism.flash.routing","l":"Middleware"},{"p":"dev.relism.flash","l":"Flash.Middlewares"},{"p":"dev.relism.flash.api.multipart","l":"Multipart"},{"p":"dev.relism.flash.routing","l":"OPTIONS"},{"p":"dev.relism.flash.api.multipart","l":"Part"},{"p":"dev.relism.flash.routing","l":"PATCH"},{"p":"dev.relism.flash.models","l":"PathParams"},{"p":"dev.relism.flash.routing","l":"PathUtils"},{"p":"dev.relism.flash.routing","l":"POST"},{"p":"dev.relism.flash.routing","l":"PURGE"},{"p":"dev.relism.flash.routing","l":"PUT"},{"p":"dev.relism.flash.models","l":"QueryParams"},{"p":"dev.relism.flash.routing.routers.radix","l":"RadixPathRouterImpl"},{"p":"dev.relism.flash.models","l":"Request"},{"p":"dev.relism.flash.models","l":"RequestBody"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.RequestByteView"},{"p":"dev.relism.flash.models","l":"RequestHandler"},{"p":"dev.relism.flash.models","l":"RequestHelper"},{"p":"dev.relism.flash.models","l":"RequestLine"},{"p":"dev.relism.flash","l":"RequestParser"},{"p":"dev.relism.flash.models","l":"Response"},{"p":"dev.relism.flash.routing","l":"Route"},{"p":"dev.relism.flash.extension","l":"RouteEvent"},{"p":"dev.relism.flash.extension","l":"RouteListener"},{"p":"dev.relism.flash.routing","l":"Routes"},{"p":"dev.relism.flash","l":"ServerHandle"},{"p":"dev.relism.flash.models","l":"SimpleHandler"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.SocketByteView"},{"p":"dev.relism.flash.routing.routers.fastpathrouter","l":"FastPathViews.StringByteView"},{"p":"dev.relism.flash.routing","l":"TRACE"}];updateSearchResults(); \ No newline at end of file