Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jakarta inject #2631

Merged
merged 6 commits into from
Sep 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ target
.classpath
.project
.settings
.factorypath
dependency-reduced-pom.xml
bin

Expand Down
2 changes: 1 addition & 1 deletion docs/asciidoc/di-dagger.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ fun main(args: Array<String>) {
<2> Register MVC route provided by Dagger

Due the static nature of Dagger mvc integration identical to normal usage. For custom scopes/lifecycles
Dagger generate a `javax.inject.Provider` on such use cases you need to switch and use the provider
Dagger generate a `jakarta.inject.Provider` on such use cases you need to switch and use the provider
version of the `mvc` method:

.MVC and Dagger provider
Expand Down
2 changes: 1 addition & 1 deletion docs/asciidoc/modules/guice.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,4 @@ fun main(args: Array<String>) {
The lifecycle of `MyController` is now managed by Guice. Also:

- In Guice, the default scope is `prototype` (creates a new instance per request)
- If you prefer a single instance add the `javax.inject.Singleton` annotation
- If you prefer a single instance add the `jakarta.inject.Singleton` annotation
2 changes: 1 addition & 1 deletion docs/asciidoc/modules/quartz.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ This other example uses Guice as dependency provider:
.Guice provisioning
[source,java]
----
import javax.inject.Inject;
import jakarta.inject.Inject;

{
install(new GuiceModule());
Expand Down
2 changes: 1 addition & 1 deletion docs/asciidoc/modules/spring.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public class BillingService {
.Kotlin
[source,kotlin,role="secondary"]
----
import javax.inject.Inject
import jakarta.inject.Inject
import org.springframework.beans.factory.annotation.Value

class BillingService @Inject constructor(@Value("\${currency}") val currency: String) {
Expand Down
2 changes: 1 addition & 1 deletion docs/asciidoc/modules/weld.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ The Weld extension does a bit more in relation to MVC routes:
automatically registered. No need to register it manually

- The default scope is `prototype` (creates a new instance per request). If you prefer a single
instance add the `javax.inject.Singleton` annotation
instance add the `jakarta.inject.Singleton` annotation

.MVC route
[source, java, role="primary"]
Expand Down
6 changes: 3 additions & 3 deletions docs/asciidoc/mvc-api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ one you like most.
[source, java, role = "primary"]
----

import javax.inject.Provider;
import jakarta.inject.Provider;

public class App extends Jooby {
{
Expand All @@ -201,7 +201,7 @@ public class App extends Jooby {
.Kotlin
[source, kotlin, role = "secondary"]
----
import javax.inject.Provider
import jakarta.inject.Provider
import io.jooby.*

fun main(args: Array<String>) {
Expand All @@ -212,7 +212,7 @@ fun main(args: Array<String>) {
}
----

The javadoc:Jooby[mvc, javax.inject.Provider] does the same job, might or might not delegate
The javadoc:Jooby[mvc, jakarta.inject.Provider] does the same job, might or might not delegate
instantiation to a dependency injection framework but most important let you control lifecycle of
MVC routes (Singleton vs Non-Singleton routes).

Expand Down
5 changes: 2 additions & 3 deletions docs/asciidoc/value-api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -400,15 +400,14 @@ The target `POJO` must follow one of these rules:

- Has a zero argguments/default constructor, or
- Has only one constructor
- Has multiple constructors, but only one is annotated with
https://static.javadoc.io/javax.inject/javax.inject/1/javax/inject/Inject.html[Inject]
- Has multiple constructors, but only one is annotated with https://javadoc.io/doc/jakarta.inject/jakarta.inject-api/2.0.1/jakarta.inject/jakarta/inject/Inject.html[Inject]

The decoder matches HTTP parameters in the following order:

- As constructor arguments
- As setter method

HTTP parameter name which are not a valid Java identifier must be annotated with https://static.javadoc.io/javax.inject/javax.inject/1/javax/inject/Named.html[Named]:
HTTP parameter name which are not a valid Java identifier must be annotated with https://javadoc.io/doc/jakarta.inject/jakarta.inject-api/2.0.1/jakarta.inject/jakarta/inject/Named.html[Named]:

.Java
[source, java,role="primary"]
Expand Down
6 changes: 3 additions & 3 deletions jooby/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@
<optional>true</optional>
</dependency>

<!-- javax.inject -->
<!-- jakarta.inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
</dependency>

<!-- config -->
Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/Jooby.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Provider;
import jakarta.inject.Provider;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/MvcFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
package io.jooby;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

/**
* Created by a Jooby annotation processor tool using the {@link java.util.ServiceLoader} API.
Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/Router.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/ServiceRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.util.Map;
import java.util.Set;

Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/annotations/Header.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
package io.jooby.annotations;

import javax.inject.Qualifier;
import jakarta.inject.Qualifier;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import io.jooby.RequestScope;
import io.jooby.exception.RegistryException;

import javax.inject.Provider;
import jakarta.inject.Provider;

import static io.jooby.RequestScope.bind;
import static io.jooby.RequestScope.unbind;
Expand Down
2 changes: 1 addition & 1 deletion jooby/src/main/java/io/jooby/internal/RouterImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
import java.util.stream.Stream;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
import java.util.function.Consumer;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
import jakarta.inject.Inject;
import jakarta.inject.Named;

import io.jooby.BeanConverter;
import io.jooby.FileUpload;
Expand Down
4 changes: 2 additions & 2 deletions jooby/src/test/java/io/jooby/ValueToBeanTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import io.jooby.internal.ValueConverterHelper;
import org.junit.jupiter.api.Test;

import javax.inject.Inject;
import javax.inject.Named;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.objectweb.asm.Type;

import javax.annotation.processing.ProcessingEnvironment;
import javax.inject.Provider;
import jakarta.inject.Provider;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
Expand Down Expand Up @@ -112,12 +112,12 @@ public void compile(String internalName, ClassWriter writer,
String methodName = nameRegistry.generate(key);

methodVisitor
.visitInvokeDynamicInsn("apply", "(Ljavax/inject/Provider;)Lio/jooby/Route$Handler;",
.visitInvokeDynamicInsn("apply", "(Ljakarta/inject/Provider;)Lio/jooby/Route$Handler;",
new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory",
"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;",
false), new Object[]{Type.getType("(Lio/jooby/Context;)Ljava/lang/Object;"),
new Handle(Opcodes.H_INVOKESTATIC, internalName, methodName,
"(Ljavax/inject/Provider;Lio/jooby/Context;)Ljava/lang/Object;", false),
"(Ljakarta/inject/Provider;Lio/jooby/Context;)Ljava/lang/Object;", false),
Type.getType("(Lio/jooby/Context;)Ljava/lang/Object;")});

/** Apply implementation: */
Expand Down Expand Up @@ -146,7 +146,7 @@ private void apply(ClassWriter writer, String moduleInternalName, String lambdaN
String methodDescriptor = methodDescriptor();
MethodVisitor apply = writer
.visitMethod(ACC_PRIVATE | ACC_STATIC | ACC_SYNTHETIC, lambdaName,
"(Ljavax/inject/Provider;Lio/jooby/Context;)Ljava/lang/Object;", null,
"(Ljakarta/inject/Provider;Lio/jooby/Context;)Ljava/lang/Object;", null,
new String[]{"java/lang/Exception"});
apply.visitParameter("provider", ACC_FINAL | ACC_SYNTHETIC);
apply.visitParameter("ctx", ACC_SYNTHETIC);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,17 +113,17 @@ private void defaultConstructor(ClassWriter writer) {
private void create(ClassWriter writer) {
String lambdaCreate = "makeExtension";
MethodVisitor methodVisitor = writer
.visitMethod(ACC_PUBLIC, "create", "(Ljavax/inject/Provider;)Lio/jooby/Extension;", null,
.visitMethod(ACC_PUBLIC, "create", "(Ljakarta/inject/Provider;)Lio/jooby/Extension;", null,
null);
methodVisitor.visitParameter("provider", 0);
methodVisitor.visitCode();
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitInvokeDynamicInsn("install", "(Ljavax/inject/Provider;)Lio/jooby/Extension;",
methodVisitor.visitInvokeDynamicInsn("install", "(Ljakarta/inject/Provider;)Lio/jooby/Extension;",
new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory",
"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;",
false), new Object[]{Type.getType("(Lio/jooby/Jooby;)V"),
new Handle(Opcodes.H_INVOKESTATIC, moduleInternalName, lambdaCreate,
"(Ljavax/inject/Provider;Lio/jooby/Jooby;)V", false),
"(Ljakarta/inject/Provider;Lio/jooby/Jooby;)V", false),
Type.getType("(Lio/jooby/Jooby;)V")});
methodVisitor.visitInsn(ARETURN);
methodVisitor.visitMaxs(0, 0);
Expand All @@ -135,24 +135,24 @@ private void create(ClassWriter writer) {
private void makeExtension(ClassWriter writer, String methodName) {
MethodVisitor methodVisitor = writer
.visitMethod(ACC_PRIVATE | ACC_STATIC | ACC_SYNTHETIC, methodName,
"(Ljavax/inject/Provider;Lio/jooby/Jooby;)V", null,
"(Ljakarta/inject/Provider;Lio/jooby/Jooby;)V", null,
new String[]{"java/lang/Exception"});
methodVisitor.visitParameter("provider", Opcodes.ACC_FINAL | ACC_SYNTHETIC);
methodVisitor.visitParameter("app", ACC_SYNTHETIC);
methodVisitor.visitCode();
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKESTATIC, moduleInternalName, "install",
"(Lio/jooby/Jooby;Ljavax/inject/Provider;)V", false);
"(Lio/jooby/Jooby;Ljakarta/inject/Provider;)V", false);
methodVisitor.visitInsn(RETURN);
methodVisitor.visitMaxs(0, 0);
methodVisitor.visitEnd();
}

private void install(ClassWriter writer, List<HandlerCompiler> handlers) throws Exception {
MethodVisitor visitor = writer.visitMethod(ACC_PRIVATE | ACC_STATIC, "install",
"(Lio/jooby/Jooby;Ljavax/inject/Provider;)V",
"(Lio/jooby/Jooby;Ljavax/inject/Provider<" + Type.getObjectType(controllerClass.replace(".", "/")) + ">;)V",
"(Lio/jooby/Jooby;Ljakarta/inject/Provider;)V",
"(Lio/jooby/Jooby;Ljakarta/inject/Provider<" + Type.getObjectType(controllerClass.replace(".", "/")) + ">;)V",
new String[]{"java/lang/Exception"});
visitor.visitParameter("app", 0);
visitor.visitParameter("provider", 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import io.jooby.internal.converter.ReflectiveBeanConverter;
import org.objectweb.asm.util.ASMifier;

import javax.inject.Provider;
import jakarta.inject.Provider;
import javax.tools.JavaFileObject;
import java.io.IOException;
import java.lang.reflect.Constructor;
Expand Down
2 changes: 1 addition & 1 deletion modules/jooby-apt/src/test/java/output/MvcExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import source.Controller1527;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

public class MvcExtension implements MvcFactory {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package output;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

import io.jooby.Context;
import io.jooby.Route;
Expand Down
2 changes: 1 addition & 1 deletion modules/jooby-apt/src/test/java/tests/Expected1786b.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import source.Controller1786b;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.util.UUID;

public class Expected1786b implements MvcFactory {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import source.Controller1786b;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.util.UUID;

public class Expected1807 implements MvcFactory {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import io.jooby.Route;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

public class Expected1814 implements MvcFactory {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import io.jooby.Route;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;

public class Expected1859 implements MvcFactory {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package tests.i2026;

import javax.inject.Provider;
import jakarta.inject.Provider;

import io.jooby.Extension;
import io.jooby.Jooby;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package tests.i2325;

import javax.inject.Provider;
import jakarta.inject.Provider;

import io.jooby.Extension;
import io.jooby.Jooby;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.slf4j.Logger;

import javax.annotation.Nonnull;
import javax.inject.Provider;
import jakarta.inject.Provider;
import java.util.Optional;

import static com.github.lalyos.jfiglet.FigletFont.convertOneLine;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import org.mockito.Mockito;
import org.slf4j.Logger;

import javax.inject.Provider;
import jakarta.inject.Provider;

import static com.github.lalyos.jfiglet.FigletFont.convertOneLine;
import static io.jooby.banner.BannerModule.fontPath;
Expand Down
Loading