From 24614b116705e156a97b3c02740f22ad1ba0ce19 Mon Sep 17 00:00:00 2001 From: Simon DeMartini Date: Sun, 20 Feb 2022 18:11:38 -0800 Subject: [PATCH] Upgrade to Guice 4.2.3 --- pom.xml | 8 +------ .../ModuleRegistryConfiguration.java | 23 +++++++++++++------ .../guice/injector/SpringInjector.java | 12 ++++++++++ 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 6a7af15..5ff19ce 100644 --- a/pom.xml +++ b/pom.xml @@ -31,15 +31,9 @@ com.google.inject guice - 4.1.0 + 4.2.3 compile - - com.google.inject.extensions - guice-multibindings - 4.1.0 - test - org.springframework spring-test diff --git a/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java b/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java index 5fd4390..d1ce23a 100644 --- a/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java +++ b/src/main/java/org/springframework/guice/annotation/ModuleRegistryConfiguration.java @@ -21,10 +21,7 @@ import com.google.inject.Module; import com.google.inject.Scopes; import com.google.inject.Stage; import com.google.inject.name.Named; -import com.google.inject.spi.Element; -import com.google.inject.spi.ElementSource; -import com.google.inject.spi.Elements; -import com.google.inject.spi.PrivateElements; +import com.google.inject.spi.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.BeansException; @@ -242,11 +239,10 @@ class ModuleRegistryConfiguration implements BeanDefinitionRegistryPostProcessor protected List removeDuplicates(List elements) { List duplicateElements = elements.stream() .filter(e -> e instanceof Binding).map(e -> (Binding) e) - .collect(Collectors.groupingBy(Binding::getKey)).entrySet().stream() + .collect(Collectors.groupingBy(ModuleRegistryConfiguration::getLinkedKeyIfRequired)).entrySet().stream() .filter(e -> e.getValue().size() > 1 && e.getValue().stream().anyMatch( binding -> binding.getSource() != null && binding.getSource() - .toString().contains(SpringModule.SPRING_GUICE_SOURCE))) // find - // duplicates + .toString().contains(SpringModule.SPRING_GUICE_SOURCE))) // find duplicates .flatMap(e -> e.getValue().stream()) .filter(e -> e.getSource() != null && !e.getSource().toString() .contains(SpringModule.SPRING_GUICE_SOURCE)) @@ -265,6 +261,19 @@ class ModuleRegistryConfiguration implements BeanDefinitionRegistryPostProcessor return dedupedElements; } + private static Key getLinkedKeyIfRequired(Binding binding) { + if (binding == null) { + return null; + } + + if (binding instanceof LinkedKeyBinding) { + LinkedKeyBinding linkedBinding = (LinkedKeyBinding) binding; + return linkedBinding.getLinkedKey(); + } + + return binding.getKey(); + } + private static class SourceComparableBinding { private Binding binding; diff --git a/src/main/java/org/springframework/guice/injector/SpringInjector.java b/src/main/java/org/springframework/guice/injector/SpringInjector.java index 0cda80a..909621c 100644 --- a/src/main/java/org/springframework/guice/injector/SpringInjector.java +++ b/src/main/java/org/springframework/guice/injector/SpringInjector.java @@ -18,6 +18,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.google.inject.spi.Element; +import com.google.inject.spi.InjectionPoint; import org.springframework.beans.factory.annotation.BeanFactoryAnnotationUtils; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.RootBeanDefinition; @@ -190,4 +192,14 @@ public class SpringInjector implements Injector { return null; } + @Override + public List getElements() { + return null; + } + + @Override + public Map, List> getAllMembersInjectorInjectionPoints() { + return null; + } + } \ No newline at end of file