Skip to content

Commit 7826ddd

Browse files
committed
jooby-apt: MVC generated controllers require jakarta-inject should be documented because of code generation.
- fix #3460
1 parent 293a8c3 commit 7826ddd

File tree

10 files changed

+50
-98
lines changed

10 files changed

+50
-98
lines changed

jooby/src/main/java/io/jooby/Jooby.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -552,15 +552,15 @@ public Jooby mvc(@NonNull Class router) {
552552
public <T> Jooby mvc(@NonNull Class<T> router, @NonNull Provider<T> provider) {
553553
try {
554554
MvcFactory module = loadModule(router);
555-
Extension extension = module.create(provider);
555+
Extension extension = module.create(provider::get);
556556
extension.install(this);
557557
return this;
558558
} catch (Exception x) {
559559
throw SneakyThrows.propagate(x);
560560
}
561561
}
562562

563-
private MvcFactory loadModule(Class router) {
563+
private <T> MvcFactory<T> loadModule(Class<T> router) {
564564
try {
565565
ServiceLoader<MvcFactory> modules = ServiceLoader.load(MvcFactory.class);
566566
return stream(modules.spliterator(), false)

jooby/src/main/java/io/jooby/MvcFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package io.jooby;
77

88
import edu.umd.cs.findbugs.annotations.NonNull;
9-
import jakarta.inject.Provider;
109

1110
/**
1211
* Created by a Jooby annotation processor tool using the {@link java.util.ServiceLoader} API.
@@ -28,5 +27,5 @@ public interface MvcFactory<T> {
2827
* @param provider MVC route instance provider.
2928
* @return All mvc route as extension module.
3029
*/
31-
@NonNull Extension create(@NonNull Provider<T> provider);
30+
@NonNull Extension create(@NonNull java.util.function.Supplier<T> provider);
3231
}

modules/jooby-apt/src/main/resources/io/jooby/internal/apt/Source.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ${generatedClassName} implements io.jooby.MvcExtension, io.jooby.Mv
1616
this(ctx -> ctx.require(type));
1717
}
1818

19-
public ${generatedClassName}(jakarta.inject.Provider<${className}> provider) {
19+
public ${generatedClassName}(java.util.function.Supplier<${className}> provider) {
2020
this(ctx -> provider.get());
2121
}
2222

@@ -34,7 +34,7 @@ public boolean supports(Class<${className}> type) {
3434
return type == ${className}.class;
3535
}
3636

37-
public io.jooby.Extension create(jakarta.inject.Provider<${className}> provider) {
37+
public io.jooby.Extension create(java.util.function.Supplier<${className}> provider) {
3838
return new ${generatedClassName}(provider);
3939
}
4040
}

modules/jooby-apt/src/main/resources/io/jooby/internal/apt/Source.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ open class ${generatedClassName}(protected val factory: java.util.function.Funct
99

1010
constructor(type: kotlin.reflect.KClass<${className}>) : this(java.util.function.Function<io.jooby.Context, ${className}> { ctx: io.jooby.Context -> ctx.require<${className}>(type.java) })
1111

12-
constructor(provider: jakarta.inject.Provider<${className}?>) : this(java.util.function.Function<io.jooby.Context, ${className}> { provider.get()!! })
12+
constructor(provider: java.util.function.Supplier<${className}?>) : this(java.util.function.Function<io.jooby.Context, ${className}> { provider.get()!! })
1313

1414
@Throws(Exception::class)
1515
override fun install(app: io.jooby.Jooby) {
@@ -22,7 +22,7 @@ ${methods}
2222
return type == ${className}::class.java
2323
}
2424

25-
override fun create(provider: jakarta.inject.Provider<${className}?>): io.jooby.Extension {
25+
override fun create(provider: java.util.function.Supplier<${className}?>): io.jooby.Extension {
2626
return ${generatedClassName}(provider)
2727
}
2828
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Jooby https://jooby.io
3+
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
4+
* Copyright 2014 Edgar Espina
5+
*/
6+
package tests.i3460;
7+
8+
import edu.umd.cs.findbugs.annotations.NonNull;
9+
import io.jooby.annotation.GET;
10+
import io.jooby.annotation.Path;
11+
import io.jooby.annotation.QueryParam;
12+
13+
@Path("/path")
14+
public class C3460 {
15+
@GET("/required-string-param")
16+
public String requiredStringParam(@QueryParam("value") @NonNull String value) {
17+
return value;
18+
}
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Jooby https://jooby.io
3+
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
4+
* Copyright 2014 Edgar Espina
5+
*/
6+
package tests.i3460;
7+
8+
import static org.junit.jupiter.api.Assertions.assertTrue;
9+
10+
import org.junit.jupiter.api.Test;
11+
12+
import io.jooby.apt.ProcessorRunner;
13+
14+
public class Issue3460 {
15+
16+
@Test
17+
public void shouldNotUseJakartaProvider() throws Exception {
18+
new ProcessorRunner(new C3460())
19+
.withRouter(
20+
(app, source) -> {
21+
assertTrue(source.toString().contains("C3460_(java.util.function.Supplier<"));
22+
});
23+
}
24+
}

modules/jooby-avaje-inject/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,6 @@
9191
<arg>-parameters</arg>
9292
</compilerArgs>
9393
<annotationProcessorPaths>
94-
<path>
95-
<groupId>io.jooby</groupId>
96-
<artifactId>jooby-apt</artifactId>
97-
<version>${jooby.version}</version>
98-
</path>
9994
<path>
10095
<groupId>io.avaje</groupId>
10196
<artifactId>avaje-inject-generator</artifactId>

modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/AvajeInjectModuleTest.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/Controller.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

modules/jooby-avaje-inject/src/test/java/io/jooby/avaje/inject/app/TestApp.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)