RuneHive-Game
Loading...
Searching...
No Matches
com.runehive.game.plugin.PluginManager Class Reference

This class handles how plugins are loaded/unloaded and accessed. More...

Collaboration diagram for com.runehive.game.plugin.PluginManager:

Static Public Member Functions

static PlayerDataBus getDataBus ()
static int getPluginCount ()
static void load (final String pkg)

Private Member Functions

 PluginManager ()

Static Private Attributes

static final PlayerDataBus dataBus = PlayerDataBus.getInstance()
static final Logger logger = LogManager.getLogger(PluginManager.class)
static final Set< String > plugins = new HashSet<>()

Detailed Description

This class handles how plugins are loaded/unloaded and accessed.

Author
nshusa

Definition at line 17 of file PluginManager.java.

Constructor & Destructor Documentation

◆ PluginManager()

com.runehive.game.plugin.PluginManager.PluginManager ( )
private

Definition at line 23 of file PluginManager.java.

23 {
24 throw new UnsupportedOperationException();
25 }

Referenced by load().

Here is the caller graph for this function:

Member Function Documentation

◆ getDataBus()

PlayerDataBus com.runehive.game.plugin.PluginManager.getDataBus ( )
static

◆ getPluginCount()

int com.runehive.game.plugin.PluginManager.getPluginCount ( )
static

Definition at line 55 of file PluginManager.java.

55 {
56 return plugins.size();
57 }

References plugins.

◆ load()

void com.runehive.game.plugin.PluginManager.load ( final String pkg)
static

Definition at line 27 of file PluginManager.java.

27 {
28 try (final ScanResult scanResult =
29 new ClassGraph()
30 .enableClassInfo()
31 .enableMethodInfo()
32 .acceptPackages(pkg)
33 .scan()) {
34 for (final ClassInfo classInfo : scanResult.getSubclasses(PluginContext.class)) {
35 try {
36 if (!classInfo.isAbstract()) {
37 final MethodInfoList constructorInfos = classInfo.getDeclaredConstructorInfo();
38 final MethodInfo constructorInfo = constructorInfos.get(0);
39 final Constructor<?> constructor = constructorInfo.loadClassAndGetConstructor();
40
41 final Object instance = constructor.newInstance();
42 final PluginContext listener = (PluginContext) instance;
43 listener.onInit();
44 dataBus.subscribe(listener);
45 plugins.add(classInfo.getName());
46 }
47 } catch (Exception ex) {
48 logger.error(String.format("Error loading plugin=%s", classInfo.getSimpleName()), ex);
49 }
50 }
51 }
52 logger.info(String.format("Loaded: %d plugins.", PluginManager.getPluginCount()));
53 }

References dataBus, logger, com.runehive.game.plugin.PluginContext.onInit(), PluginManager(), and plugins.

Referenced by com.runehive.RuneHive.start().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ dataBus

final PlayerDataBus com.runehive.game.plugin.PluginManager.dataBus = PlayerDataBus.getInstance()
staticprivate

Definition at line 21 of file PluginManager.java.

Referenced by getDataBus(), and load().

◆ logger

final Logger com.runehive.game.plugin.PluginManager.logger = LogManager.getLogger(PluginManager.class)
staticprivate

Definition at line 19 of file PluginManager.java.

Referenced by load().

◆ plugins

final Set<String> com.runehive.game.plugin.PluginManager.plugins = new HashSet<>()
staticprivate

Definition at line 20 of file PluginManager.java.

Referenced by getPluginCount(), and load().


The documentation for this class was generated from the following file: