iface) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isWrapperFor(Class> iface) {
+ return false;
+ }
+
+ @Override
+ public java.io.PrintWriter getLogWriter() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setLogWriter(java.io.PrintWriter out) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setLoginTimeout(int seconds) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public int getLoginTimeout() {
+ return 0;
+ }
+
+ @Override
+ public java.util.logging.Logger getParentLogger() {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+}
diff --git a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonExtension.java b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonExtension.java
similarity index 94%
rename from flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonExtension.java
rename to flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonExtension.java
index dc9df30..206f2f8 100644
--- a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonExtension.java
+++ b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonExtension.java
@@ -1,11 +1,11 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
-import dev.relism.extension.FlashContext;
-import dev.relism.extension.FlashExtension;
-import dev.relism.routing.Middleware;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.extension.FlashExtension;
+import dev.relism.flash.routing.Middleware;
/**
* Registers JSON support into the Flash extension layer.
diff --git a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonMiddleware.java b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonMiddleware.java
similarity index 91%
rename from flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonMiddleware.java
rename to flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonMiddleware.java
index 4c877df..3970158 100644
--- a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/JacksonMiddleware.java
+++ b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/JacksonMiddleware.java
@@ -1,10 +1,10 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.relism.http.ContentType;
-import dev.relism.models.Response;
-import dev.relism.routing.Middleware;
+import dev.relism.flash.http.ContentType;
+import dev.relism.flash.models.Response;
+import dev.relism.flash.routing.Middleware;
/**
* Outbound JSON marshalling middleware for class-based and lambda routes.
diff --git a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/Json.java b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/Json.java
similarity index 95%
rename from flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/Json.java
rename to flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/Json.java
index 3a0b7c4..3b3d0f5 100644
--- a/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/ext/jackson/Json.java
+++ b/flash-extensions/flash-ext-jackson/src/main/java/dev/relism/flash/ext/jackson/Json.java
@@ -1,11 +1,11 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.relism.exceptions.HttpException;
-import dev.relism.http.ContentType;
-import dev.relism.models.Request;
-import dev.relism.models.Response;
+import dev.relism.flash.exceptions.HttpException;
+import dev.relism.flash.http.ContentType;
+import dev.relism.flash.models.Request;
+import dev.relism.flash.models.Response;
/**
* Thread-safe JSON toolbox. Single point of access for all JSON I/O operations
diff --git a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonExtensionTest.java b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonExtensionTest.java
similarity index 81%
rename from flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonExtensionTest.java
rename to flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonExtensionTest.java
index 39abbc9..1518d08 100644
--- a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonExtensionTest.java
+++ b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonExtensionTest.java
@@ -1,11 +1,12 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.relism.extension.FlashContext;
-import dev.relism.http.ContentType;
-import dev.relism.models.Request;
-import dev.relism.models.RequestHandler;
-import dev.relism.models.Response;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.models.SimpleHandler;
+import dev.relism.flash.http.ContentType;
+import dev.relism.flash.models.Request;
+import dev.relism.flash.models.RequestHandler;
+import dev.relism.flash.models.Response;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
@@ -41,7 +42,7 @@ class JacksonExtensionTest {
}
};
RequestHandler wrapped = new RequestHandler() {
- private final dev.relism.models.SimpleHandler.FunctionalHandler delegate = ext.autoJson().wrap(next);
+ private final SimpleHandler.FunctionalHandler delegate = ext.autoJson().wrap(next);
@Override
public Object handle(Request request, Response response) throws Exception {
diff --git a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonMiddlewareTest.java b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonMiddlewareTest.java
similarity index 90%
rename from flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonMiddlewareTest.java
rename to flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonMiddlewareTest.java
index dc7c456..4a7eb18 100644
--- a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JacksonMiddlewareTest.java
+++ b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JacksonMiddlewareTest.java
@@ -1,10 +1,11 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.relism.http.ContentType;
-import dev.relism.models.Request;
-import dev.relism.models.RequestHandler;
-import dev.relism.models.Response;
+import dev.relism.flash.models.SimpleHandler;
+import dev.relism.flash.http.ContentType;
+import dev.relism.flash.models.Request;
+import dev.relism.flash.models.RequestHandler;
+import dev.relism.flash.models.Response;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
@@ -72,7 +73,7 @@ class JacksonMiddlewareTest {
}
};
return new RequestHandler() {
- private final dev.relism.models.SimpleHandler.FunctionalHandler delegate = mw.autoJson().wrap(next);
+ private final SimpleHandler.FunctionalHandler delegate = mw.autoJson().wrap(next);
@Override
public Object handle(Request request, Response response) throws Exception {
diff --git a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JsonTest.java b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JsonTest.java
similarity index 90%
rename from flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JsonTest.java
rename to flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JsonTest.java
index 350c30e..982ebfc 100644
--- a/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/ext/jackson/JsonTest.java
+++ b/flash-extensions/flash-ext-jackson/src/test/java/dev/relism/flash/ext/jackson/JsonTest.java
@@ -1,15 +1,15 @@
-package dev.relism.ext.jackson;
+package dev.relism.flash.ext.jackson;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.relism.exceptions.HttpException;
-import dev.relism.http.ContentType;
-import dev.relism.http.HttpMethod;
-import dev.relism.models.HeaderMap;
-import dev.relism.models.Request;
-import dev.relism.models.RequestLine;
-import dev.relism.models.Response;
-import dev.relism.routing.routers.fastpathrouter.FastPathViews;
+import dev.relism.flash.exceptions.HttpException;
+import dev.relism.flash.http.ContentType;
+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.models.Response;
+import dev.relism.flash.routing.routers.fastpathrouter.FastPathViews;
import org.junit.jupiter.api.Test;
import java.nio.charset.StandardCharsets;
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Bucket.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Bucket.java
similarity index 96%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Bucket.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Bucket.java
index 4f60a51..9809c47 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Bucket.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Bucket.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
import java.util.concurrent.atomic.AtomicLong;
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/BucketStore.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/BucketStore.java
similarity index 96%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/BucketStore.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/BucketStore.java
index ad43b12..91854cb 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/BucketStore.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/BucketStore.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Guard.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Guard.java
similarity index 89%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Guard.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Guard.java
index 8c36179..232f8d5 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Guard.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Guard.java
@@ -1,13 +1,15 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.routing.Middleware;
+import dev.relism.flash.exceptions.InitializationException;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.routing.Middleware;
import java.util.concurrent.TimeUnit;
/**
* Manual rate-limit guard for lambda routes.
*
- * Available via {@link dev.relism.extension.FlashContext}:
+ *
Available via {@link FlashContext}:
*
{@code
* Guard guard = ctx.require(Guard.class);
* }
@@ -23,7 +25,7 @@ import java.util.concurrent.TimeUnit;
* }
*
* The resolver name is looked up once here (at wiring time, not on each request).
- * If the name is not registered, {@link dev.relism.exceptions.InitializationException}
+ * If the name is not registered, {@link InitializationException}
* is thrown immediately.
*/
public final class Guard {
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/KeyResolver.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/KeyResolver.java
similarity index 88%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/KeyResolver.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/KeyResolver.java
index ef4bb06..7fd678a 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/KeyResolver.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/KeyResolver.java
@@ -1,6 +1,6 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.models.Request;
+import dev.relism.flash.models.Request;
/**
* Extracts a partition key from an incoming request.
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Limit.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Limit.java
similarity index 84%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Limit.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Limit.java
index ea4b484..2437dac 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/Limit.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/Limit.java
@@ -1,4 +1,7 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
+
+import dev.relism.flash.exceptions.InitializationException;
+import dev.relism.flash.models.RequestHandler;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -7,11 +10,11 @@ import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;
/**
- * Applies a rate limit to a class-based {@link dev.relism.models.RequestHandler}.
+ * Applies a rate limit to a class-based {@link RequestHandler}.
*
*
The annotation is processed at boot time by the {@link LimiterExtension} annotation
* processor. If {@link #key()} names a resolver that was never registered,
- * startup fails immediately with {@link dev.relism.exceptions.InitializationException}.
+ * startup fails immediately with {@link InitializationException}.
*
*
{@code
* // 100 req/s per client IP — fixed window
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitConfig.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitConfig.java
similarity index 92%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitConfig.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitConfig.java
index 2e63f19..b3393f9 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitConfig.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitConfig.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
/**
* Immutable configuration snapshot for a single rate-limit rule.
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitStrategy.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitStrategy.java
similarity index 89%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitStrategy.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitStrategy.java
index c36792f..73852b0 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimitStrategy.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimitStrategy.java
@@ -1,8 +1,8 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.ext.limiter.strategy.FixedWindowStrategy;
-import dev.relism.ext.limiter.strategy.SlidingWindowStrategy;
-import dev.relism.ext.limiter.strategy.TokenBucketStrategy;
+import dev.relism.flash.ext.limiter.strategy.FixedWindowStrategy;
+import dev.relism.flash.ext.limiter.strategy.SlidingWindowStrategy;
+import dev.relism.flash.ext.limiter.strategy.TokenBucketStrategy;
/**
* Enumeration of built-in rate-limit algorithms. Each constant is a factory
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterConfig.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterConfig.java
similarity index 97%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterConfig.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterConfig.java
index c2cb1c5..607db07 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterConfig.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterConfig.java
@@ -1,6 +1,6 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.exceptions.InitializationException;
+import dev.relism.flash.exceptions.InitializationException;
import java.net.InetSocketAddress;
import java.util.LinkedHashMap;
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterExtension.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterExtension.java
similarity index 89%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterExtension.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterExtension.java
index 896e43b..7e2bed6 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/LimiterExtension.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/LimiterExtension.java
@@ -1,14 +1,16 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.ext.openapi.OpenApiContributorRegistry;
-import dev.relism.ext.openapi.OpenApiOperationContribution;
-import dev.relism.ext.openapi.OpenApiResponseContribution;
-import dev.relism.extension.ExtensionPhase;
-import dev.relism.extension.FlashContext;
-import dev.relism.extension.FlashExtension;
-import dev.relism.extension.FlashRegistrar;
-import dev.relism.http.HttpStatus;
-import dev.relism.routing.Middleware;
+import dev.relism.flash.ext.openapi.OpenApiContributor;
+import dev.relism.flash.ext.openapi.OpenApiContributorRegistry;
+import dev.relism.flash.ext.openapi.OpenApiOperationContribution;
+import dev.relism.flash.ext.openapi.OpenApiResponseContribution;
+import dev.relism.flash.extension.AnnotationProcessor;
+import dev.relism.flash.extension.ExtensionPhase;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.extension.FlashExtension;
+import dev.relism.flash.extension.FlashRegistrar;
+import dev.relism.flash.http.HttpStatus;
+import dev.relism.flash.routing.Middleware;
import java.nio.charset.StandardCharsets;
import java.util.List;
@@ -21,7 +23,7 @@ import java.util.Map;
*
* - Creates a single {@link BucketStore} shared by all rules in this extension instance.
* - Provides a {@link Guard} in the {@link FlashContext} for manual use on lambda routes.
- * - Registers an {@link dev.relism.extension.AnnotationProcessor} for {@link Limit}:
+ *
- Registers an {@link AnnotationProcessor} for {@link Limit}:
* reads the annotation once per handler class at boot, resolves the key lambda
* fail-fast, then returns a pre-compiled middleware — zero map lookups at request time.
*
@@ -162,9 +164,9 @@ public final class LimiterExtension implements FlashExtension {
static void register(FlashContext ctx) {
ctx.find(OpenApiContributorRegistry.class)
- .ifPresent(registry -> registry.add(new dev.relism.ext.openapi.OpenApiContributor() {
+ .ifPresent(registry -> registry.add(new OpenApiContributor() {
@Override
- public dev.relism.ext.openapi.OpenApiOperationContribution operationFor(Class> handlerClass) {
+ public OpenApiOperationContribution operationFor(Class> handlerClass) {
if (handlerClass.getAnnotation(Limit.class) == null) {
return OpenApiOperationContribution.builder().build();
}
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/RateLimitStrategy.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/RateLimitStrategy.java
similarity index 80%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/RateLimitStrategy.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/RateLimitStrategy.java
index b5584d6..5a35a71 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/RateLimitStrategy.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/RateLimitStrategy.java
@@ -1,4 +1,8 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
+
+import dev.relism.flash.ext.limiter.strategy.FixedWindowStrategy;
+import dev.relism.flash.ext.limiter.strategy.SlidingWindowStrategy;
+import dev.relism.flash.ext.limiter.strategy.TokenBucketStrategy;
/**
* Contract for a rate-limit algorithm. Implementations must be:
@@ -10,9 +14,9 @@ package dev.relism.ext.limiter;
*
* Called on every request — must not allocate on the hot path.
*
- * @see dev.relism.ext.limiter.strategy.FixedWindowStrategy
- * @see dev.relism.ext.limiter.strategy.SlidingWindowStrategy
- * @see dev.relism.ext.limiter.strategy.TokenBucketStrategy
+ * @see FixedWindowStrategy
+ * @see SlidingWindowStrategy
+ * @see TokenBucketStrategy
*/
public interface RateLimitStrategy {
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/FixedWindowStrategy.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/FixedWindowStrategy.java
similarity index 91%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/FixedWindowStrategy.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/FixedWindowStrategy.java
index 179aa85..736e49c 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/FixedWindowStrategy.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/FixedWindowStrategy.java
@@ -1,8 +1,8 @@
-package dev.relism.ext.limiter.strategy;
+package dev.relism.flash.ext.limiter.strategy;
-import dev.relism.ext.limiter.Bucket;
-import dev.relism.ext.limiter.LimitConfig;
-import dev.relism.ext.limiter.RateLimitStrategy;
+import dev.relism.flash.ext.limiter.Bucket;
+import dev.relism.flash.ext.limiter.LimitConfig;
+import dev.relism.flash.ext.limiter.RateLimitStrategy;
/**
* Fixed-window rate limit: allows up to {@link LimitConfig#limit()} requests per window of
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/SlidingWindowStrategy.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/SlidingWindowStrategy.java
similarity index 95%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/SlidingWindowStrategy.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/SlidingWindowStrategy.java
index 0e2dedd..fd8aabe 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/SlidingWindowStrategy.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/SlidingWindowStrategy.java
@@ -1,8 +1,8 @@
-package dev.relism.ext.limiter.strategy;
+package dev.relism.flash.ext.limiter.strategy;
-import dev.relism.ext.limiter.Bucket;
-import dev.relism.ext.limiter.LimitConfig;
-import dev.relism.ext.limiter.RateLimitStrategy;
+import dev.relism.flash.ext.limiter.Bucket;
+import dev.relism.flash.ext.limiter.LimitConfig;
+import dev.relism.flash.ext.limiter.RateLimitStrategy;
/**
* Sliding-window counter rate limit: approximates a true sliding window by interpolating
diff --git a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/TokenBucketStrategy.java b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/TokenBucketStrategy.java
similarity index 94%
rename from flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/TokenBucketStrategy.java
rename to flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/TokenBucketStrategy.java
index cb49430..39444ae 100644
--- a/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/ext/limiter/strategy/TokenBucketStrategy.java
+++ b/flash-extensions/flash-ext-limiter/src/main/java/dev/relism/flash/ext/limiter/strategy/TokenBucketStrategy.java
@@ -1,8 +1,8 @@
-package dev.relism.ext.limiter.strategy;
+package dev.relism.flash.ext.limiter.strategy;
-import dev.relism.ext.limiter.Bucket;
-import dev.relism.ext.limiter.LimitConfig;
-import dev.relism.ext.limiter.RateLimitStrategy;
+import dev.relism.flash.ext.limiter.Bucket;
+import dev.relism.flash.ext.limiter.LimitConfig;
+import dev.relism.flash.ext.limiter.RateLimitStrategy;
/**
* Token-bucket rate limit: tokens refill continuously at a rate of
diff --git a/flash-extensions/flash-ext-limiter/src/test/java/dev/relism/ext/limiter/LimiterOpenApiInteropTest.java b/flash-extensions/flash-ext-limiter/src/test/java/dev/relism/flash/ext/limiter/LimiterOpenApiInteropTest.java
similarity index 84%
rename from flash-extensions/flash-ext-limiter/src/test/java/dev/relism/ext/limiter/LimiterOpenApiInteropTest.java
rename to flash-extensions/flash-ext-limiter/src/test/java/dev/relism/flash/ext/limiter/LimiterOpenApiInteropTest.java
index 37b5aa4..168b4fc 100644
--- a/flash-extensions/flash-ext-limiter/src/test/java/dev/relism/ext/limiter/LimiterOpenApiInteropTest.java
+++ b/flash-extensions/flash-ext-limiter/src/test/java/dev/relism/flash/ext/limiter/LimiterOpenApiInteropTest.java
@@ -1,14 +1,14 @@
-package dev.relism.ext.limiter;
+package dev.relism.flash.ext.limiter;
-import dev.relism.ext.openapi.OpenApiContributor;
-import dev.relism.ext.openapi.OpenApiContributorRegistry;
-import dev.relism.ext.openapi.OpenApiOperationContribution;
-import dev.relism.ext.openapi.OpenApiResponseContribution;
-import dev.relism.extension.FlashContext;
-import dev.relism.models.Request;
-import dev.relism.models.RequestHandler;
-import dev.relism.models.Response;
-import dev.relism.routing.GET;
+import dev.relism.flash.ext.openapi.OpenApiContributor;
+import dev.relism.flash.ext.openapi.OpenApiContributorRegistry;
+import dev.relism.flash.ext.openapi.OpenApiOperationContribution;
+import dev.relism.flash.ext.openapi.OpenApiResponseContribution;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.models.Request;
+import dev.relism.flash.models.RequestHandler;
+import dev.relism.flash.models.Response;
+import dev.relism.flash.routing.GET;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/Authenticated.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/Authenticated.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/Authenticated.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/Authenticated.java
index 7a3158d..4888202 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/Authenticated.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/Authenticated.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClaimsHolder.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClaimsHolder.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClaimsHolder.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClaimsHolder.java
index d5debdb..490147a 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClaimsHolder.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClaimsHolder.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.util.Map;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClientAuthMethod.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClientAuthMethod.java
similarity index 94%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClientAuthMethod.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClientAuthMethod.java
index 9e4510a..337039f 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ClientAuthMethod.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ClientAuthMethod.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
/**
* OAuth2 client authentication method for the token endpoint (RFC 6749 §2.3).
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/DiscoveryClient.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/DiscoveryClient.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/DiscoveryClient.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/DiscoveryClient.java
index 8349f7f..40b6b0c 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/DiscoveryClient.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/DiscoveryClient.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import net.minidev.json.JSONValue;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/InMemoryOidcSessionStore.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/InMemoryOidcSessionStore.java
similarity index 95%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/InMemoryOidcSessionStore.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/InMemoryOidcSessionStore.java
index f5af0bb..3df2afc 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/InMemoryOidcSessionStore.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/InMemoryOidcSessionStore.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtUtils.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtUtils.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtUtils.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtUtils.java
index 627ed47..c456733 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtUtils.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtUtils.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import net.minidev.json.JSONValue;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtValidator.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtValidator.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtValidator.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtValidator.java
index b0c1ce1..a0bde6f 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/JwtValidator.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/JwtValidator.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import com.nimbusds.jose.JWSAlgorithm;
import com.nimbusds.jose.jwk.source.JWKSource;
@@ -12,7 +12,7 @@ import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.proc.ConfigurableJWTProcessor;
import com.nimbusds.jwt.proc.DefaultJWTClaimsVerifier;
import com.nimbusds.jwt.proc.DefaultJWTProcessor;
-import dev.relism.exceptions.HttpException;
+import dev.relism.flash.exceptions.HttpException;
import java.io.IOException;
import java.net.URL;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcAuthPolicy.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcAuthPolicy.java
similarity index 99%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcAuthPolicy.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcAuthPolicy.java
index 23ccce7..4f7c5b1 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcAuthPolicy.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcAuthPolicy.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.util.LinkedHashSet;
import java.util.List;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcConfig.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcConfig.java
similarity index 99%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcConfig.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcConfig.java
index 4820097..837af03 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcConfig.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcConfig.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
/**
* Full OIDC client configuration. Build via
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcExtension.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcExtension.java
similarity index 95%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcExtension.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcExtension.java
index 3093c14..f7f59a8 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcExtension.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcExtension.java
@@ -1,12 +1,13 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
-import dev.relism.ext.openapi.OpenApiContributor;
-import dev.relism.ext.openapi.OpenApiContributorRegistry;
-import dev.relism.ext.openapi.OpenApiOperationContribution;
-import dev.relism.ext.openapi.OpenApiResponseContribution;
-import dev.relism.extension.FlashContext;
-import dev.relism.extension.FlashExtension;
-import dev.relism.extension.FlashRegistrar;
+import dev.relism.flash.ext.openapi.OpenApiContributor;
+import dev.relism.flash.ext.openapi.OpenApiContributorRegistry;
+import dev.relism.flash.ext.openapi.OpenApiOperationContribution;
+import dev.relism.flash.ext.openapi.OpenApiResponseContribution;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.extension.FlashExtension;
+import dev.relism.flash.extension.FlashRegistrar;
+import dev.relism.flash.models.Request;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
@@ -245,11 +246,11 @@ public class OidcExtension implements FlashExtension {
}
}
- private String absoluteRedirectUri(dev.relism.models.Request req) {
+ private String absoluteRedirectUri(Request req) {
return absoluteSelf(req, config.redirectUri());
}
- private String absoluteSelf(dev.relism.models.Request req, String uri) {
+ private String absoluteSelf(Request req, String uri) {
if (!uri.startsWith("/")) return uri;
return config.selfScheme() + "://" + req.header("Host") + uri;
}
@@ -264,7 +265,7 @@ public class OidcExtension implements FlashExtension {
/**
* Loaded lazily so that {@code flash-ext-openapi} classes are only resolved at
- * runtime when {@link dev.relism.ext.openapi.OpenApiContributorRegistry} is actually on the classpath.
+ * runtime when {@link OpenApiContributorRegistry} is actually on the classpath.
*/
private static final class OpenApiIntegration {
static void register(FlashContext ctx,
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcMiddleware.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcMiddleware.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcMiddleware.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcMiddleware.java
index a64c260..78ef6c8 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcMiddleware.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcMiddleware.java
@@ -1,8 +1,10 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
-import dev.relism.exceptions.HttpException;
-import dev.relism.models.Request;
-import dev.relism.routing.Middleware;
+import dev.relism.flash.exceptions.HttpException;
+import dev.relism.flash.extension.FlashContext;
+import dev.relism.flash.models.Response;
+import dev.relism.flash.models.Request;
+import dev.relism.flash.routing.Middleware;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@@ -14,7 +16,7 @@ import java.util.Map;
import java.util.Optional;
/**
- * Request-level OIDC middleware. Exposed in the {@link dev.relism.extension.FlashContext}
+ * Request-level OIDC middleware. Exposed in the {@link FlashContext}
* for manual use on lambda routes; injected automatically for handlers annotated with
* {@link Authenticated}, {@link RolesAllowed} or {@link ScopesAllowed}.
*
@@ -192,7 +194,7 @@ public class OidcMiddleware {
* Returns claims on success, or {@code null} if a redirect was already written to
* {@code res}. Throws {@link HttpException} 401/403 for API clients.
*/
- private Map resolve(Request req, dev.relism.models.Response res) {
+ private Map resolve(Request req, Response res) {
// 1. Bearer token
String bearerToken = extractBearerToken(req.header("Authorization"));
if (bearerToken != null) {
@@ -258,7 +260,7 @@ public class OidcMiddleware {
);
}
- private void enforcePolicy(Map claims, OidcAuthPolicy policy, dev.relism.models.Response res) {
+ private void enforcePolicy(Map claims, OidcAuthPolicy policy, Response res) {
checkRoles(claims, policy.requiredRoles());
checkScopes(claims, policy.requiredScopes(), policy.scopeMatch(), res);
}
@@ -270,7 +272,7 @@ public class OidcMiddleware {
}
private void checkScopes(Map claims, String[] required, ScopesAllowed.Match match,
- dev.relism.models.Response res) {
+ Response res) {
if (required.length == 0) return;
if (scopesAllowed(claims, required, match)) return;
res.header("WWW-Authenticate", insufficientScopeChallenge(required));
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcProviderMetadata.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcProviderMetadata.java
similarity index 92%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcProviderMetadata.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcProviderMetadata.java
index a646f42..cc783af 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcProviderMetadata.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcProviderMetadata.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
/**
* OIDC provider endpoints discovered from {@code {issuer}/.well-known/openid-configuration}.
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSession.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSession.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSession.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSession.java
index fefdb17..742404b 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSession.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSession.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.time.Instant;
import java.util.Map;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSessionStore.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSessionStore.java
similarity index 92%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSessionStore.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSessionStore.java
index f7966c2..b23f816 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcSessionStore.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcSessionStore.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.util.Optional;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcStateStore.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcStateStore.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcStateStore.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcStateStore.java
index d8954f4..4918cbd 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcStateStore.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcStateStore.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.time.Instant;
import java.util.Optional;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcTokenResponse.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcTokenResponse.java
similarity index 90%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcTokenResponse.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcTokenResponse.java
index 9ab5c54..8afad32 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcTokenResponse.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcTokenResponse.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
/** Parsed response from an OAuth2 token endpoint. Package-private — internal use only. */
record OidcTokenResponse(
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcUser.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcUser.java
similarity index 99%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcUser.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcUser.java
index e8382b1..d54f7f4 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcUser.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcUser.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.util.List;
import java.util.Map;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcValidationException.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcValidationException.java
similarity index 69%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcValidationException.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcValidationException.java
index 459285c..202f75f 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/OidcValidationException.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/OidcValidationException.java
@@ -1,8 +1,10 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
+
+import dev.relism.flash.exceptions.HttpException;
/**
* Thrown when OIDC token validation fails (signature, claims, nonce, expiry, etc.).
- * Distinct from {@link dev.relism.exceptions.HttpException}: this signals a protocol-level
+ * Distinct from {@link HttpException}: this signals a protocol-level
* failure, not an HTTP response — callers decide the appropriate status code.
*/
public final class OidcValidationException extends RuntimeException {
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/PkceUtils.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/PkceUtils.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/PkceUtils.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/PkceUtils.java
index 70a0fed..99fc632 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/PkceUtils.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/PkceUtils.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/RolesAllowed.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/RolesAllowed.java
similarity index 96%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/RolesAllowed.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/RolesAllowed.java
index 3f6a05b..1009f14 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/RolesAllowed.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/RolesAllowed.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ScopesAllowed.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ScopesAllowed.java
similarity index 97%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ScopesAllowed.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ScopesAllowed.java
index 5213e6d..a5ba66f 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/ScopesAllowed.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/ScopesAllowed.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/TokenClient.java b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/TokenClient.java
similarity index 99%
rename from flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/TokenClient.java
rename to flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/TokenClient.java
index 88f949c..a6be2c2 100644
--- a/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/ext/oidc/TokenClient.java
+++ b/flash-extensions/flash-ext-oidc/src/main/java/dev/relism/flash/ext/oidc/TokenClient.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import net.minidev.json.JSONValue;
diff --git a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcAuthPolicyTest.java b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcAuthPolicyTest.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcAuthPolicyTest.java
rename to flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcAuthPolicyTest.java
index 0223937..e1677a5 100644
--- a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcAuthPolicyTest.java
+++ b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcAuthPolicyTest.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import org.junit.jupiter.api.Test;
diff --git a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcMiddlewareAuthzTest.java b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcMiddlewareAuthzTest.java
similarity index 98%
rename from flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcMiddlewareAuthzTest.java
rename to flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcMiddlewareAuthzTest.java
index 588777c..b38a1ae 100644
--- a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcMiddlewareAuthzTest.java
+++ b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcMiddlewareAuthzTest.java
@@ -1,4 +1,4 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
import org.junit.jupiter.api.Test;
diff --git a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcOpenApiInteropTest.java b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcOpenApiInteropTest.java
similarity index 78%
rename from flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcOpenApiInteropTest.java
rename to flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcOpenApiInteropTest.java
index e199d04..d84bcf3 100644
--- a/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/ext/oidc/OidcOpenApiInteropTest.java
+++ b/flash-extensions/flash-ext-oidc/src/test/java/dev/relism/flash/ext/oidc/OidcOpenApiInteropTest.java
@@ -1,6 +1,10 @@
-package dev.relism.ext.oidc;
+package dev.relism.flash.ext.oidc;
-import dev.relism.ext.openapi.OpenApiContributor;
+import dev.relism.flash.ext.openapi.OpenApiContributorRegistry;
+import dev.relism.flash.ext.openapi.OpenApiOperationContribution;
+import dev.relism.flash.ext.openapi.OpenApiResponseContribution;
+import dev.relism.flash.ext.openapi.OpenApiContributor;
+import dev.relism.flash.extension.FlashContext;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Constructor;
@@ -82,24 +86,24 @@ class OidcOpenApiInteropTest {
@Test
void securityContribution_presentForAuthenticatedHandler() throws Exception {
- dev.relism.ext.openapi.OpenApiOperationContribution operation = contributor().operationFor(AuthOnly.class);
+ OpenApiOperationContribution operation = contributor().operationFor(AuthOnly.class);
List