mirror of https://github.com/halo-dev/halo
a94596a9f8
#### What type of PR is this? /kind feature /area core /area plugin #### What this PR does / why we need it: This PR enhance usage of SharedEvent annotation to add support for publishing events among plugins. #### How to test? 1. Clone repository https://github.com/halo-dev/plugin-starter 2. Change build.gradle as following: ```gradle dependencies { implementation platform('run.halo.tools.platform:plugin:2.17.0-SNAPSHOT') ``` 3. Change StarterPlugin as following: ```java @Component public class StarterPlugin extends BasePlugin { private final ApplicationContext appContext; public StarterPlugin(PluginContext pluginContext, ApplicationContext appContext) { super(pluginContext); this.appContext = appContext; } @Override public void start() { appContext.publishEvent(new PostDeletedEvent(this, "fake-plugin")); } @Override public void stop() { } @EventListener(PostDeletedEvent.class) public void onApplicationEvent(PostDeletedEvent event) { System.out.println("Post deleted event received in plugin: " + event.getName()); } } ``` 4. Add a listener to Halo core ```java @EventListener(PostDeletedEvent.class) public void onApplicationEvent(PostDeletedEvent event) { System.out.println("Post deleted event received in core: " + event.getName()); } ``` 5. Build plugin and install plugin 6. Enable the plugin and see the result #### Does this PR introduce a user-facing change? ```release-note None ``` |
||
---|---|---|
.. | ||
shared-event.md | ||
websocket.md |