Upgraded guice version and moved to jakarta annotations

Changed to Java 17
This commit is contained in:
Lazar Blanuša
2024-07-09 16:33:17 +02:00
committed by Dave Syer
parent 5dac92281e
commit 2ee1b030de
28 changed files with 82 additions and 106 deletions

View File

@@ -2,7 +2,7 @@
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="com.puppycrawl.tools.checkstyle.Checker">
<module name="com.puppycrawl.tools.checkstyle.Checker">
<module name="io.spring.javaformat.checkstyle.SpringChecks" />
<!-- Enable @SuppressWarnings -->

15
pom.xml
View File

@@ -5,7 +5,7 @@
<groupId>org.springframework.guice</groupId>
<artifactId>spring-guice</artifactId>
<version>2.0.5-SNAPSHOT</version>
<version>3.0.0-SNAPSHOT</version>
<name>spring-guice</name>
<description>Utilities for using Spring with Guice and vice versa</description>
@@ -31,15 +31,20 @@
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version>
<version>7.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-throwingproviders</artifactId>
<version>5.1.0</version>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
@@ -78,10 +83,10 @@
</dependencies>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring.version>5.3.16</spring.version>
<spring.version>6.1.10</spring.version>
<!-- Important for reproducible builds. Update using e.g. ./mvnw versions:set -DnewVersion=... -->
<project.build.outputTimestamp>2023-05-25T11:06:34Z</project.build.outputTimestamp>
</properties>

View File

@@ -16,10 +16,9 @@
package org.springframework.guice.annotation;
import javax.inject.Provider;
import com.google.inject.Injector;
import com.google.inject.Key;
import jakarta.inject.Provider;
import org.springframework.beans.factory.FactoryBean;

View File

