refactor: rename packages and files to use 'flash' prefix for consistency
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package dev.relism;
|
||||
|
||||
/**
|
||||
* Global Flash constants and runtime environment flags.
|
||||
*
|
||||
* <h3>Dev mode</h3>
|
||||
* Set via JVM property {@code -Dflash.env=dev} or environment variable {@code FLASH_ENV=dev}.
|
||||
* Checked once at class load — zero runtime overhead.
|
||||
*
|
||||
* <p>Dev mode enables:
|
||||
* <ul>
|
||||
* <li>HTML error pages with full stack traces (default: JSON generic responses in prod)</li>
|
||||
* <li>Template cache disabled in {@code flash-ext-view-thymeleaf}</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>Extensions can read {@link #DEV} to branch behavior without re-implementing the detection:
|
||||
* <pre>{@code
|
||||
* if (Flash.DEV) log.debug("Verbose OIDC debug output enabled");
|
||||
* }</pre>
|
||||
*/
|
||||
public final class Flash {
|
||||
|
||||
private Flash() {}
|
||||
|
||||
public static final String VERSION = "5.0.0-dev";
|
||||
|
||||
/**
|
||||
* {@code true} when running in dev mode.
|
||||
* Set via {@code -Dflash.env=dev} (JVM property) or {@code FLASH_ENV=dev} (env var).
|
||||
* JVM property takes precedence.
|
||||
*/
|
||||
public static final boolean DEV;
|
||||
|
||||
static {
|
||||
String prop = System.getProperty("flash.env");
|
||||
DEV = "dev".equalsIgnoreCase(prop != null ? prop : System.getenv("FLASH_ENV"));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
@@ -0,0 +1,88 @@
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* Global Flash constants and runtime environment flags.
|
||||
*
|
||||
* <h3>Dev mode</h3>
|
||||
* Set via JVM property {@code -Dflash.env=dev} or environment variable {@code FLASH_ENV=dev}.
|
||||
* Checked once at classloading — zero runtime overhead.
|
||||
*
|
||||
* <p>Dev mode enables:
|
||||
* <ul>
|
||||
* <li>HTML error pages with full stack traces (default: JSON generic responses in prod)</li>
|
||||
* <li>Template cache disabled in {@code flash-ext-view-thymeleaf}</li>
|
||||
* </ul>
|
||||
*
|
||||
*/
|
||||
public final class Flash {
|
||||
|
||||
private Flash() {}
|
||||
|
||||
public static final String VERSION = "5.0.0-dev";
|
||||
public static final Commons commons;
|
||||
|
||||
public static final boolean DEV;
|
||||
|
||||
static {
|
||||
String prop = System.getProperty("flash.env");
|
||||
DEV = "dev".equalsIgnoreCase(prop != null ? prop : System.getenv("FLASH_ENV"));
|
||||
commons = new Commons();
|
||||
}
|
||||
|
||||
public static class Commons {
|
||||
public final Middlewares middlewares = new Middlewares();
|
||||
}
|
||||
|
||||
public static class Middlewares {
|
||||
|
||||
public static class CorsConfig {
|
||||
private String origin = "*";
|
||||
private List<String> methods = new ArrayList<>(List.of("GET","POST","PUT","DELETE","OPTIONS"));
|
||||
private List<String> headers = new ArrayList<>(List.of("*"));
|
||||
private boolean credentials = false;
|
||||
|
||||
public CorsConfig origin(String v) { this.origin = v; return this; }
|
||||
public CorsConfig methods(String... v) { this.methods = new ArrayList<>(List.of(v)); return this; }
|
||||
public CorsConfig headers(String... v) { this.headers = new ArrayList<>(List.of(v)); return this; }
|
||||
public CorsConfig credentials(boolean v) { this.credentials = v; return this; }
|
||||
|
||||
public String origin() { return origin; }
|
||||
public List<String> methods() { return methods; }
|
||||
public List<String> headers() { return headers; }
|
||||
public boolean credentials() { return credentials; }
|
||||
}
|
||||
|
||||
public Middleware cors(CorsConfig config) {
|
||||
return next -> (req, res) -> {
|
||||
res.header("Access-Control-Allow-Origin", config.origin())
|
||||
.header("Access-Control-Allow-Methods", String.join(", ", config.methods()));
|
||||
|
||||
if (!config.headers().isEmpty()) {
|
||||
res.header("Access-Control-Allow-Headers", String.join(", ", config.headers()));
|
||||
}
|
||||
if (config.credentials()) {
|
||||
res.header("Access-Control-Allow-Credentials", "true");
|
||||
}
|
||||
return next.handle(req, res);
|
||||
};
|
||||
}
|
||||
|
||||
// stile lambda
|
||||
public Middleware cors(Consumer<CorsConfig> fn) {
|
||||
CorsConfig cfg = new CorsConfig(); // default già settati
|
||||
fn.accept(cfg);
|
||||
return cors(cfg);
|
||||
}
|
||||
|
||||
// default
|
||||
public Middleware cors() {
|
||||
return cors(new CorsConfig());
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
-7
@@ -1,11 +1,14 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.Response;
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.http.HttpStatus;
|
||||
import dev.relism.models.*;
|
||||
import dev.relism.extension.FlashConfiguration;
|
||||
import dev.relism.routing.AbstractRouter;
|
||||
import dev.relism.flash.http.ContentType;
|
||||
import dev.relism.flash.http.HttpStatus;
|
||||
import dev.relism.flash.extension.FlashConfiguration;
|
||||
import dev.relism.flash.routing.AbstractRouter;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -28,7 +31,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
* executor, and the keep-alive accept loop. Routing is delegated to a single
|
||||
* {@link AbstractRouter}.
|
||||
*
|
||||
* <p>Package-private : use {@link dev.relism.extension.FlashApp} as the single
|
||||
* <p>Package-private : use {@link FlashApp} as the single
|
||||
* entry point.
|
||||
*/
|
||||
@Slf4j
|
||||
+6
-6
@@ -1,10 +1,10 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.HeaderMap;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestLine;
|
||||
import dev.relism.routing.routers.fastpathrouter.FastPathViews;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.HeaderMap;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestLine;
|
||||
import dev.relism.flash.routing.routers.fastpathrouter.FastPathViews;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
+5
-4
@@ -1,14 +1,15 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.extension.FlashConfiguration;
|
||||
import dev.relism.routing.AbstractRouter;
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.extension.FlashConfiguration;
|
||||
import dev.relism.flash.routing.AbstractRouter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
* Public handle to the underlying HTTP transport. Returned by {@link #create}
|
||||
* so that {@link dev.relism.extension.FlashApp} can start and stop the server
|
||||
* so that {@link FlashApp} can start and stop the server
|
||||
* without holding a direct reference to the package-private {@link HttpServer}.
|
||||
*/
|
||||
public interface ServerHandle {
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.api.multipart;
|
||||
package dev.relism.flash.api.multipart;
|
||||
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.flash.models.Request;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.api.multipart;
|
||||
package dev.relism.flash.api.multipart;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.exceptions;
|
||||
package dev.relism.flash.exceptions;
|
||||
|
||||
/**
|
||||
* Runtime exception carrying an HTTP status code. Extensions map this to a
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.exceptions;
|
||||
package dev.relism.flash.exceptions;
|
||||
|
||||
/**
|
||||
* Thrown at boot time when Flash detects a configuration or registration error.
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
/**
|
||||
* Semantic execution phases for {@link FlashExtension#priority()}.
|
||||
+10
-10
@@ -1,14 +1,14 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.Flash;
|
||||
import dev.relism.ServerHandle;
|
||||
import dev.relism.exceptions.InitializationException;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.routing.AbstractRouter;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.routing.routers.fastpathrouter.FastPathRouterImpl;
|
||||
import dev.relism.flash.Flash;
|
||||
import dev.relism.flash.ServerHandle;
|
||||
import dev.relism.flash.exceptions.InitializationException;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
import dev.relism.flash.routing.AbstractRouter;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
import dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.IOException;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Value;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
/**
|
||||
* Two-phase contract for all Flash extensions.
|
||||
+8
-8
@@ -1,12 +1,12 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.exceptions.InitializationException;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.routing.Route;
|
||||
import dev.relism.routing.Routes;
|
||||
import dev.relism.flash.exceptions.InitializationException;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
import dev.relism.flash.routing.Route;
|
||||
import dev.relism.flash.routing.Routes;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+6
-6
@@ -1,10 +1,10 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.routing.PathUtils;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
import dev.relism.flash.routing.PathUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.exceptions.InitializationException;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.routing.Routes;
|
||||
import dev.relism.flash.exceptions.InitializationException;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.routing.Routes;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.extension;
|
||||
package dev.relism.flash.extension;
|
||||
|
||||
/**
|
||||
* Observer notified once for each route registered on a {@link FlashApp} or {@link FlashScope}.
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import lombok.Getter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import lombok.NoArgsConstructor;
|
||||
+3
-2
@@ -1,5 +1,6 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.flash.routing.AbstractRouter;
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
@@ -23,7 +24,7 @@ public class PathParams {
|
||||
|
||||
/**
|
||||
* Injects path parameters into a request. The cross-package bridge from
|
||||
* {@link dev.relism.routing.AbstractRouter} — keeps {@link Request#setPathParams}
|
||||
* {@link AbstractRouter} — keeps {@link Request#setPathParams}
|
||||
* package-private while allowing the router to set params without a public setter.
|
||||
*/
|
||||
public static void inject(Request request, PathParams params) {
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
|
||||
+4
-3
@@ -1,7 +1,8 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.flash.RequestParser;
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
@@ -14,7 +15,7 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Immutable view of an incoming HTTP/1.1 request. Constructed by {@link dev.relism.RequestParser}
|
||||
* Immutable view of an incoming HTTP/1.1 request. Constructed by {@link RequestParser}
|
||||
* and passed directly to route handlers; never modified after creation (path/query params are
|
||||
* injected once by the router before the handler runs).
|
||||
*
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
+7
-5
@@ -1,14 +1,16 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.extension.FlashContext;
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.extension.FlashContext;
|
||||
import dev.relism.flash.routing.Route;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Base class for class-based route handlers.
|
||||
*
|
||||
* <p>Declare the route with {@link dev.relism.routing.Route @Route} or a shorthand such as
|
||||
* {@code @GET("/path")}, then register via {@link dev.relism.extension.FlashApp#scan}.
|
||||
* <p>Declare the route with {@link Route @Route} or a shorthand such as
|
||||
* {@code @GET("/path")}, then register via {@link FlashApp#scan}.
|
||||
* For ad-hoc routes use the fluent API ({@code app.get(path, handler)} or with middleware).
|
||||
*
|
||||
* <h3>Lifecycle</h3>
|
||||
@@ -47,7 +49,7 @@ public abstract class RequestHandler {
|
||||
* Injects the {@link FlashContext} and triggers {@link #onInit()}.
|
||||
*
|
||||
* <p><b>Infrastructure method</b> — do not call from user code.
|
||||
* Use {@link dev.relism.extension.FlashApp#scan} instead.
|
||||
* Use {@link FlashApp#scan} instead.
|
||||
*/
|
||||
public final void bind(FlashContext ctx) {
|
||||
this.ctx = ctx;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.exceptions.HttpException;
|
||||
import dev.relism.flash.exceptions.HttpException;
|
||||
|
||||
/**
|
||||
* Typed accessors for request parameters. All methods throw
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import lombok.ToString;
|
||||
import lombok.Value;
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.http.HttpStatus;
|
||||
import dev.relism.flash.http.ContentType;
|
||||
import dev.relism.flash.http.HttpStatus;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
/**
|
||||
* Delegates {@link #handle} to a {@link FunctionalHandler} so lambdas can be used without
|
||||
+12
-10
@@ -1,18 +1,20 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.Flash;
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.models.*;
|
||||
import dev.relism.flash.routing.routers.fastpathrouter.FastPathRouterImpl;
|
||||
import dev.relism.flash.Flash;
|
||||
import dev.relism.flash.http.ContentType;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.models.*;
|
||||
import dev.relism.template.ErrorPages;
|
||||
import dev.relism.flash.template.ErrorPages;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Base router contract. Owns error handlers and the compile-time middleware
|
||||
* wrapping logic. The only concrete implementation is
|
||||
* {@link dev.relism.routing.routers.fastpathrouter.FastPathRouterImpl}.
|
||||
* {@link FastPathRouterImpl}.
|
||||
*
|
||||
* <p>All middleware composition happens once at boot time; the hot-path sees
|
||||
* only a plain {@link RequestHandler} call with zero allocation overhead.
|
||||
@@ -22,10 +24,10 @@ import java.nio.charset.StandardCharsets;
|
||||
* <li><b>Dev mode</b> ({@code -Dflash.env=dev}): rich HTML pages with full stack traces.</li>
|
||||
* <li><b>Prod mode</b> (default): generic JSON — no internal detail leaked to clients.</li>
|
||||
* </ul>
|
||||
* Override via {@link dev.relism.extension.FlashApp#onNotFound} /
|
||||
* {@link dev.relism.extension.FlashApp#onException}.
|
||||
* Override via {@link FlashApp#onNotFound} /
|
||||
* {@link FlashApp#onException}.
|
||||
*
|
||||
* <p><b>Registration</b>: use {@link dev.relism.extension.FlashApp} — the single
|
||||
* <p><b>Registration</b>: use {@link FlashApp} — the single
|
||||
* public registration API. {@link #doRegister} is an infrastructure method.
|
||||
*/
|
||||
public abstract class AbstractRouter {
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+7
-5
@@ -1,7 +1,9 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.Response;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
|
||||
/**
|
||||
* Stateless interceptor applied around a {@link RequestHandler}.
|
||||
@@ -10,8 +12,8 @@ import dev.relism.models.SimpleHandler;
|
||||
* 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.
|
||||
*
|
||||
* <p>Middleware is intentionally stateless — it can read {@link dev.relism.models.Request},
|
||||
* write to {@link dev.relism.models.Response}, and decide whether to call {@code next} or
|
||||
* <p>Middleware is intentionally stateless — it can read {@link Request},
|
||||
* write to {@link Response}, and decide whether to call {@code next} or
|
||||
* short-circuit. Shared state between layers belongs in HDI handler chains, not here.
|
||||
*
|
||||
* <pre>{@code
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
public class PathUtils {
|
||||
/**
|
||||
+4
-3
@@ -1,6 +1,7 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -8,7 +9,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* HTTP method and path for a class-based {@link dev.relism.models.RequestHandler}.
|
||||
* HTTP method and path for a class-based {@link RequestHandler}.
|
||||
* Path is relative to the mount namespace (e.g. {@code path = "/profile"} under {@code /api}
|
||||
* → {@code /api/profile}).
|
||||
*
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
+5
-5
@@ -1,14 +1,14 @@
|
||||
package dev.relism.routing.routers.fastpathrouter;
|
||||
package dev.relism.flash.routing.routers.fastpathrouter;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.fpr.core.FastPathRouter;
|
||||
import dev.relism.fpr.core.MatchResult;
|
||||
import dev.relism.fpr.core.RouterBuilder;
|
||||
import dev.relism.fpr.core.dsl.StringRouteParser;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.routing.AbstractRouter;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.routing.AbstractRouter;
|
||||
|
||||
/**
|
||||
* Router backed by the {@code fpr-core} byte-level state machine. Routes are compiled lazily
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.routing.routers.fastpathrouter;
|
||||
package dev.relism.flash.routing.routers.fastpathrouter;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.relism.flash.routing.routers.radix;
|
||||
|
||||
public class RadixPathRouterImpl {
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.template;
|
||||
package dev.relism.flash.template;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
package dev.relism.template;
|
||||
package dev.relism.flash.template;
|
||||
|
||||
import dev.relism.Flash;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestLine;
|
||||
import dev.relism.flash.Flash;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestLine;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -1,5 +0,0 @@
|
||||
package dev.relism.routing.routers.radix;
|
||||
|
||||
public class RadixPathRouterImpl {
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+5
-5
@@ -1,9 +1,9 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.extension.FlashApp;
|
||||
import dev.relism.extension.FlashConfiguration;
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.models.Response;
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.extension.FlashConfiguration;
|
||||
import dev.relism.flash.http.ContentType;
|
||||
import dev.relism.flash.models.Response;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
+3
-6
@@ -1,9 +1,7 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.extension.FlashApp;
|
||||
import dev.relism.extension.FlashConfiguration;
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.models.Response;
|
||||
import dev.relism.flash.extension.FlashApp;
|
||||
import dev.relism.flash.extension.FlashConfiguration;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -15,7 +13,6 @@ import java.io.OutputStream;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism;
|
||||
package dev.relism.flash;
|
||||
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.flash.models.Request;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
package dev.relism.api.multipart;
|
||||
package dev.relism.flash.api.multipart;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.HeaderMap;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestLine;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.HeaderMap;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestLine;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.http;
|
||||
package dev.relism.flash.http;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import org.junit.jupiter.api.Test;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import org.junit.jupiter.api.Test;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import org.junit.jupiter.api.Test;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import dev.relism.http.ContentType;
|
||||
import dev.relism.flash.http.ContentType;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.models;
|
||||
package dev.relism.flash.models;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+6
-6
@@ -1,10 +1,10 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.Response;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.Response;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.routing;
|
||||
package dev.relism.flash.routing;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+8
-8
@@ -1,12 +1,12 @@
|
||||
package dev.relism.routing.routers.fastpathrouter;
|
||||
package dev.relism.flash.routing.routers.fastpathrouter;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.HeaderMap;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestHandler;
|
||||
import dev.relism.models.RequestLine;
|
||||
import dev.relism.models.SimpleHandler;
|
||||
import dev.relism.routing.Middleware;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.HeaderMap;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestHandler;
|
||||
import dev.relism.flash.models.RequestLine;
|
||||
import dev.relism.flash.models.SimpleHandler;
|
||||
import dev.relism.flash.routing.Middleware;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.routing.routers.fastpathrouter;
|
||||
package dev.relism.flash.routing.routers.fastpathrouter;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.relism.template;
|
||||
package dev.relism.flash.template;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
+6
-6
@@ -1,10 +1,10 @@
|
||||
package dev.relism.template;
|
||||
package dev.relism.flash.template;
|
||||
|
||||
import dev.relism.http.HttpMethod;
|
||||
import dev.relism.models.HeaderMap;
|
||||
import dev.relism.models.Request;
|
||||
import dev.relism.models.RequestLine;
|
||||
import dev.relism.routing.routers.fastpathrouter.FastPathViews;
|
||||
import dev.relism.flash.http.HttpMethod;
|
||||
import dev.relism.flash.models.HeaderMap;
|
||||
import dev.relism.flash.models.Request;
|
||||
import dev.relism.flash.models.RequestLine;
|
||||
import dev.relism.flash.routing.routers.fastpathrouter.FastPathViews;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
Reference in New Issue
Block a user