Skip to content

Commit b4d6988

Browse files
committed
Added Info grabber, so stuff can get a list of all metadata without loading a single plugin before hand...
1 parent 39f2b00 commit b4d6988

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@
4444

4545
provides org.mangorage.mangobotcore.plugin.api.Plugin with org.mangorage.mangobotcore.MangoBotCore;
4646
uses org.mangorage.mangobotcore.plugin.api.Plugin;
47+
uses org.mangorage.mangobotcore.plugin.api.IPluginInfoGetter;
4748
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.mangorage.mangobotcore.plugin.api;
2+
3+
import java.util.List;
4+
5+
/**
6+
* Allows you to grab all metadata info, of all plugins
7+
* before any plugin ctor ever gets called!
8+
*/
9+
public interface IPluginInfoGetter {
10+
void onGet(List<Metadata> list);
11+
}

src/main/java/org/mangorage/mangobotcore/plugin/internal/PluginManagerImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
55
import org.mangorage.commonutils.log.LogHelper;
6+
import org.mangorage.mangobotcore.plugin.api.IPluginInfoGetter;
67
import org.mangorage.mangobotcore.plugin.api.MangoBotPlugin;
8+
import org.mangorage.mangobotcore.plugin.api.Metadata;
79
import org.mangorage.mangobotcore.plugin.api.Plugin;
810
import org.mangorage.mangobotcore.plugin.api.PluginContainer;
911
import org.mangorage.mangobotcore.plugin.api.PluginManager;
@@ -78,6 +80,19 @@ public void load() {
7880
}
7981
}
8082

83+
LogHelper.info("Giving Metadata info out...");
84+
85+
ServiceLoader.load(IPluginInfoGetter.class)
86+
.stream()
87+
.forEach(provider -> {
88+
final var list = manager.getLibraries()
89+
.stream()
90+
.map(library -> (Metadata) library.getObject().getMetadata())
91+
.toList();
92+
provider.get().onGet(list);
93+
});
94+
95+
8196
LogHelper.info("Loading Plugins...");
8297

8398
for (Library<PluginContainerImpl> library : manager.getLibrariesInOrder()) {

0 commit comments

Comments
 (0)