Cover against a null source provided by a Guice Element
We are observing an edge case where a Guice Element returns a `null` source, see the reference of he error below. ``` Caused by: java.lang.NullPointerException at org.springframework.guice.annotation.ModuleRegistryConfiguration.lambda$null$0(ModuleRegistryConfiguration.java:197) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531) at org.springframework.guice.annotation.ModuleRegistryConfiguration.lambda$postProcessBeanDefinitionRegistry$1(ModuleRegistryConfiguration.java:197) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566) at org.springframework.guice.annotation.ModuleRegistryConfiguration.postProcessBeanDefinitionRegistry(ModuleRegistryConfiguration.java:198) ```
This commit is contained in:
committed by
Taylor Wicksell
parent
61b3ac9c8d
commit
1a40634c10
@@ -52,6 +52,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -109,7 +111,7 @@ class ModuleRegistryConfiguration
|
||||
for (Entry<Key<?>, Binding<?>> entry : bindings.entrySet()) {
|
||||
if (entry.getKey().getTypeLiteral().getRawType().equals(Injector.class)
|
||||
|| SpringModule.SPRING_GUICE_SOURCE
|
||||
.equals(entry.getValue().getSource().toString())) {
|
||||
.equals(Optional.ofNullable(entry.getValue().getSource()).map(Object::toString).orElse(""))) {
|
||||
continue;
|
||||
}
|
||||
if (entry.getKey().getAnnotationType() != null &&
|
||||
@@ -132,7 +134,7 @@ class ModuleRegistryConfiguration
|
||||
if(!Scopes.isSingleton(binding)) {
|
||||
bean.setScope(ConfigurableBeanFactory.SCOPE_PROTOTYPE);
|
||||
}
|
||||
if (source != null && source instanceof ElementSource) {
|
||||
if (source instanceof ElementSource) {
|
||||
bean.setResourceDescription(
|
||||
((ElementSource) source).getDeclaringSource().toString());
|
||||
}
|
||||
@@ -193,8 +195,8 @@ class ModuleRegistryConfiguration
|
||||
String[] modulesToFilter = applicationContext.getEnvironment()
|
||||
.getProperty("spring.guice.modules.exclude").split(",");
|
||||
elements = elements.stream()
|
||||
.filter(e -> !Arrays.stream(modulesToFilter)
|
||||
.filter(ex -> (e.getSource().toString().contains(ex))).findFirst().isPresent())
|
||||
.filter(e -> Arrays.stream(modulesToFilter)
|
||||
.noneMatch(ex -> (Optional.ofNullable(e.getSource()).map(Object::toString).orElse("").contains(ex))))
|
||||
.collect(Collectors.toList());
|
||||
modules = Collections.singletonList(Elements.getModule(elements));
|
||||
}
|
||||
@@ -268,10 +270,10 @@ class ModuleRegistryConfiguration
|
||||
Binding<?> compareTo = (Binding<?>) obj;
|
||||
if (compareTo.getSource() != null && this.binding != null) {
|
||||
return binding.equals(compareTo)
|
||||
&& binding.getSource().equals(compareTo.getSource());
|
||||
&& Objects.equals(binding.getSource(), compareTo.getSource());
|
||||
}
|
||||
else {
|
||||
return binding.equals(compareTo);
|
||||
return Objects.equals(binding, compareTo);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user