Skip to content

Commit e9fb71e

Browse files
committed
Merge pull request #9903 from grails/issue_9883
The onStartup() hook wasn't called on Plugins
2 parents acca7d8 + f418808 commit e9fb71e

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed

grails-core/src/main/groovy/grails/boot/config/GrailsApplicationPostProcessor.groovy

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ import org.springframework.core.convert.converter.Converter
3737
import org.springframework.core.env.AbstractEnvironment
3838
import org.springframework.core.env.ConfigurableEnvironment
3939
import org.springframework.core.env.EnumerablePropertySource
40-
import org.springframework.core.env.MapPropertySource
41-
import org.springframework.core.env.PropertySource
42-
import org.springframework.util.ClassUtils
4340

4441
/**
4542
* A {@link BeanDefinitionRegistryPostProcessor} that enhances any ApplicationContext with plugin manager capabilities
@@ -236,6 +233,7 @@ class GrailsApplicationPostProcessor implements BeanDefinitionRegistryPostProces
236233
Map<String,Object> eventMap = [:]
237234
eventMap.put('source', pluginManager)
238235

236+
pluginManager.onStartup(eventMap)
239237
for(GrailsApplicationLifeCycle lifeCycle in lifeCycleBeans) {
240238
lifeCycle.onStartup(eventMap)
241239
}

grails-core/src/main/groovy/grails/plugins/GrailsPluginManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,13 @@ public interface GrailsPluginManager extends ApplicationContextAware {
108108
*/
109109
void doDynamicMethods();
110110

111+
/**
112+
* Executes the {@link Plugin#onStartup(Map)} hook for all plugins
113+
*
114+
* @param event the Event
115+
*/
116+
void onStartup(Map<String, Object> event);
117+
111118
/**
112119
* Retrieves a name Grails plugin instance
113120
*

grails-core/src/main/groovy/org/grails/plugins/AbstractGrailsPluginManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.grails.plugins;
1717

1818
import grails.artefact.Enhanced;
19+
import grails.plugins.Plugin;
1920
import grails.plugins.PluginFilter;
2021
import org.grails.config.NavigableMap;
2122
import grails.plugins.GrailsPlugin;
@@ -338,6 +339,14 @@ protected boolean isPluginDisabledForProfile(GrailsPlugin plugin) {
338339
return applicationContext != null && !plugin.isEnabled(applicationContext.getEnvironment().getActiveProfiles());
339340
}
340341

342+
public void onStartup(Map<String, Object> event) {
343+
for (GrailsPlugin plugin : pluginList) {
344+
if (plugin.getInstance() instanceof Plugin) {
345+
((Plugin)plugin.getInstance()).onStartup(event);
346+
}
347+
}
348+
}
349+
341350
public void shutdown() {
342351
checkInitialised();
343352
try {

grails-plugin-testing/src/main/groovy/grails/test/runtime/NoOpGrailsPluginManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ public void doDynamicMethods() {
5656

5757
}
5858

59+
@Override
60+
public void onStartup(Map<String, Object> event) {
61+
62+
}
63+
5964
@Override
6065
public GrailsPlugin getGrailsPlugin(String name) {
6166
return null;

0 commit comments

Comments
 (0)