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