Skip to content

Commit

Permalink
apply packages to micronaut context created by postprocessor
Browse files Browse the repository at this point in the history
  • Loading branch information
musketyr committed Nov 30, 2020
1 parent 8d27ad5 commit 1cb345a
Show file tree
Hide file tree
Showing 9 changed files with 24 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ class TestController {

def managers() {
render([
someDirectlyInjected: someDirectlyInjected?.managers,
injectedUsingBridge : injectedUsingBridge?.managers,
someDirectlyInjected: someDirectlyInjected?.managerCount,
injectedUsingBridge : injectedUsingBridge?.managerCount,
] as JSON)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class DefaultApplication extends GrailsAutoConfiguration {
}

static void main(String[] args) {
context = CustomGrailsApp.run(Application, args) { env ->
context = CustomGrailsApp.run(DefaultApplication, args) { env ->
env.addPackage(Manager.package)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
*/
package com.agorapulse.micronaut.grails.example

import com.agorapulse.micronaut.grails.domain.Manager
import com.agorapulse.micronaut.grails.domain.ManagerService
import grails.gorm.transactions.ReadOnly
import groovy.transform.CompileStatic
Expand Down Expand Up @@ -57,8 +56,8 @@ class DirectlyInjected {
}

@ReadOnly
List<Manager> getManagers() {
return managerService?.list()
Number getManagerCount() {
return managerService?.count()
}

ApplicationContext getMicronautContext() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@
*/
package com.agorapulse.micronaut.grails.example

import com.agorapulse.micronaut.grails.domain.Manager
import com.agorapulse.micronaut.grails.domain.ManagerService
import grails.gorm.transactions.ReadOnly
import groovy.transform.CompileStatic
import io.micronaut.context.ApplicationContext
import io.micronaut.context.annotation.Value
Expand Down Expand Up @@ -52,9 +50,8 @@ class InjectedUsingBridge {
this.ignoredvalue = ignoredvalue
}

@ReadOnly
List<Manager> getManagers() {
return managerService?.list()
Number getManagerCount() {
return managerService?.count()
}

ApplicationContext getMicronautContext() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
{
"someDirectlyInjected": [
{
"id": 1,
"name": "Superuser"
}
],
"someDirectlyInjected": 1,
"injectedUsingBridge": null
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
{
"someDirectlyInjected": [
{
"id": 1,
"name": "Superuser"
}
],
"injectedUsingBridge": [
{
"id": 1,
"name": "Superuser"
}
]
"someDirectlyInjected": 1,
"injectedUsingBridge": 1
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
{
"someDirectlyInjected": [
{
"id": 1,
"name": "Superuser"
}
],
"injectedUsingBridge": [
{
"id": 1,
"name": "Superuser"
}
]
"someDirectlyInjected": 1,
"injectedUsingBridge": 1
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
{
"someDirectlyInjected": [
{
"id": 1,
"name": "Superuser"
}
],
"injectedUsingBridge": [
{
"id": 1,
"name": "Superuser"
}
]
"someDirectlyInjected": 1,
"injectedUsingBridge": 1
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
*/
package com.agorapulse.micronaut.grails;

import grails.boot.config.GrailsAutoConfiguration;
import io.micronaut.context.Qualifier;
import io.micronaut.inject.BeanDefinition;
import org.slf4j.Logger;
Expand Down Expand Up @@ -147,6 +148,15 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
if (micronautContext == null) {
micronautContext = new GrailsPropertyTranslatingApplicationContext(environment, of(collapse(customizers)), expectedMapProperties);

try {
GrailsAutoConfiguration application = springContext.getBean(GrailsAutoConfiguration.class);
Set<String> packages = new LinkedHashSet<>(application.packageNames());
application.packages().forEach(p -> packages.add(p.getName()));
packages.forEach(micronautContext.getEnvironment()::addPackage);
} catch (NoSuchBeanDefinitionException e) {
LOGGER.info("Application class is not GrailsAutoConfiguration", e);
}

if (configuration != null) {
configuration.applyToEnvironment(micronautContext.getEnvironment());
}
Expand Down

0 comments on commit 1cb345a

Please sign in to comment.