diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5b2d418aa..e825c4fb8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -33,4 +33,14 @@ jobs:
env:
JAVA_VERSION: ${{ matrix.java_version }}
run: |
- mvn clean package install -Ptest
+ mvn clean package install -Ptest21
+ - name: Configure minimum Java version
+ uses: actions/setup-java@v5
+ with:
+ java-version: 11
+ distribution: "zulu"
+ - name: Test on minimum version
+ env:
+ JAVA_VERSION: 11
+ run: |
+ mvn test -Ptest
diff --git a/aws-cognito/http-client-authtoken/pom.xml b/aws-cognito/http-client-authtoken/pom.xml
index 8219e8ea8..1ad68a26c 100644
--- a/aws-cognito/http-client-authtoken/pom.xml
+++ b/aws-cognito/http-client-authtoken/pom.xml
@@ -18,7 +18,7 @@
io.avaje
avaje-http-client
- 3.8
+ 4.0-B.1
diff --git a/htmx-api/pom.xml b/htmx-api/pom.xml
index c00410838..692187fbd 100644
--- a/htmx-api/pom.xml
+++ b/htmx-api/pom.xml
@@ -6,7 +6,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-htmx-api
diff --git a/htmx-nima-jstache/pom.xml b/htmx-nima-jstache/pom.xml
index 26c1f00ad..a100ff7b7 100644
--- a/htmx-nima-jstache/pom.xml
+++ b/htmx-nima-jstache/pom.xml
@@ -6,7 +6,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-htmx-nima-jstache
diff --git a/htmx-nima-jstache/src/main/java/module-info.java b/htmx-nima-jstache/src/main/java/module-info.java
index 88d587079..458ec9933 100644
--- a/htmx-nima-jstache/src/main/java/module-info.java
+++ b/htmx-nima-jstache/src/main/java/module-info.java
@@ -5,7 +5,7 @@
requires transitive io.avaje.htmx.nima;
requires transitive io.helidon.webserver;
requires transitive io.jstach.jstachio;
- requires transitive io.avaje.inject;
+ requires static transitive io.avaje.inject;
requires static io.avaje.spi;
provides io.avaje.inject.spi.InjectExtension with io.avaje.htmx.nima.jstache.DefaultTemplateProvider;
diff --git a/htmx-nima/pom.xml b/htmx-nima/pom.xml
index 42b1cbcd4..db7935e19 100644
--- a/htmx-nima/pom.xml
+++ b/htmx-nima/pom.xml
@@ -6,7 +6,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-htmx-nima
@@ -22,7 +22,7 @@
io.avaje
avaje-htmx-api
- 3.8
+ ${project.version}
io.helidon.webserver
diff --git a/http-api-javalin/pom.xml b/http-api-javalin/pom.xml
index dfa92d00d..700c384cd 100644
--- a/http-api-javalin/pom.xml
+++ b/http-api-javalin/pom.xml
@@ -4,15 +4,26 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
avaje-http-api-javalin
avaje-http-api-javalin
+ Library that generates adapter code for Javalin APIs via Annotation Processing.
-
- scm:git:git@github.com:avaje/avaje-http.git
- avaje-http-parent-1.19
-
+
+
+ io.avaje
+ avaje-http-api
+ ${project.version}
+
+
+ io.javalin
+ javalin
+ 7.1.0
+ provided
+ true
+
+
diff --git a/http-api/src/main/java/io/avaje/http/api/AvajeJavalinPlugin.java b/http-api-javalin/src/main/java/io/avaje/http/api/javalin/AvajeJavalinPlugin.java
similarity index 59%
rename from http-api/src/main/java/io/avaje/http/api/AvajeJavalinPlugin.java
rename to http-api-javalin/src/main/java/io/avaje/http/api/javalin/AvajeJavalinPlugin.java
index 503aba080..5a2d8001e 100644
--- a/http-api/src/main/java/io/avaje/http/api/AvajeJavalinPlugin.java
+++ b/http-api-javalin/src/main/java/io/avaje/http/api/javalin/AvajeJavalinPlugin.java
@@ -1,9 +1,9 @@
-package io.avaje.http.api;
+package io.avaje.http.api.javalin;
import io.javalin.plugin.Plugin;
/**
- * A Javalin 6 route generated by avaje http javalin generator.
+ * A Javalin 7 route generated by avaje http javalin generator.
*/
public abstract class AvajeJavalinPlugin extends Plugin {
diff --git a/http-api-javalin/src/main/java/module-info.java b/http-api-javalin/src/main/java/module-info.java
index 18f709473..8606127c3 100644
--- a/http-api-javalin/src/main/java/module-info.java
+++ b/http-api-javalin/src/main/java/module-info.java
@@ -1,3 +1,5 @@
module io.avaje.http.api.javalin {
exports io.avaje.http.api.javalin;
+ requires transitive io.avaje.http.api;
+ requires static io.javalin;
}
diff --git a/http-api-vertx/pom.xml b/http-api-vertx/pom.xml
index 5508dbd14..11f0dfd48 100644
--- a/http-api-vertx/pom.xml
+++ b/http-api-vertx/pom.xml
@@ -5,7 +5,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
@@ -22,5 +22,10 @@
vertx-web
${vertx.version}
+
+ io.avaje
+ avaje-http-api
+ ${project.version}
+
diff --git a/http-api-vertx/src/main/java/module-info.java b/http-api-vertx/src/main/java/module-info.java
index 227018f42..f6f06445c 100644
--- a/http-api-vertx/src/main/java/module-info.java
+++ b/http-api-vertx/src/main/java/module-info.java
@@ -1,7 +1,7 @@
module io.avaje.http.api.vertx {
exports io.avaje.http.api.vertx;
-
+ requires transitive io.avaje.http.api;
requires transitive io.vertx.web;
requires transitive io.vertx.core;
}
diff --git a/http-api/pom.xml b/http-api/pom.xml
index 533641a99..4ef80b715 100644
--- a/http-api/pom.xml
+++ b/http-api/pom.xml
@@ -4,32 +4,19 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
avaje-http-api
avaje-http-api
-
- scm:git:git@github.com:avaje/avaje-http.git
- avaje-http-parent-1.19
-
-
io.avaje
avaje-http-inject-plugin
${project.version}
-
- io.javalin
- javalin
- 7.1.0
- provided
- true
-
-
diff --git a/http-api/src/main/java/module-info.java b/http-api/src/main/java/module-info.java
index 2e95d7bf9..5fe2e429f 100644
--- a/http-api/src/main/java/module-info.java
+++ b/http-api/src/main/java/module-info.java
@@ -3,6 +3,4 @@
exports io.avaje.http.api;
exports io.avaje.http.api.context;
exports io.avaje.http.api.spi;
-
- requires static io.javalin;
}
diff --git a/http-client-gson-adapter/pom.xml b/http-client-gson-adapter/pom.xml
index 0b2d2239e..82e74df31 100644
--- a/http-client-gson-adapter/pom.xml
+++ b/http-client-gson-adapter/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-client-gson
@@ -21,7 +21,7 @@
io.avaje
avaje-http-client
- 3.8
+ 4.0-B.1
provided
diff --git a/http-client-moshi-adapter/pom.xml b/http-client-moshi-adapter/pom.xml
index c976e943e..d9a3e2c11 100644
--- a/http-client-moshi-adapter/pom.xml
+++ b/http-client-moshi-adapter/pom.xml
@@ -3,7 +3,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-client-moshi
avaje-http-client-moshi
@@ -20,7 +20,7 @@
io.avaje
avaje-http-client
- 3.8
+ 4.0-B.1
provided
diff --git a/http-client/pom.xml b/http-client/pom.xml
index b13255189..13803fc33 100644
--- a/http-client/pom.xml
+++ b/http-client/pom.xml
@@ -6,17 +6,12 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-client
avaje-http-client
-
- scm:git:git@github.com:avaje/avaje-http-client.git
- HEAD
-
-
false
@@ -35,14 +30,14 @@
3.1.0
true
-
+
com.fasterxml.jackson.core
jackson-databind
2.21.2
true
-
+
com.fasterxml.jackson.core
jackson-annotations
@@ -89,7 +84,7 @@
io.avaje
- avaje-http-api
+ avaje-http-api-javalin
${project.version}
test
diff --git a/http-client/src/test/java/org/example/webserver/HelloController$Route.java b/http-client/src/test/java/org/example/webserver/HelloController$Route.java
index fdd435bd2..b033dbf7a 100644
--- a/http-client/src/test/java/org/example/webserver/HelloController$Route.java
+++ b/http-client/src/test/java/org/example/webserver/HelloController$Route.java
@@ -6,10 +6,9 @@
import java.time.LocalDate;
-import io.avaje.http.api.AvajeJavalinPlugin;
import io.avaje.http.api.PathSegment;
import io.avaje.http.api.Validator;
-import io.javalin.config.JavalinConfig;
+import io.avaje.http.api.javalin.AvajeJavalinPlugin;
import io.javalin.config.JavalinState;
import io.javalin.config.RoutesConfig;
diff --git a/http-generator-client/pom.xml b/http-generator-client/pom.xml
index 61d7e92e9..9f0fa6f07 100644
--- a/http-generator-client/pom.xml
+++ b/http-generator-client/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-client-generator
@@ -27,12 +27,12 @@
test
${project.version}
+
io.avaje
avaje-http-api
${project.version}
- true
- provided
+ test
@@ -56,18 +56,15 @@
org.apache.maven.plugins
- maven-shade-plugin
+ maven-compiler-plugin
-
-
- io.avaje.http.generator.core
- io.avaje.http.client.generator.core
-
-
- io.swagger.v3
- io.avaje.http.client.generator.swagger.v3
-
-
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
diff --git a/http-generator-client/src/etc/activate-shade-module b/http-generator-client/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-client/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientMethodWriter.java b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientMethodWriter.java
index 1e9cb7295..d0805d154 100644
--- a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientMethodWriter.java
+++ b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientMethodWriter.java
@@ -18,7 +18,6 @@
import javax.lang.model.type.TypeKind;
import javax.lang.model.util.ElementFilter;
-import io.avaje.http.api.SuppressLogging;
import io.avaje.http.generator.core.APContext;
import io.avaje.http.generator.core.Append;
import io.avaje.http.generator.core.BeanParamReader;
@@ -29,15 +28,15 @@
import io.avaje.http.generator.core.PathSegments;
import io.avaje.http.generator.core.PathSegments.Segment;
import io.avaje.http.generator.core.ProcessingContext;
-import io.avaje.http.generator.core.RequestTimeoutPrism;
+import io.avaje.http.generator.prisms.HeadersPrism;
+import io.avaje.http.generator.prisms.RequestTimeoutPrism;
import io.avaje.http.generator.core.Util;
import io.avaje.http.generator.core.WebMethod;
-import io.avaje.prism.GeneratePrism;
+import io.avaje.http.generator.prisms.SuppressLoggingPrism;
import io.avaje.prism.GenerateUtils;
/** Write code to register Web route for a given controller method. */
@GenerateUtils
-@GeneratePrism(SuppressLogging.class)
final class ClientMethodWriter {
private static final KnownResponse KNOWN_RESPONSE = new KnownResponse();
private static final String BODY_HANDLER = "java.net.http.HttpResponse.BodyHandler";
diff --git a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientProcessor.java b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientProcessor.java
index 81e68e055..2ccc223f2 100644
--- a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientProcessor.java
+++ b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientProcessor.java
@@ -27,14 +27,12 @@
import javax.tools.FileObject;
import io.avaje.http.generator.core.APContext;
-import io.avaje.http.generator.core.ClientPrism;
+import io.avaje.http.generator.prisms.ClientPrism;
import io.avaje.http.generator.core.Constants;
import io.avaje.http.generator.core.ControllerReader;
-import io.avaje.http.generator.core.ImportPrism;
+import io.avaje.http.generator.prisms.ImportPrism;
import io.avaje.http.generator.core.ProcessingContext;
-import io.avaje.prism.GeneratePrism;
-@GeneratePrism(io.avaje.http.api.Headers.class)
@SupportedAnnotationTypes({ClientPrism.PRISM_TYPE, ImportPrism.PRISM_TYPE})
public class ClientProcessor extends AbstractProcessor {
diff --git a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientWriter.java b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientWriter.java
index 9c649b03f..9328b7a3a 100644
--- a/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientWriter.java
+++ b/http-generator-client/src/main/java/io/avaje/http/generator/client/ClientWriter.java
@@ -1,7 +1,7 @@
package io.avaje.http.generator.client;
import io.avaje.http.generator.core.BaseControllerWriter;
-import io.avaje.http.generator.core.ClientPrism;
+import io.avaje.http.generator.prisms.ClientPrism;
import io.avaje.http.generator.core.ControllerReader;
import io.avaje.http.generator.core.MethodReader;
diff --git a/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java b/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java
index 93f101bf0..121ca4bd0 100644
--- a/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java
+++ b/http-generator-client/src/main/java/io/avaje/http/generator/client/ComponentReader.java
@@ -23,9 +23,8 @@
import io.avaje.http.generator.core.APContext;
import io.avaje.http.generator.core.Constants;
-import io.avaje.prism.GeneratePrism;
+import io.avaje.http.generator.prisms.MetaDataPrism;
-@GeneratePrism(io.avaje.http.api.spi.MetaData.class)
final class ComponentReader {
private final ComponentMetaData componentMetaData;
diff --git a/http-generator-client/src/main/java/module-info.java b/http-generator-client/src/main/java/module-info.java
index ea6d43cc0..b0af1d439 100644
--- a/http-generator-client/src/main/java/module-info.java
+++ b/http-generator-client/src/main/java/module-info.java
@@ -5,9 +5,7 @@
requires java.compiler;
requires java.sql;
- // SHADED: All content after this line will be removed at package time
requires io.avaje.http.generator.core;
- requires static io.avaje.http.api;
requires static io.avaje.prism;
}
diff --git a/http-generator-core/pom.xml b/http-generator-core/pom.xml
index a73b94081..11d641047 100644
--- a/http-generator-core/pom.xml
+++ b/http-generator-core/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-generator-core
@@ -13,85 +13,20 @@
io.avaje
- avaje-prisms
- ${avaje.prisms.version}
- provided
- true
-
-
-
- io.avaje
- avaje-http-api
+ avaje-http-generator-prisms
${project.version}
- true
- provided
-
io.avaje
- avaje-htmx-api
- ${project.version}
- true
- provided
-
-
-
- io.swagger.core.v3
- swagger-models
- ${swagger.version}
-
-
- com.fasterxml.jackson.core
- jackson-annotations
-
-
-
-
-
- io.avaje
- validator-constraints
- 1.2
- true
- provided
-
-
-
- jakarta.validation
- jakarta.validation-api
- 3.1.1
- true
- provided
-
-
-
- javax.validation
- validation-api
- 2.0.1.Final
- true
- provided
-
-
-
- io.swagger.core.v3
- swagger-annotations
- ${swagger.version}
- true
+ avaje-prisms
+ ${avaje.prisms.version}
provided
-
-
- org.jspecify
- jspecify
- 1.0.0
true
- provided
-
-
-
org.apache.maven.plugins
maven-compiler-plugin
@@ -107,5 +42,4 @@
-
diff --git a/http-generator-core/src/etc/activate-shade-module b/http-generator-core/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-core/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/BaseProcessor.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/BaseProcessor.java
index 2542e3d91..094e76711 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/BaseProcessor.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/BaseProcessor.java
@@ -25,6 +25,16 @@
import javax.lang.model.util.ElementFilter;
import io.avaje.http.generator.core.TypeMap.CustomHandler;
+import io.avaje.http.generator.prisms.ControllerPrism;
+import io.avaje.http.generator.prisms.HttpValidPrism;
+import io.avaje.http.generator.prisms.MapImportPrism;
+import io.avaje.http.generator.prisms.MappedParamPrism;
+import io.avaje.http.generator.prisms.OpenAPIDefinitionPrism;
+import io.avaje.http.generator.prisms.PathPrism;
+import io.avaje.http.generator.prisms.SecuritySchemePrism;
+import io.avaje.http.generator.prisms.SecuritySchemesPrism;
+import io.avaje.http.generator.prisms.TagPrism;
+import io.avaje.http.generator.prisms.TagsPrism;
import io.avaje.prism.GenerateAPContext;
@GenerateAPContext
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/BeanParamReader.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/BeanParamReader.java
index 8218d289e..92d3121a6 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/BeanParamReader.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/BeanParamReader.java
@@ -1,5 +1,7 @@
package io.avaje.http.generator.core;
+import io.avaje.http.generator.prisms.IgnorePrism;
+
import static io.avaje.http.generator.core.ProcessingContext.*;
import javax.lang.model.element.*;
import java.util.*;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/ControllerReader.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/ControllerReader.java
index 1191660b2..0f129d471 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/ControllerReader.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/ControllerReader.java
@@ -1,5 +1,17 @@
package io.avaje.http.generator.core;
+import io.avaje.http.generator.prisms.ClientPrism;
+import io.avaje.http.generator.prisms.ControllerPrism;
+import io.avaje.http.generator.prisms.HiddenPrism;
+import io.avaje.http.generator.prisms.HtmlPrism;
+import io.avaje.http.generator.prisms.InstrumentServerContextPrism;
+import io.avaje.http.generator.prisms.OpenAPIResponsePrism;
+import io.avaje.http.generator.prisms.OpenAPIResponsesPrism;
+import io.avaje.http.generator.prisms.PathPrism;
+import io.avaje.http.generator.prisms.ProducesPrism;
+import io.avaje.http.generator.prisms.ValidPrism;
+import io.avaje.http.generator.prisms.WebAPIPrism;
+
import static io.avaje.http.generator.core.ProcessingContext.asElement;
import static io.avaje.http.generator.core.ProcessingContext.asMemberOf;
import static io.avaje.http.generator.core.ProcessingContext.instrumentAllWebMethods;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/ElementReader.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/ElementReader.java
index 1c322b074..de15c755c 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/ElementReader.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/ElementReader.java
@@ -17,6 +17,20 @@
import io.avaje.http.generator.core.TypeMap.CustomHandler;
import io.avaje.http.generator.core.openapi.MethodDocBuilder;
import io.avaje.http.generator.core.openapi.MethodParamDocBuilder;
+import io.avaje.http.generator.prisms.BeanParamPrism;
+import io.avaje.http.generator.prisms.BodyStringPrism;
+import io.avaje.http.generator.prisms.CookiePrism;
+import io.avaje.http.generator.prisms.DefaultPrism;
+import io.avaje.http.generator.prisms.FormParamPrism;
+import io.avaje.http.generator.prisms.FormPrism;
+import io.avaje.http.generator.prisms.HeaderPrism;
+import io.avaje.http.generator.prisms.HttpValidPrism;
+import io.avaje.http.generator.prisms.IgnorePrism;
+import io.avaje.http.generator.prisms.MappedParamPrism;
+import io.avaje.http.generator.prisms.MatrixParamPrism;
+import io.avaje.http.generator.prisms.ParamPrism;
+import io.avaje.http.generator.prisms.QueryParamPrism;
+import io.avaje.http.generator.prisms.ValidPrism;
public class ElementReader {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/JsonBUtil.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/JsonBUtil.java
index cc63b538b..a48ce14fc 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/JsonBUtil.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/JsonBUtil.java
@@ -68,7 +68,7 @@ public static Map jsonTypes(ControllerReader reader) {
}
final var asTypeElement = APContext.asTypeElement(methodReader.returnType());
if (!methodReader.isVoid()
- && (asTypeElement == null || !JStachePrism.isPresent(asTypeElement))) {
+ && (asTypeElement == null || !io.avaje.http.generator.prisms.JStachePrism.isPresent(asTypeElement))) {
var uType = UType.parse(methodReader.returnType());
if ("java.util.concurrent.CompletableFuture".equals(uType.mainType())
|| "java.util.concurrent.CompletionStage".equals(uType.mainType())) {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java
index c7ab7acf8..afffd7dfd 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/MethodReader.java
@@ -23,6 +23,28 @@
import io.avaje.http.generator.core.javadoc.Javadoc;
import io.avaje.http.generator.core.openapi.MethodDocBuilder;
+import io.avaje.http.generator.prisms.ConsumesPrism;
+import io.avaje.http.generator.prisms.ContentCachePrism;
+import io.avaje.http.generator.prisms.DeletePrism;
+import io.avaje.http.generator.prisms.ExceptionHandlerPrism;
+import io.avaje.http.generator.prisms.FilterPrism;
+import io.avaje.http.generator.prisms.TagPrism;
+import io.avaje.http.generator.prisms.FormPrism;
+import io.avaje.http.generator.prisms.GetPrism;
+import io.avaje.http.generator.prisms.HxRequestPrism;
+import io.avaje.http.generator.prisms.InstrumentServerContextPrism;
+import io.avaje.http.generator.prisms.OpenAPIResponsePrism;
+import io.avaje.http.generator.prisms.OpenAPIResponsesPrism;
+import io.avaje.http.generator.prisms.OperationPrism;
+import io.avaje.http.generator.prisms.PatchPrism;
+import io.avaje.http.generator.prisms.PostPrism;
+import io.avaje.http.generator.prisms.ProducesPrism;
+import io.avaje.http.generator.prisms.PutPrism;
+import io.avaje.http.generator.prisms.RequestTimeoutPrism;
+import io.avaje.http.generator.prisms.SecurityRequirementPrism;
+import io.avaje.http.generator.prisms.SecurityRequirementsPrism;
+import io.avaje.http.generator.prisms.TagsPrism;
+import io.avaje.http.generator.prisms.ValidPrism;
import io.swagger.v3.oas.models.Operation;
public class MethodReader {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/ProcessingContext.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/ProcessingContext.java
index 944270436..5fd4ffa02 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/ProcessingContext.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/ProcessingContext.java
@@ -30,6 +30,9 @@
import javax.tools.JavaFileObject;
import javax.tools.StandardLocation;
+import io.avaje.http.generator.prisms.JStacheConfigPrism;
+import io.avaje.http.generator.prisms.JStachePrism;
+
import io.avaje.http.generator.core.openapi.DocContext;
public final class ProcessingContext {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/Util.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/Util.java
index 1770466eb..de294e37e 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/Util.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/Util.java
@@ -1,5 +1,8 @@
package io.avaje.http.generator.core;
+import io.avaje.http.generator.prisms.NullMarkedPrism;
+import io.avaje.http.generator.prisms.NullUnmarkedPrism;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/DocContext.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/DocContext.java
index c82b411dd..dda84315e 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/DocContext.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/DocContext.java
@@ -19,12 +19,12 @@
import javax.tools.StandardLocation;
import io.avaje.http.generator.core.APContext;
-import io.avaje.http.generator.core.OpenAPIDefinitionPrism;
-import io.avaje.http.generator.core.SchemaPrism;
-import io.avaje.http.generator.core.SecuritySchemePrism;
-import io.avaje.http.generator.core.SecuritySchemesPrism;
-import io.avaje.http.generator.core.TagPrism;
-import io.avaje.http.generator.core.TagsPrism;
+import io.avaje.http.generator.prisms.OpenAPIDefinitionPrism;
+import io.avaje.http.generator.prisms.SchemaPrism;
+import io.avaje.http.generator.prisms.SecuritySchemePrism;
+import io.avaje.http.generator.prisms.SecuritySchemesPrism;
+import io.avaje.http.generator.prisms.TagPrism;
+import io.avaje.http.generator.prisms.TagsPrism;
import io.avaje.http.generator.core.Util;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodDocBuilder.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodDocBuilder.java
index 55b6a913f..47d8def02 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodDocBuilder.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodDocBuilder.java
@@ -2,14 +2,14 @@
import java.util.Optional;
-import io.avaje.http.generator.core.ConsumesPrism;
+import io.avaje.http.generator.prisms.ConsumesPrism;
import io.avaje.http.generator.core.CoreWebMethod;
-import io.avaje.http.generator.core.HiddenPrism;
+import io.avaje.http.generator.prisms.DeprecatedPrism;
+import io.avaje.http.generator.prisms.HiddenPrism;
import io.avaje.http.generator.core.MethodParam;
import io.avaje.http.generator.core.MethodReader;
-import io.avaje.http.generator.core.SecurityRequirementPrism;
+import io.avaje.http.generator.prisms.SecurityRequirementPrism;
import io.avaje.http.generator.core.javadoc.Javadoc;
-import io.avaje.prism.GeneratePrism;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -17,7 +17,6 @@
import io.swagger.v3.oas.models.security.SecurityRequirement;
/** Build the OpenAPI documentation for a method. */
-@GeneratePrism(Deprecated.class)
public class MethodDocBuilder {
private final Javadoc javadoc;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodParamDocBuilder.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodParamDocBuilder.java
index 286b19dab..9f8703cef 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodParamDocBuilder.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/MethodParamDocBuilder.java
@@ -4,7 +4,7 @@
import javax.lang.model.element.Element;
-import io.avaje.http.generator.core.ConsumesPrism;
+import io.avaje.http.generator.prisms.ConsumesPrism;
import io.avaje.http.generator.core.ElementReader;
import io.avaje.http.generator.core.ParamType;
import io.avaje.http.generator.core.javadoc.Javadoc;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java
index 942e50b69..c4b442f48 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java
@@ -2,8 +2,12 @@
import static io.avaje.http.generator.core.Util.typeDef;
-import io.avaje.http.generator.core.SchemaPrism;
+import io.avaje.http.generator.prisms.EmailPrism;
+import io.avaje.http.generator.prisms.JavaxEmailPrism;
+import io.avaje.http.generator.prisms.JavaxSizePrism;
+import io.avaje.http.generator.prisms.SchemaPrism;
import io.avaje.http.generator.core.javadoc.Javadoc;
+import io.avaje.http.generator.prisms.SizePrism;
import io.swagger.v3.oas.models.media.StringSchema;
import java.util.ArrayList;
import java.util.List;
@@ -28,9 +32,8 @@
import javax.lang.model.util.Types;
import io.avaje.http.generator.core.APContext;
-import io.avaje.http.generator.core.HiddenPrism;
+import io.avaje.http.generator.prisms.HiddenPrism;
import io.avaje.http.generator.core.Util;
-import io.avaje.prism.GeneratePrism;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Content;
@@ -41,10 +44,6 @@
import io.swagger.v3.oas.models.parameters.RequestBody;
/** Help build OpenAPI Schema objects. */
-@GeneratePrism(jakarta.validation.constraints.Size.class)
-@GeneratePrism(jakarta.validation.constraints.Email.class)
-@GeneratePrism(value = javax.validation.constraints.Size.class, name = "JavaxSizePrism")
-@GeneratePrism(value = javax.validation.constraints.Email.class, name = "JavaxEmailPrism")
class SchemaDocBuilder {
private static final String APP_FORM = "application/x-www-form-urlencoded";
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaPrismHelper.java b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaPrismHelper.java
index f713b1867..3a7d5a065 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaPrismHelper.java
+++ b/http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaPrismHelper.java
@@ -1,6 +1,6 @@
package io.avaje.http.generator.core.openapi;
-import io.avaje.http.generator.core.SchemaPrism;
+import io.avaje.http.generator.prisms.SchemaPrism;
import io.swagger.v3.oas.models.media.Schema;
import javax.lang.model.type.TypeMirror;
diff --git a/http-generator-core/src/main/java/module-info.java b/http-generator-core/src/main/java/module-info.java
index ba600ade0..f2fbf2734 100644
--- a/http-generator-core/src/main/java/module-info.java
+++ b/http-generator-core/src/main/java/module-info.java
@@ -6,15 +6,7 @@
requires java.sql;
requires java.compiler;
-
- // SHADED: All content after this line will be removed at package time
+ requires io.swagger.v3.oas.models;
+ requires transitive io.avaje.http.generator.prisms;
requires static io.avaje.prism;
- requires static io.avaje.http.api;
- requires static io.avaje.htmx.api;
- requires static io.swagger.v3.oas.models;
- requires static io.swagger.v3.oas.annotations;
- requires static java.validation;
- requires static jakarta.validation;
- requires static io.avaje.validation.contraints;
- requires static org.jspecify;
}
diff --git a/http-generator-helidon/pom.xml b/http-generator-helidon/pom.xml
index 5d6e0f0c4..567c4afcc 100644
--- a/http-generator-helidon/pom.xml
+++ b/http-generator-helidon/pom.xml
@@ -4,7 +4,7 @@
avaje-http-parent
io.avaje
- 3.8
+ 4.0-B.1
avaje-http-helidon-generator
@@ -31,4 +31,21 @@
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
diff --git a/http-generator-helidon/src/etc/activate-shade-module b/http-generator-helidon/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-helidon/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-helidon/src/main/java/module-info.java b/http-generator-helidon/src/main/java/module-info.java
index 2d5ba9c18..4263013af 100644
--- a/http-generator-helidon/src/main/java/module-info.java
+++ b/http-generator-helidon/src/main/java/module-info.java
@@ -5,7 +5,6 @@
provides javax.annotation.processing.Processor with io.avaje.http.generator.helidon.nima.HelidonProcessor;
- // SHADED: All content after this line will be removed at package time
- requires transitive io.avaje.http.generator.core;
- requires io.avaje.prism;
+ requires io.avaje.http.generator.core;
+ requires static io.avaje.prism;
}
diff --git a/http-generator-javalin/pom.xml b/http-generator-javalin/pom.xml
index cc6ba8534..8a71bc062 100644
--- a/http-generator-javalin/pom.xml
+++ b/http-generator-javalin/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-javalin-generator
@@ -31,4 +31,22 @@
${project.version}
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
diff --git a/http-generator-javalin/src/etc/activate-shade-module b/http-generator-javalin/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-javalin/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/AbstractCustomMethodPrism.java b/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/AbstractCustomMethodPrism.java
index 704a14b8a..912075f96 100644
--- a/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/AbstractCustomMethodPrism.java
+++ b/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/AbstractCustomMethodPrism.java
@@ -3,7 +3,13 @@
import static io.avaje.http.generator.javalin.JavalinWebMethod.*;
import io.avaje.http.generator.core.CustomWebMethod;
import io.avaje.http.generator.core.WebMethod;
+import io.avaje.prism.GeneratePrism;
+// TODO: Untangle this? Or leave it?
+@GeneratePrism(value = io.avaje.http.api.javalin.After.class, superClass = AbstractCustomMethodPrism.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.javalin.Before.class, superClass = AbstractCustomMethodPrism.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.javalin.AfterMatched.class, superClass = AbstractCustomMethodPrism.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.javalin.BeforeMatched.class, superClass = AbstractCustomMethodPrism.class, publicAccess = true)
public abstract class AbstractCustomMethodPrism implements CustomWebMethod {
@Override
diff --git a/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/JavalinProcessor.java b/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/JavalinProcessor.java
index 65c0d6f9c..686845b9a 100644
--- a/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/JavalinProcessor.java
+++ b/http-generator-javalin/src/main/java/io/avaje/http/generator/javalin/JavalinProcessor.java
@@ -2,20 +2,11 @@
import java.io.IOException;
-import io.avaje.http.api.javalin.After;
-import io.avaje.http.api.javalin.AfterMatched;
-import io.avaje.http.api.javalin.Before;
-import io.avaje.http.api.javalin.BeforeMatched;
import io.avaje.http.generator.core.BaseProcessor;
import io.avaje.http.generator.core.ControllerReader;
import io.avaje.http.generator.core.PlatformAdapter;
import io.avaje.http.generator.core.ProcessingContext;
-import io.avaje.prism.GeneratePrism;
-@GeneratePrism(value = After.class, superClass = AbstractCustomMethodPrism.class)
-@GeneratePrism(value = Before.class, superClass = AbstractCustomMethodPrism.class)
-@GeneratePrism(value = AfterMatched.class, superClass = AbstractCustomMethodPrism.class)
-@GeneratePrism(value = BeforeMatched.class, superClass = AbstractCustomMethodPrism.class)
public class JavalinProcessor extends BaseProcessor {
@Override
diff --git a/http-generator-javalin/src/main/java/module-info.java b/http-generator-javalin/src/main/java/module-info.java
index a993efde0..0c9f55a6f 100644
--- a/http-generator-javalin/src/main/java/module-info.java
+++ b/http-generator-javalin/src/main/java/module-info.java
@@ -5,7 +5,6 @@
requires java.compiler;
requires java.sql;
- // SHADED: All content after this line will be removed at package time
requires io.avaje.http.generator.core;
requires static io.avaje.http.api.javalin;
requires static io.avaje.prism;
diff --git a/http-generator-jex/pom.xml b/http-generator-jex/pom.xml
index 38a2c01cb..8633dc5b0 100644
--- a/http-generator-jex/pom.xml
+++ b/http-generator-jex/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-jex-generator
@@ -30,4 +30,22 @@
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
diff --git a/http-generator-jex/src/etc/activate-shade-module b/http-generator-jex/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-jex/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-jex/src/main/java/io/avaje/http/generator/jex/ControllerMethodWriter.java b/http-generator-jex/src/main/java/io/avaje/http/generator/jex/ControllerMethodWriter.java
index 3d2c02389..c226a9a32 100644
--- a/http-generator-jex/src/main/java/io/avaje/http/generator/jex/ControllerMethodWriter.java
+++ b/http-generator-jex/src/main/java/io/avaje/http/generator/jex/ControllerMethodWriter.java
@@ -4,6 +4,7 @@
import io.avaje.http.generator.core.*;
import io.avaje.http.generator.core.openapi.MediaType;
+import io.avaje.http.generator.prisms.HxRequestPrism;
import javax.lang.model.type.TypeMirror;
diff --git a/http-generator-jex/src/main/java/module-info.java b/http-generator-jex/src/main/java/module-info.java
index e833e3579..ff34ec574 100644
--- a/http-generator-jex/src/main/java/module-info.java
+++ b/http-generator-jex/src/main/java/module-info.java
@@ -5,7 +5,6 @@
requires java.compiler;
requires java.sql;
- // SHADED: All content after this line will be removed at package time
requires transitive io.avaje.http.generator.core;
requires static io.avaje.prism;
}
diff --git a/http-generator-prisms/pom.xml b/http-generator-prisms/pom.xml
new file mode 100644
index 000000000..98306aff4
--- /dev/null
+++ b/http-generator-prisms/pom.xml
@@ -0,0 +1,110 @@
+
+
+ 4.0.0
+
+ io.avaje
+ avaje-http-parent
+ 4.0-B.1
+
+
+ avaje-http-generator-prisms
+ avaje-http-generator-prisms
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+ provided
+ true
+
+
+ io.avaje
+ avaje-http-api-javalin
+ ${project.version}
+ true
+ provided
+
+
+ io.avaje
+ avaje-http-api-vertx
+ ${project.version}
+ true
+ provided
+
+
+ io.avaje
+ avaje-htmx-api
+ ${project.version}
+ true
+ provided
+
+
+ io.swagger.core.v3
+ swagger-models
+ ${swagger.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+
+
+ io.avaje
+ validator-constraints
+ 1.2
+ true
+ provided
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.1.1
+ true
+ provided
+
+
+ javax.validation
+ validation-api
+ 2.0.1.Final
+ true
+ provided
+
+
+ io.swagger.core.v3
+ swagger-annotations
+ ${swagger.version}
+ true
+ provided
+
+
+ org.jspecify
+ jspecify
+ 1.0.0
+ true
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
+
+
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/JStacheConfigPrism.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStacheConfigPrism.java
similarity index 92%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/JStacheConfigPrism.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStacheConfigPrism.java
index 372b15980..19faa9e38 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/JStacheConfigPrism.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStacheConfigPrism.java
@@ -1,4 +1,4 @@
-package io.avaje.http.generator.core;
+package io.avaje.http.generator.prisms;
import java.util.HashMap;
import java.util.Map;
@@ -15,7 +15,7 @@
/** A Prism representing a {@link io.jstach.jstache.JStacheConfig @JStacheConfig} annotation. */
@Generated("avaje-prism-generator")
-final class JStacheConfigPrism {
+public final class JStacheConfigPrism {
/** store prism value of type */
private final String _type;
@@ -35,7 +35,7 @@ final class JStacheConfigPrism {
* @param mirror mirror.
* @return true if prism is present.
*/
- static boolean isInstance(AnnotationMirror mirror) {
+ public static boolean isInstance(AnnotationMirror mirror) {
return getInstance(mirror) != null;
}
@@ -46,7 +46,7 @@ static boolean isInstance(AnnotationMirror mirror) {
* @param element element.
* @return true if annotation is present on the element.
*/
- static boolean isPresent(Element element) {
+ public static boolean isPresent(Element element) {
return getInstanceOn(element) != null;
}
@@ -59,7 +59,7 @@ static boolean isPresent(Element element) {
* @param element element.
* @return prism on element or null if no annotation is found.
*/
- static JStacheConfigPrism getInstanceOn(Element element) {
+ public static JStacheConfigPrism getInstanceOn(Element element) {
final var mirror = getMirror(element);
if (mirror == null) return null;
return getInstance(mirror);
@@ -74,7 +74,7 @@ static JStacheConfigPrism getInstanceOn(Element element) {
* @param element element.
* @return prism optional for element.
*/
- static Optional getOptionalOn(Element element) {
+ public static Optional getOptionalOn(Element element) {
final var mirror = getMirror(element);
if (mirror == null) return Optional.empty();
return getOptional(mirror);
@@ -87,7 +87,7 @@ static Optional getOptionalOn(Element element) {
* @param mirror mirror.
* @return prism for mirror or null if mirror is an incorrect type.
*/
- static JStacheConfigPrism getInstance(AnnotationMirror mirror) {
+ public static JStacheConfigPrism getInstance(AnnotationMirror mirror) {
if (mirror == null || !PRISM_TYPE.equals(mirror.getAnnotationType().toString())) return null;
return new JStacheConfigPrism(mirror);
@@ -102,7 +102,7 @@ static JStacheConfigPrism getInstance(AnnotationMirror mirror) {
* @param mirror mirror.
* @return prism optional for mirror.
*/
- static Optional getOptional(AnnotationMirror mirror) {
+ public static Optional getOptional(AnnotationMirror mirror) {
if (mirror == null || !PRISM_TYPE.equals(mirror.getAnnotationType().toString()))
return Optional.empty();
@@ -155,7 +155,7 @@ public String type() {
* corresponding to that member in the model of the annotations. Returns null for defaulted
* members. Used for Messager, so default values are not useful.
*/
- static final class Values {
+ public static final class Values {
private final Map values;
private Values(Map values) {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/JStachePrism.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStachePrism.java
similarity index 98%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/JStachePrism.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStachePrism.java
index d5d5a40cf..24fe5fa52 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/JStachePrism.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/JStachePrism.java
@@ -1,4 +1,4 @@
-package io.avaje.http.generator.core;
+package io.avaje.http.generator.prisms;
import javax.annotation.processing.Generated;
import javax.lang.model.element.AnnotationMirror;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/ParamPrism.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ParamPrism.java
similarity index 96%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/ParamPrism.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ParamPrism.java
index 29a433f86..ae394c3ae 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/ParamPrism.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ParamPrism.java
@@ -1,9 +1,8 @@
-package io.avaje.http.generator.core;
+package io.avaje.http.generator.prisms;
import java.util.Optional;
import javax.lang.model.element.Element;
-
import io.avaje.prism.GeneratePrism;
@GeneratePrism(
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/ValidPrism.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ValidPrism.java
similarity index 86%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/ValidPrism.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ValidPrism.java
index 61291dcb8..bf4deff6b 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/ValidPrism.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/ValidPrism.java
@@ -1,4 +1,4 @@
-package io.avaje.http.generator.core;
+package io.avaje.http.generator.prisms;
import java.util.Optional;
import java.util.function.Function;
@@ -12,19 +12,23 @@
@GeneratePrism(
value = io.avaje.validation.constraints.Valid.class,
name = "AvajeValidPrism",
- superInterfaces = ValidPrism.class)
+ superInterfaces = ValidPrism.class,
+ publicAccess = true)
@GeneratePrism(
value = javax.validation.Valid.class,
name = "JavaxValidPrism",
- superInterfaces = ValidPrism.class)
+ superInterfaces = ValidPrism.class,
+ publicAccess = true)
@GeneratePrism(
value = jakarta.validation.Valid.class,
name = "JakartaValidPrism",
- superInterfaces = ValidPrism.class)
+ superInterfaces = ValidPrism.class,
+ publicAccess = true)
@GeneratePrism(
value = io.avaje.http.api.Valid.class,
name = "HttpValidPrism",
- superInterfaces = ValidPrism.class)
+ superInterfaces = ValidPrism.class,
+ publicAccess = true)
public interface ValidPrism {
static Optional getOptionalOn(Element e) {
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/WebAPIPrism.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/WebAPIPrism.java
similarity index 89%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/WebAPIPrism.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/WebAPIPrism.java
index b68302c49..cb843b5ba 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/WebAPIPrism.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/WebAPIPrism.java
@@ -1,4 +1,4 @@
-package io.avaje.http.generator.core;
+package io.avaje.http.generator.prisms;
import java.util.Optional;
diff --git a/http-generator-core/src/main/java/io/avaje/http/generator/core/package-info.java b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/package-info.java
similarity index 69%
rename from http-generator-core/src/main/java/io/avaje/http/generator/core/package-info.java
rename to http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/package-info.java
index 01d2f9233..aa527d746 100644
--- a/http-generator-core/src/main/java/io/avaje/http/generator/core/package-info.java
+++ b/http-generator-prisms/src/main/java/io/avaje/http/generator/prisms/package-info.java
@@ -1,45 +1,54 @@
/**
* Generate the prisms to access annotation info
*/
-@GeneratePrism(value = io.avaje.http.api.Controller.class, publicAccess = true, superInterfaces = WebAPIPrism.class)
-@GeneratePrism(value = io.avaje.http.api.Client.class, publicAccess = true, superInterfaces = WebAPIPrism.class)
+@GeneratePrism(value = Deprecated.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.htmx.api.ContentCache.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.htmx.api.Html.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.htmx.api.HxRequest.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.BeanParam.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.Ignore.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.BodyString.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Client.Import.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Client.class, publicAccess = true, superInterfaces = WebAPIPrism.class)
+@GeneratePrism(value = io.avaje.http.api.Consumes.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Controller.class, publicAccess = true, superInterfaces = WebAPIPrism.class)
@GeneratePrism(value = io.avaje.http.api.Default.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Delete.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.ExceptionHandler.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Filter.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Form.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Get.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Headers.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.Ignore.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.InstrumentServerContext.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.MappedParam.Import.class, name = "MapImportPrism", publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.MappedParam.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.OpenAPIResponse.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.OpenAPIResponses.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Patch.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Path.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Post.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Produces.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.Consumes.class, publicAccess = true)
@GeneratePrism(value = io.avaje.http.api.Put.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.Filter.class)
-@GeneratePrism(value = io.avaje.http.api.InstrumentServerContext.class)
-@GeneratePrism(value = io.avaje.http.api.ExceptionHandler.class)
-@GeneratePrism(value = io.avaje.http.api.MappedParam.class)
-@GeneratePrism(value = io.avaje.http.api.MappedParam.Import.class, name = "MapImportPrism")
+@GeneratePrism(value = io.avaje.http.api.RequestTimeout.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.SuppressLogging.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.spi.MetaData.class, publicAccess = true)
+@GeneratePrism(value = io.avaje.http.api.vertx.Blocking.class, publicAccess = true)
+@GeneratePrism(value = io.swagger.v3.oas.annotations.Hidden.class, publicAccess = true)
@GeneratePrism(value = io.swagger.v3.oas.annotations.OpenAPIDefinition.class, publicAccess = true)
@GeneratePrism(value = io.swagger.v3.oas.annotations.Operation.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.tags.Tag.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.tags.Tags.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecurityScheme.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecuritySchemes.class, publicAccess = true)
+@GeneratePrism(value = io.swagger.v3.oas.annotations.media.Schema.class, publicAccess = true)
@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecurityRequirement.class, publicAccess = true)
@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecurityRequirements.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.media.Schema.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.OpenAPIResponse.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.OpenAPIResponses.class, publicAccess = true)
-@GeneratePrism(value = io.swagger.v3.oas.annotations.Hidden.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.Client.Import.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.http.api.RequestTimeout.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.htmx.api.HxRequest.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.htmx.api.Html.class, publicAccess = true)
-@GeneratePrism(value = io.avaje.htmx.api.ContentCache.class, publicAccess = true)
-@GeneratePrism(org.jspecify.annotations.NullMarked.class)
-@GeneratePrism(org.jspecify.annotations.NullUnmarked.class)
-package io.avaje.http.generator.core;
+@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecurityScheme.class, publicAccess = true)
+@GeneratePrism(value = io.swagger.v3.oas.annotations.security.SecuritySchemes.class, publicAccess = true)
+@GeneratePrism(value = io.swagger.v3.oas.annotations.tags.Tag.class, publicAccess = true)
+@GeneratePrism(value = io.swagger.v3.oas.annotations.tags.Tags.class, publicAccess = true)
+@GeneratePrism(value = jakarta.validation.constraints.Email.class, publicAccess = true)
+@GeneratePrism(value = jakarta.validation.constraints.Size.class, publicAccess = true)
+@GeneratePrism(value = javax.validation.constraints.Email.class, name = "JavaxEmailPrism", publicAccess = true)
+@GeneratePrism(value = javax.validation.constraints.Size.class, name = "JavaxSizePrism", publicAccess = true)
+@GeneratePrism(value = org.jspecify.annotations.NullMarked.class, publicAccess = true)
+@GeneratePrism(value = org.jspecify.annotations.NullUnmarked.class, publicAccess = true)
+package io.avaje.http.generator.prisms;
import io.avaje.prism.GeneratePrism;
diff --git a/http-generator-prisms/src/main/java/module-info.java b/http-generator-prisms/src/main/java/module-info.java
new file mode 100644
index 000000000..21839b770
--- /dev/null
+++ b/http-generator-prisms/src/main/java/module-info.java
@@ -0,0 +1,16 @@
+module io.avaje.http.generator.prisms {
+ exports io.avaje.http.generator.prisms;
+
+ requires java.compiler;
+ requires static io.avaje.htmx.api;
+ requires static io.avaje.http.api.javalin;
+ requires static io.avaje.http.api.vertx;
+ requires static io.avaje.http.api;
+ requires static io.avaje.prism;
+ requires static io.avaje.validation.contraints;
+ requires static io.swagger.v3.oas.annotations;
+ requires static io.swagger.v3.oas.models;
+ requires static jakarta.validation;
+ requires static java.validation;
+ requires static org.jspecify;
+}
diff --git a/http-generator-sigma/pom.xml b/http-generator-sigma/pom.xml
index 4bdfdb393..6607c1bdf 100644
--- a/http-generator-sigma/pom.xml
+++ b/http-generator-sigma/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
avaje-http-sigma-generator
@@ -29,4 +29,22 @@
provided
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
diff --git a/http-generator-sigma/src/etc/activate-shade-module b/http-generator-sigma/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-sigma/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-sigma/src/main/java/module-info.java b/http-generator-sigma/src/main/java/module-info.java
index 37c1b3fbb..cf49c91ab 100644
--- a/http-generator-sigma/src/main/java/module-info.java
+++ b/http-generator-sigma/src/main/java/module-info.java
@@ -5,7 +5,6 @@
requires java.compiler;
requires java.sql;
- // SHADED: All content after this line will be removed at package time
requires io.avaje.http.generator.core;
requires static io.avaje.prism;
requires static io.avaje.spi;
diff --git a/http-generator-vertx/pom.xml b/http-generator-vertx/pom.xml
index 650896060..6330579a8 100644
--- a/http-generator-vertx/pom.xml
+++ b/http-generator-vertx/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
@@ -21,14 +21,6 @@
avaje-http-generator-core
${project.version}
-
-
- io.avaje
- avaje-http-api-vertx
- ${project.version}
- provided
-
-
io.avaje
avaje-prisms
@@ -36,4 +28,22 @@
provided
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-prisms
+ ${avaje.prisms.version}
+
+
+
+
+
+
diff --git a/http-generator-vertx/src/etc/activate-shade-module b/http-generator-vertx/src/etc/activate-shade-module
deleted file mode 100644
index 949f3d244..000000000
--- a/http-generator-vertx/src/etc/activate-shade-module
+++ /dev/null
@@ -1 +0,0 @@
-Remove from module-info all content after: // SHADED:
diff --git a/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxControllerMethodWriter.java b/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxControllerMethodWriter.java
index 0b89c0de4..ae2c92419 100644
--- a/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxControllerMethodWriter.java
+++ b/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxControllerMethodWriter.java
@@ -11,6 +11,7 @@
import io.avaje.http.generator.core.ProcessingContext;
import io.avaje.http.generator.core.UType;
import io.avaje.http.generator.core.openapi.MediaType;
+import io.avaje.http.generator.prisms.BlockingPrism;
import static io.avaje.http.generator.core.ProcessingContext.disabledDirectWrites;
diff --git a/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxProcessor.java b/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxProcessor.java
index 0266e0d55..5fc4a395a 100644
--- a/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxProcessor.java
+++ b/http-generator-vertx/src/main/java/io/avaje/http/generator/vertx/VertxProcessor.java
@@ -2,13 +2,10 @@
import java.io.IOException;
-import io.avaje.http.api.vertx.Blocking;
import io.avaje.http.generator.core.BaseProcessor;
import io.avaje.http.generator.core.ControllerReader;
import io.avaje.http.generator.core.PlatformAdapter;
-import io.avaje.prism.GeneratePrism;
-@GeneratePrism(Blocking.class)
public final class VertxProcessor extends BaseProcessor {
@Override
diff --git a/http-generator-vertx/src/main/java/module-info.java b/http-generator-vertx/src/main/java/module-info.java
index 50322415c..6fd846b36 100644
--- a/http-generator-vertx/src/main/java/module-info.java
+++ b/http-generator-vertx/src/main/java/module-info.java
@@ -4,9 +4,6 @@
requires java.compiler;
requires java.sql;
- requires static io.avaje.http.api.vertx;
requires static io.avaje.prism;
-
- // SHADED: All content after this line will be removed at package time
requires transitive io.avaje.http.generator.core;
}
diff --git a/http-hibernate-validator/pom.xml b/http-hibernate-validator/pom.xml
index 6c25adc0a..093f46ac1 100644
--- a/http-hibernate-validator/pom.xml
+++ b/http-hibernate-validator/pom.xml
@@ -5,9 +5,9 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
-
+
avaje-http-hibernate-validator
avaje-http-hibernate-validator
@@ -33,7 +33,7 @@
io.avaje
avaje-http-api
- 3.8
+ ${project.version}
provided
diff --git a/http-inject-plugin/pom.xml b/http-inject-plugin/pom.xml
index 12fa09ea0..66f98b8b1 100644
--- a/http-inject-plugin/pom.xml
+++ b/http-inject-plugin/pom.xml
@@ -4,7 +4,7 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
@@ -16,32 +16,40 @@
avaje-http-parent-1.19
+
+ 12.4
+ 2.16
+
+
io.avaje
- avaje-inject-generator
- 12.4
- provided
+ avaje-inject
+ ${avaje.inject.version}
true
+ provided
io.avaje
avaje-http-api
- 2.7
+
+ 3.8
true
provided
io.avaje
avaje-http-api-vertx
- ${project.version}
+
+ 3.8
true
provided
+
io.avaje
avaje-spi-service
- 2.16
+ ${avaje.spi.version}
provided
true
@@ -85,6 +93,39 @@
0
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ io.avaje
+ avaje-inject-generator
+ ${avaje.inject.version}
+
+
+ io.avaje
+ avaje-spi-service
+ 2.16
+
+
+
+
+
+
+ io.avaje
+ avaje-inject-maven-plugin
+ 12.4
+
+
+
+ process-sources
+
+ provides
+
+
+
+
diff --git a/openapi-maven-plugin/pom.xml b/openapi-maven-plugin/pom.xml
index 5788fc16a..0a81d23f9 100644
--- a/openapi-maven-plugin/pom.xml
+++ b/openapi-maven-plugin/pom.xml
@@ -4,17 +4,17 @@
io.avaje
avaje-http-parent
- 3.8
+ 4.0-B.1
..
openapi-maven-plugin
maven-plugin
openapi-maven-plugin
- https://avaje.io/http
+
+ The Avaje OpenAPI Maven Plugin is used when you want to copy generated OpenAPI definitions into your source directory, optionally merging it with other definitions
- 2026-04-01T04:55:18Z
3.11
3.9.14
@@ -25,11 +25,6 @@
2.20.1
-
- scm:git:git@github.com:avaje/avaje-http.git
- HEAD
-
-
org.apache.maven
diff --git a/pom.xml b/pom.xml
index 96f256f0d..8965fac92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,22 +10,25 @@
io.avaje
avaje-http-parent
avaje-http-parent
- 3.8
+ 4.0-B.1
pom
+ https://avaje.io/http
+
+ Library that generates adapter code for Jex, Javalin and Helidon SE APIs via Annotation Processing.
scm:git:git@github.com:avaje/avaje-http.git
- avaje-http-parent-1.19
+ HEAD
true
+ 2026-04-01T04:55:18Z
+
+ 2.1-RC2
2.2.45
2.14.2
3.0-RC10
- 2.1-RC2
- 2026-04-01T04:55:18Z
- ${project.build.directory}${file.separator}module-info.shade
@@ -45,11 +48,13 @@
http-client
http-client-gson-adapter
http-client-moshi-adapter
+ http-generator-prisms
http-generator-core
http-generator-javalin
http-generator-sigma
http-generator-client
http-hibernate-validator
+ shaded-generators
@@ -68,6 +73,12 @@
[21,)
+
http-inject-plugin
htmx-nima
htmx-nima-jstache
@@ -88,87 +99,5 @@
tests
-
-
- module-info.shade
-
-
- src/etc/activate-shade-module
-
-
-
-
-
- maven-antrun-plugin
- 3.2.0
-
-
- process-resources
-
-
-
-
-
-
-
-
- run
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
-
-
-
- module-info.java
-
-
-
-
- io.swagger.core.v3:swagger-models
-
- io/swagger/v3/oas/models/callbacks/**
- io/swagger/v3/oas/models/examples/**
-
-
-
-
-
-
- package
-
- shade
-
-
-
-
-
-
- org.moditect
- moditect-maven-plugin
-
-
- add-module-infos
- package
-
- add-module-info
-
-
- true
-
- ${module-info.shade}
-
-
-
-
-
-
-
-
-
-
diff --git a/shaded-generators/client/module-info.java b/shaded-generators/client/module-info.java
new file mode 100644
index 000000000..3954a6513
--- /dev/null
+++ b/shaded-generators/client/module-info.java
@@ -0,0 +1,7 @@
+module io.avaje.http.client.generator {
+
+ provides javax.annotation.processing.Processor with io.avaje.http.generator.client.ClientProcessor;
+
+ requires java.compiler;
+ requires java.sql;
+}
diff --git a/shaded-generators/client/pom.xml b/shaded-generators/client/pom.xml
new file mode 100644
index 000000000..ce5b9caa2
--- /dev/null
+++ b/shaded-generators/client/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+ io.avaje
+ avaje-http-generator-shaded-parent
+ 4.0-B.1
+
+ jar
+ avaje-http-client-generator-shaded
+ avaje-http-client-generator-shaded
+
+
+
+ io.avaje
+ avaje-http-client-generator
+ ${project.version}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+ io.avaje.http.generator.prisms
+ io.avaje.http.client.generator.prisms
+
+
+ io.avaje.http.generator.core
+ io.avaje.http.client.generator.core
+
+
+ io.swagger.v3
+ io.avaje.http.client.generator.swagger.v3
+
+
+
+
+
+
+
+
diff --git a/shaded-generators/client/src/main/java/io/avaje/http/generator/client/package-info.java b/shaded-generators/client/src/main/java/io/avaje/http/generator/client/package-info.java
new file mode 100644
index 000000000..466b5ce2b
--- /dev/null
+++ b/shaded-generators/client/src/main/java/io/avaje/http/generator/client/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This is a stub to allow for generation of a shaded processor JAR
+ */
+package io.avaje.http.generator.client;
diff --git a/shaded-generators/helidon/module-info.java b/shaded-generators/helidon/module-info.java
new file mode 100644
index 000000000..de7f5db7f
--- /dev/null
+++ b/shaded-generators/helidon/module-info.java
@@ -0,0 +1,7 @@
+module io.avaje.http.client.helidon {
+
+ provides javax.annotation.processing.Processor with io.avaje.http.generator.helidon.nima.HelidonProcessor;
+
+ requires java.compiler;
+ requires java.sql;
+}
diff --git a/shaded-generators/helidon/pom.xml b/shaded-generators/helidon/pom.xml
new file mode 100644
index 000000000..c5116960f
--- /dev/null
+++ b/shaded-generators/helidon/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+ io.avaje
+ avaje-http-generator-shaded-parent
+ 4.0-B.1
+
+ jar
+ avaje-http-helidon-generator-shaded
+ avaje-http-helidon-generator-shaded
+
+
+
+ io.avaje
+ avaje-http-helidon-generator
+ ${project.version}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+ io.avaje.http.generator.prisms
+ io.avaje.http.helidon.generator.prisms
+
+
+ io.avaje.http.generator.core
+ io.avaje.http.helidon.generator.core
+
+
+ io.swagger.v3
+ io.avaje.http.helidon.generator.swagger.v3
+
+
+
+
+
+
+
+
diff --git a/shaded-generators/helidon/src/main/java/io/avaje/http/generator/helidon/package-info.java b/shaded-generators/helidon/src/main/java/io/avaje/http/generator/helidon/package-info.java
new file mode 100644
index 000000000..7d0fcb94a
--- /dev/null
+++ b/shaded-generators/helidon/src/main/java/io/avaje/http/generator/helidon/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This is a stub to allow for generation of a shaded processor JAR
+ */
+package io.avaje.http.generator.helidon;
diff --git a/shaded-generators/pom.xml b/shaded-generators/pom.xml
new file mode 100644
index 000000000..cca8d99c1
--- /dev/null
+++ b/shaded-generators/pom.xml
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+
+ io.avaje
+ avaje-http-parent
+ 4.0-B.1
+
+ pom
+ avaje-http-generator-shaded-parent
+ avaje-http-generator-shaded-parent
+
+
+ none
+
+
+
+ client
+ helidon
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+ module-info.java
+
+
+
+
+ io.swagger.core.v3:swagger-models
+
+ io/swagger/v3/oas/models/callbacks/**
+ io/swagger/v3/oas/models/examples/**
+
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ org.moditect
+ moditect-maven-plugin
+
+
+ add-module-infos
+ package
+
+ add-module-info
+
+
+ true
+
+ module-info.java
+
+
+
+
+
+
+
+
+
diff --git a/tests/pom.xml b/tests/pom.xml
index 484e8eb4c..2174a35ae 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -4,7 +4,7 @@
avaje-http-parent
io.avaje
- 3.8
+ 4.0-B.1
tests
diff --git a/tests/test-client-generation/pom.xml b/tests/test-client-generation/pom.xml
index f162d819c..e3878768d 100644
--- a/tests/test-client-generation/pom.xml
+++ b/tests/test-client-generation/pom.xml
@@ -4,7 +4,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-client-generation
diff --git a/tests/test-client/pom.xml b/tests/test-client/pom.xml
index 4b1fa851a..2b91b4ef2 100644
--- a/tests/test-client/pom.xml
+++ b/tests/test-client/pom.xml
@@ -6,7 +6,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-client
diff --git a/tests/test-javalin-jsonb/pom.xml b/tests/test-javalin-jsonb/pom.xml
index 32ec5a651..6da02cf09 100644
--- a/tests/test-javalin-jsonb/pom.xml
+++ b/tests/test-javalin-jsonb/pom.xml
@@ -5,7 +5,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-javalin-jsonb
diff --git a/tests/test-javalin-jsonb/src/main/java/org/example/myapp/Main.java b/tests/test-javalin-jsonb/src/main/java/org/example/myapp/Main.java
index 4152cfb67..a55fc6062 100644
--- a/tests/test-javalin-jsonb/src/main/java/org/example/myapp/Main.java
+++ b/tests/test-javalin-jsonb/src/main/java/org/example/myapp/Main.java
@@ -6,7 +6,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import io.avaje.http.api.AvajeJavalinPlugin;
+import io.avaje.http.api.javalin.AvajeJavalinPlugin;
import io.avaje.http.api.InvalidPathArgumentException;
import io.avaje.http.api.InvalidTypeArgumentException;
import io.avaje.http.api.ValidationException;
diff --git a/tests/test-javalin/pom.xml b/tests/test-javalin/pom.xml
index 6896db1c1..e21466892 100644
--- a/tests/test-javalin/pom.xml
+++ b/tests/test-javalin/pom.xml
@@ -4,7 +4,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-javalin
diff --git a/tests/test-javalin/src/main/java/org/example/myapp/Main.java b/tests/test-javalin/src/main/java/org/example/myapp/Main.java
index 71555e7be..f4d111ee6 100644
--- a/tests/test-javalin/src/main/java/org/example/myapp/Main.java
+++ b/tests/test-javalin/src/main/java/org/example/myapp/Main.java
@@ -6,7 +6,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import io.avaje.http.api.AvajeJavalinPlugin;
+import io.avaje.http.api.javalin.AvajeJavalinPlugin;
import io.avaje.http.api.InvalidPathArgumentException;
import io.avaje.http.api.InvalidTypeArgumentException;
import io.avaje.http.api.ValidationException;
diff --git a/tests/test-jex/pom.xml b/tests/test-jex/pom.xml
index a25a89924..17591ebff 100644
--- a/tests/test-jex/pom.xml
+++ b/tests/test-jex/pom.xml
@@ -4,7 +4,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-jex
diff --git a/tests/test-nima-htmx/pom.xml b/tests/test-nima-htmx/pom.xml
index de395f27e..a1efc4ad8 100644
--- a/tests/test-nima-htmx/pom.xml
+++ b/tests/test-nima-htmx/pom.xml
@@ -6,7 +6,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-nima-htmx
diff --git a/tests/test-nima-jsonb/pom.xml b/tests/test-nima-jsonb/pom.xml
index a101eec57..3c2b0698d 100644
--- a/tests/test-nima-jsonb/pom.xml
+++ b/tests/test-nima-jsonb/pom.xml
@@ -6,7 +6,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-nima-jsonb
diff --git a/tests/test-nima/pom.xml b/tests/test-nima/pom.xml
index 36ce06dcf..45be96e88 100644
--- a/tests/test-nima/pom.xml
+++ b/tests/test-nima/pom.xml
@@ -6,7 +6,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-nima
diff --git a/tests/test-sigma/pom.xml b/tests/test-sigma/pom.xml
index c19300a75..ee237c79b 100644
--- a/tests/test-sigma/pom.xml
+++ b/tests/test-sigma/pom.xml
@@ -5,7 +5,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-sigma
diff --git a/tests/test-vertx-jsonb/pom.xml b/tests/test-vertx-jsonb/pom.xml
index b57bbe60c..0f4419d9b 100644
--- a/tests/test-vertx-jsonb/pom.xml
+++ b/tests/test-vertx-jsonb/pom.xml
@@ -5,7 +5,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-vertx-jsonb
diff --git a/tests/test-vertx/pom.xml b/tests/test-vertx/pom.xml
index 9eef96d6d..068bd333c 100644
--- a/tests/test-vertx/pom.xml
+++ b/tests/test-vertx/pom.xml
@@ -5,7 +5,7 @@
io.avaje
tests
- 3.8
+ 4.0-B.1
test-vertx