@@ -270,8 +270,8 @@ class ModuleRegistryConfiguration implements BeanDefinitionRegistryPostProcessor
if (key.getAnnotation() instanceof Named) {
return ((Named) key.getAnnotation()).value();
}
else if (key.getAnnotation() instanceof javax.inject.Named) {
return ((javax.inject.Named) key.getAnnotation()).value();
else if (key.getAnnotation() instanceof jakarta.inject.Named) {
return ((jakarta.inject.Named) key.getAnnotation()).value();
}
else if (key.getAnnotationType() != null) {
String value = key.getAnnotationType().getName();

View File

@@ -21,8 +21,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.inject.Qualifier;
import com.google.inject.Binding;
import com.google.inject.Injector;
import com.google.inject.Key;
@@ -35,6 +33,7 @@ import com.google.inject.name.Named;
import com.google.inject.spi.Element;
import com.google.inject.spi.InjectionPoint;
import com.google.inject.spi.TypeConverterBinding;
import jakarta.inject.Qualifier;
import org.springframework.beans.factory.annotation.BeanFactoryAnnotationUtils;
import org.springframework.beans.factory.annotation.QualifierAnnotationAutowireCandidateResolver;
@@ -65,7 +64,7 @@ public class SpringInjector implements Injector {
AutowireCandidateResolver resolver = this.beanFactory.getAutowireCandidateResolver();
if (resolver instanceof QualifierAnnotationAutowireCandidateResolver && JAKARTA) {
// Guice does not yet support jakarta namespace but we can help Spring 6 to
// recognize javax.inject
// recognize jakarta.inject
QualifierAnnotationAutowireCandidateResolver qualified = (QualifierAnnotationAutowireCandidateResolver) resolver;
qualified.addQualifierType(Qualifier.class);
}
@@ -166,8 +165,8 @@ public class SpringInjector implements Injector {
if (annotation instanceof Named) {
return ((Named) annotation).value();
}
else if (annotation instanceof javax.inject.Named) {
return ((javax.inject.Named) annotation).value();
else if (annotation instanceof jakarta.inject.Named) {
return ((jakarta.inject.Named) annotation).value();
}
return key.getTypeLiteral().getRawType().getSimpleName();
}

View File

@@ -23,9 +23,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.inject.Provider;
import com.google.inject.spi.ProvisionListener;
import jakarta.inject.Provider;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;

View File

@@ -21,12 +21,11 @@ import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import javax.inject.Provider;
import com.google.inject.BindingAnnotation;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.name.Names;
import jakarta.inject.Provider;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

View File

@@ -98,10 +98,7 @@ public class GuiceModuleMetadata implements BindingTypeMatcher {
@Override
public boolean matches(String name, Type type) {
Type rawType = (type instanceof ParameterizedType) ? ((ParameterizedType) type).getRawType() : type;
if (!matches(name) || !matches(rawType)) {
return false;
}
return true;
return matches(name) && matches(rawType);
}
private boolean matches(String name) {
@@ -125,9 +122,7 @@ public class GuiceModuleMetadata implements BindingTypeMatcher {
}
}
if (this.excludeNames != null && this.excludeNames.length > 0) {
if (PatternMatchUtils.simpleMatch(this.excludeNames, name)) {
return false;
}
return !PatternMatchUtils.simpleMatch(this.excludeNames, name);
}
return true;
}

View File

@@ -31,8 +31,6 @@ import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import javax.inject.Provider;
import com.google.inject.AbstractModule;
import com.google.inject.Binder;
import com.google.inject.Injector;
@@ -46,6 +44,7 @@ import com.google.inject.name.Named;
import com.google.inject.name.Names;
import com.google.inject.spi.ProvisionListener;
import com.google.inject.util.Types;
import jakarta.inject.Provider;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.FactoryBean;
@@ -197,8 +196,8 @@ public class SpringModule extends AbstractModule {
if (annotation instanceof Named) {
return ((Named) annotation).value();
}
else if (annotation instanceof javax.inject.Named) {
return ((javax.inject.Named) annotation).value();
else if (annotation instanceof jakarta.inject.Named) {
return ((jakarta.inject.Named) annotation).value();
}
else {
return null;
@@ -264,7 +263,7 @@ public class SpringModule extends AbstractModule {
return;
}
String typeName = type.getTypeName();
if (typeName.startsWith("com.google.inject") || typeName.startsWith("javax.inject.Provider")) {
if (typeName.startsWith("com.google.inject") || typeName.startsWith("jakarta.inject.Provider")) {
return;
}
if (type instanceof ParameterizedType) {

View File

@@ -16,13 +16,12 @@
package org.springframework.guice;
import javax.inject.Inject;
import javax.inject.Named;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Names;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -16,10 +16,9 @@
package org.springframework.guice;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeansException;

View File

@@ -21,10 +21,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Qualifier;
import com.google.inject.AbstractModule;
import com.google.inject.BindingAnnotation;
import com.google.inject.Injector;
@@ -34,6 +30,9 @@ import com.google.inject.name.Names;
import com.google.inject.throwingproviders.CheckedProvider;
import com.google.inject.throwingproviders.CheckedProvides;
import com.google.inject.throwingproviders.ThrowingProviderBinder;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Qualifier;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
@@ -69,9 +68,9 @@ public class BindingAnnotationTests {
assertThat(stringHolder.annotatedString).isEqualTo("annotated");
assertThat(stringHolder.otherAnnotatedString).isEqualTo("other");
// Check javax @Named
// Check jakarta @Named
SomeDependencyWithNamedAnnotationOnProvider someDependencyWithNamedAnnotationOnProvider = injector
.getInstance(Key.get(SomeDependencyWithNamedAnnotationOnProvider.class, Names.named("javaxNamed")));
.getInstance(Key.get(SomeDependencyWithNamedAnnotationOnProvider.class, Names.named("jakartaNamed")));
assertThat(someDependencyWithNamedAnnotationOnProvider).isNotNull();
// Check Guice @Named
@@ -211,7 +210,7 @@ public class BindingAnnotationTests {
}
public static class SomeProvider implements javax.inject.Provider<Object> {
public static class SomeProvider implements jakarta.inject.Provider<Object> {
@Override
public Object get() {
@@ -237,13 +236,13 @@ public class BindingAnnotationTests {
}
@Bean
@Named("javaxNamed")
@Named("jakartaNamed")
SomeDependencyWithNamedAnnotationOnProvider someDependencyWithNamedAnnotationOnProvider() {
return new SomeDependencyWithNamedAnnotationOnProvider();
}
@Bean(name = "javaxNamed2")
@Named("javaxNamed2")
@Bean(name = "jakartaNamed2")
@Named("jakartaNamed2")
SomeDependencyWithNamedAnnotationOnProvider someSecondDependencyWithNamedAnnotationOnProvider() {
return new SomeDependencyWithNamedAnnotationOnProvider();
}

View File

@@ -46,12 +46,12 @@ public class DuplicateNamesDifferentTypesTests {
assertThat(BeanFactoryAnnotationUtils.qualifiedBeanOfType(context.getBeanFactory(), SomeNamedDepWithType1.class,
"sameNameDifferentType")).isNotNull();
// Check javax @Named
assertThat(context.getBean(SomeJavaxNamedDepWithType1.class)).isNotNull();
assertThat(context.getBean(SomeJavaxNamedDepWithType2.class)).isNotNull();
// Check jakarta @Named
assertThat(context.getBean(SomeJakartaNamedDepWithType1.class)).isNotNull();
assertThat(context.getBean(SomeJakartaNamedDepWithType2.class)).isNotNull();
assertThat(BeanFactoryAnnotationUtils.qualifiedBeanOfType(context.getBeanFactory(),
SomeJavaxNamedDepWithType1.class, "sameJavaxName")).isNotNull();
context.getBeansOfType(SomeJavaxNamedDepWithType1.class);
SomeJakartaNamedDepWithType1.class, "sameJakartaName")).isNotNull();
context.getBeansOfType(SomeJakartaNamedDepWithType1.class);
context.close();
}
@@ -64,27 +64,27 @@ public class DuplicateNamesDifferentTypesTests {
}
public static class SomeJavaxNamedDepWithType1 {
public static class SomeJakartaNamedDepWithType1 {
}
public static class SomeJavaxNamedDepWithType2 {
public static class SomeJakartaNamedDepWithType2 {
}
public static class SomeClassWithDeps {
@Autowired
@Qualifier("sameJavaxName2")
SomeJavaxNamedDepWithType1 qualified;
@Qualifier("sameJakartaName2")
SomeJakartaNamedDepWithType1 qualified;
@Autowired
@Named("sameJavaxName2")
SomeJavaxNamedDepWithType1 named;
@Named("sameJakartaName2")
SomeJakartaNamedDepWithType1 named;
@Autowired
@javax.inject.Named("sameJavaxName2")
SomeJavaxNamedDepWithType1 javaxNamed;
@jakarta.inject.Named("sameJakartaName2")
SomeJakartaNamedDepWithType1 jakartaNamed;
}
@@ -104,15 +104,15 @@ public class DuplicateNamesDifferentTypesTests {
}
@Provides
@Named("sameJavaxName")
SomeJavaxNamedDepWithType1 someJavaxNamedDepWithType1() {
return new SomeJavaxNamedDepWithType1();
@Named("sameJakartaName")
SomeJakartaNamedDepWithType1 someJakartaNamedDepWithType1() {
return new SomeJakartaNamedDepWithType1();
}
@Provides
@Named("sameJavaxName")
SomeJavaxNamedDepWithType2 someJavaxNamedDepWithType2() {
return new SomeJavaxNamedDepWithType2();
@Named("sameJakartaName")
SomeJakartaNamedDepWithType2 someJakartaNamedDepWithType2() {
return new SomeJakartaNamedDepWithType2();
}
};
}

View File

@@ -18,8 +18,6 @@ package org.springframework.guice;
import java.util.List;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -27,6 +25,7 @@ import com.google.inject.Module;
import com.google.inject.Stage;
import com.google.inject.spi.Element;
import com.google.inject.spi.Elements;
import jakarta.inject.Inject;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Names;
import jakarta.inject.Singleton;
/**
* @author Dave Syer

View File

@@ -16,8 +16,7 @@
package org.springframework.guice;
import javax.inject.Inject;
import jakarta.inject.Inject;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

View File

@@ -16,12 +16,11 @@
package org.springframework.guice;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.name.Names;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice;
import javax.inject.Named;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Provides;
import jakarta.inject.Named;
import jakarta.inject.Singleton;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -16,11 +16,10 @@
package org.springframework.guice;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Module;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

View File

@@ -18,12 +18,11 @@ package org.springframework.guice;
import java.util.function.Supplier;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.google.inject.Key;
import com.google.inject.Provides;
import com.google.inject.TypeLiteral;
import jakarta.inject.Singleton;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.multibindings.Multibinder;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -16,11 +16,10 @@
package org.springframework.guice;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.support.RootBeanDefinition;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice.annotation;
import javax.inject.Inject;
import javax.inject.Named;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice.annotation;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Provides;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Singleton;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice.annotation;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
import com.google.inject.Injector;
import com.google.inject.Provides;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Singleton;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -16,13 +16,12 @@
package org.springframework.guice.module;
import javax.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Scopes;
import com.google.inject.util.Providers;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationEvent;

View File

@@ -19,16 +19,15 @@ package org.springframework.guice.module;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Qualifier;
import com.google.inject.ConfigurationException;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.ProvisionException;
import com.google.inject.name.Names;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Qualifier;
import org.junit.jupiter.api.Test;
import org.springframework.cache.annotation.Cacheable;
@@ -129,8 +128,7 @@ public class SpringModuleMetadataTests {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(config);
context.refresh();
Injector injector = Guice.createInjector(new SpringModule(context));
return injector;
return Guice.createInjector(new SpringModule(context));
}
interface Service {

View File

@@ -16,12 +16,11 @@
package org.springframework.guice.module;
import javax.inject.Inject;
import javax.inject.Named;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Bean;