Skip to content

Commit

Permalink
more details about missing beans
Browse files Browse the repository at this point in the history
  • Loading branch information
musketyr committed Nov 30, 2020
1 parent 4667cfe commit 7ed34af
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

/**
* Adds Micronaut beans to a Grails' Spring application context. This processor will
Expand Down Expand Up @@ -83,11 +84,16 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
: micronautContext.getBeanDefinitions(type, micronautBeanQualifier);

if (beanDefinitions.size() > 1) {
throw new IllegalArgumentException("There is too many candidates of type " + type + " for " + micronautBeanQualifier + "! Candidates: " + beanDefinitions);
throw new IllegalArgumentException("There is too many candidates of type '" + type + "' for qualifier '" + micronautBeanQualifier + "'! Candidates: " + beanDefinitions);
}

Optional<BeanDefinition<?>> firstBean = beanDefinitions.stream().findFirst();
BeanDefinition<?> definition = firstBean.orElseThrow(()-> new IllegalArgumentException("There is no candidate for " + micronautBeanQualifier));
BeanDefinition<?> definition = firstBean.orElseThrow(()-> {
String message = "There is no candidate for type " + type + " and qualifier " + micronautBeanQualifier + "\n"
+ "Known beans:\n" + micronautContext.getAllBeanDefinitions().stream().map(d -> d.getBeanType().getName() + " " + d.getName()).collect(Collectors.joining("\n "));

return new IllegalArgumentException(message);
});

final BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
.rootBeanDefinition(GrailsMicronautBeanFactory.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public void setMicronautContext(DefaultApplicationContext micronautContext) {
}

/**
*
* @param isMicronautSingleton indicates if the Micronaut bean is a singleton
*/
public void setMicronautSingleton(boolean isMicronautSingleton) {
Expand All @@ -68,8 +67,13 @@ public void setMicronautQualifier(Qualifier<Object> micronautQualifier) {

@Override
public Object getObject() throws Exception {
if (GrailsMicronautBeanProcessor.LOGGER.isWarnEnabled() && micronautContext.getEnvironment().getActiveNames().contains(MicronautGrailsApp.ENVIRONMENT)) {
GrailsMicronautBeanProcessor.LOGGER.warn("Bean " + (micronautQualifier == null ? "" : micronautQualifier) + micronautBeanType.getName() + " has been created using GrailsMicronautBeanProcessor. Consider annotating the injection point with @Inject switching the compatibility mode to MicronautGrailsApp.Compatibility.STRICT");
if (GrailsMicronautBeanProcessor.LOGGER.isWarnEnabled()) {
GrailsMicronautBeanProcessor.LOGGER.warn(
"Bean " + (micronautQualifier == null ? "" : micronautQualifier + " ") + micronautBeanType.getName()
+ " has been created using GrailsMicronautBeanProcessor in a separate Micronaut ApplicationContext."
+ " Please, consider annotating the injection point with @Inject and switching the compatibility mode to MicronautGrailsApp.Compatibility.STRICT.\n"
+ " See https://agorapulse.github.io/micronaut-grails/#_grails_4 for more details!"
);
}

Optional bean = micronautContext.findBean(micronautBeanType, micronautQualifier);
Expand Down

0 comments on commit 7ed34af

Please sign in to comment.