Skip to content

Commit 64515f1

Browse files
authored
GH-94 refactor: clean up plugin bootstrap and internal structure
2 parents 114e97f + 8fdc35e commit 64515f1

65 files changed

Lines changed: 598 additions & 1562 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

automessage-core/build.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ dependencies {
22
compileOnlyApi("org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT")
33

44
implementation("net.kyori:adventure-platform-bukkit:4.4.1")
5-
implementation("net.kyori:adventure-text-minimessage:4.21.0")
5+
implementation("net.kyori:adventure-text-minimessage:4.25.0")
66

7-
implementation("com.eternalcode:multification-bukkit:1.2.2")
8-
implementation("com.eternalcode:multification-okaeri:1.2.2")
7+
implementation("com.eternalcode:multification-bukkit:1.2.3")
8+
implementation("com.eternalcode:multification-okaeri:1.2.3")
99

1010
api("eu.okaeri:okaeri-configs-yaml-snakeyaml:5.0.9")
1111
implementation("eu.okaeri:okaeri-configs-serdes-commons:5.0.5")
@@ -15,9 +15,9 @@ dependencies {
1515
implementation("dev.rollczi:litecommands-annotations:3.10.6")
1616

1717
testImplementation("org.junit.jupiter:junit-jupiter:6.0.1")
18-
testImplementation("org.assertj:assertj-core:3.25.2")
19-
testImplementation("org.mockito:mockito-core:5.8.0")
20-
testImplementation("org.mockito:mockito-junit-jupiter:5.8.0")
18+
testImplementation("org.assertj:assertj-core:3.27.7")
19+
testImplementation("org.mockito:mockito-core:5.20.0")
20+
testImplementation("org.mockito:mockito-junit-jupiter:5.20.0")
2121
testImplementation("org.mockito:mockito-inline:5.2.0")
2222
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
2323
}

automessage-core/src/main/java/com/github/imdmk/automessage/AutoMessagePlugin.java

Lines changed: 31 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -5,116 +5,87 @@
55
import com.github.imdmk.automessage.command.dispatcher.EnableCommand;
66
import com.github.imdmk.automessage.command.reload.ReloadCommand;
77
import com.github.imdmk.automessage.config.ConfigManager;
8+
import com.github.imdmk.automessage.message.MessageConfig;
9+
import com.github.imdmk.automessage.message.MessageService;
810
import com.github.imdmk.automessage.platform.litecommands.handler.InvalidUsageHandlerImpl;
911
import com.github.imdmk.automessage.platform.litecommands.handler.MissingPermissionsHandlerImpl;
1012
import com.github.imdmk.automessage.platform.litecommands.handler.NoticeResultHandlerImpl;
1113
import com.github.imdmk.automessage.platform.logger.BukkitPluginLogger;
1214
import com.github.imdmk.automessage.platform.logger.PluginLogger;
15+
import com.github.imdmk.automessage.platform.metrics.MetricsService;
1316
import com.github.imdmk.automessage.platform.scheduler.BukkitTaskScheduler;
1417
import com.github.imdmk.automessage.platform.scheduler.TaskScheduler;
1518
import com.github.imdmk.automessage.scheduled.ScheduledMessagesConfig;
1619
import com.github.imdmk.automessage.scheduled.audience.filter.AudienceFilter;
1720
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcher;
1821
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
1922
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherTask;
20-
import com.github.imdmk.automessage.scheduled.selector.MessageSelector;
2123
import com.github.imdmk.automessage.scheduled.selector.MessageSelectorFactory;
22-
import com.github.imdmk.automessage.shared.message.MessageConfig;
23-
import com.github.imdmk.automessage.shared.message.MessageService;
24-
import com.github.imdmk.automessage.shared.validate.Validator;
2524
import dev.rollczi.litecommands.LiteCommands;
2625
import dev.rollczi.litecommands.bukkit.LiteBukkitFactory;
27-
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
28-
import org.bstats.bukkit.Metrics;
2926
import org.bukkit.Server;
3027
import org.bukkit.plugin.Plugin;
31-
import org.jetbrains.annotations.NotNull;
3228

3329
final class AutoMessagePlugin {
3430

3531
private static final String PLUGIN_PREFIX = "AutoMessage";
36-
private static final int PLUGIN_METRICS_ID = 19487;
3732

38-
private final Plugin plugin;
39-
private final Server server;
4033
private final PluginLogger logger;
34+
private final ConfigManager configManager;
4135

42-
private ConfigManager configManager;
36+
private final MessageService messageService;
37+
private final TaskScheduler taskScheduler;
38+
private final LiteCommands<?> liteCommands;
39+
private final MetricsService metricsService;
4340

44-
private BukkitAudiences bukkitAudiences;
45-
private MessageService messageService;
46-
private TaskScheduler taskScheduler;
41+
AutoMessagePlugin(Plugin plugin) {
42+
final Server server = plugin.getServer();
43+
this.logger = new BukkitPluginLogger(plugin.getLogger());
4744

48-
private LiteCommands<?> liteCommands;
49-
private Metrics metrics;
45+
this.configManager = new ConfigManager(logger, plugin.getDataFolder());
5046

51-
public AutoMessagePlugin(
52-
@NotNull final Plugin plugin,
53-
@NotNull final Server server,
54-
@NotNull final PluginLogger logger
55-
) {
56-
this.plugin = Validator.notNull(plugin, "plugin");
57-
this.server = Validator.notNull(server, "server");
58-
this.logger = Validator.notNull(logger, "logger");
59-
}
60-
61-
AutoMessagePlugin(@NotNull final Plugin plugin) {
62-
this(plugin, plugin.getServer(), new BukkitPluginLogger(plugin));
63-
}
64-
65-
void enable(@NotNull PluginSettings settings) {
66-
Validator.notNull(settings, "settings");
67-
68-
configManager = new ConfigManager(logger, plugin.getDataFolder());
69-
configManager.createAll(settings.configs());
70-
71-
bukkitAudiences = BukkitAudiences.create(plugin);
72-
messageService = new MessageService(configManager.require(MessageConfig.class), bukkitAudiences);
73-
taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler());
74-
75-
final MessageDispatcherConfig messageDispatcherConfig = configManager.require(MessageDispatcherConfig.class);
76-
final ScheduledMessagesConfig scheduledMessagesConfig = configManager.require(ScheduledMessagesConfig.class);
47+
final MessageConfig messageConfig = configManager.create(MessageConfig.class);
48+
final ScheduledMessagesConfig scheduledMessagesConfig = configManager.create(ScheduledMessagesConfig.class);
49+
final MessageDispatcherConfig dispatcherConfig = configManager.create(MessageDispatcherConfig.class);
7750

78-
final AudienceFilter audienceFilter = AudienceFilter.createDefault();
79-
final MessageSelector messageSelector = MessageSelectorFactory.create(messageDispatcherConfig.selector);
51+
this.messageService = new MessageService(messageConfig, plugin);
52+
this.taskScheduler = new BukkitTaskScheduler(plugin, server.getScheduler());
8053

8154
final MessageDispatcher messageDispatcher = new MessageDispatcher(
8255
messageService,
83-
messageSelector,
84-
audienceFilter,
56+
MessageSelectorFactory.create(dispatcherConfig.selector),
57+
AudienceFilter.ruleFilter(),
8558
() -> scheduledMessagesConfig.messages
8659
);
8760

88-
MessageDispatcherTask messageDispatcherTask = new MessageDispatcherTask(server, messageDispatcherConfig, messageDispatcher);
89-
taskScheduler.runTimerAsync(messageDispatcherTask);
61+
final MessageDispatcherTask dispatcherTask = new MessageDispatcherTask(server, dispatcherConfig, messageDispatcher);
62+
taskScheduler.runTimerAsync(dispatcherTask);
9063

91-
liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server)
64+
this.liteCommands = LiteBukkitFactory.builder(PLUGIN_PREFIX, plugin, server)
9265
.invalidUsage(new InvalidUsageHandlerImpl(messageService))
9366
.missingPermission(new MissingPermissionsHandlerImpl(messageService))
9467
.result(Notice.class, new NoticeResultHandlerImpl(messageService))
9568

9669
.commands(
97-
new DisableCommand(messageDispatcherConfig, messageService),
98-
new EnableCommand(messageDispatcherConfig, messageService),
70+
new DisableCommand(dispatcherConfig, messageService),
71+
new EnableCommand(dispatcherConfig, messageService),
9972
new ReloadCommand(logger, configManager, taskScheduler, messageService)
10073
)
10174

10275
.build();
10376

104-
metrics = new Metrics(plugin, PLUGIN_METRICS_ID);
77+
this.metricsService = new MetricsService(plugin);
10578

10679
logger.info("%s plugin enabled.", PLUGIN_PREFIX);
10780
}
10881

10982
void disable() {
110-
// Validator.ifNotNull(configManager, manager -> {
111-
// manager.saveAll();
112-
// manager.clearAll();
113-
// });
114-
Validator.ifNotNull(bukkitAudiences, BukkitAudiences::close);
115-
Validator.ifNotNull(taskScheduler, TaskScheduler::shutdown);
116-
Validator.ifNotNull(liteCommands, LiteCommands::unregister);
117-
Validator.ifNotNull(metrics, Metrics::shutdown);
83+
configManager.saveAll();
84+
configManager.clearAll();
85+
messageService.shutdown();
86+
taskScheduler.shutdown();
87+
liteCommands.unregister();
88+
metricsService.shutdown();
11889

11990
logger.info("%s plugin disabled successfully.", PLUGIN_PREFIX);
12091
}

automessage-core/src/main/java/com/github/imdmk/automessage/PluginSettings.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/DisableCommand.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.github.imdmk.automessage.command.dispatcher;
22

3+
import com.github.imdmk.automessage.message.MessageService;
34
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
4-
import com.github.imdmk.automessage.shared.message.MessageService;
5-
import com.github.imdmk.automessage.shared.validate.Validator;
65
import dev.rollczi.litecommands.annotations.command.Command;
76
import dev.rollczi.litecommands.annotations.context.Context;
87
import dev.rollczi.litecommands.annotations.execute.Execute;
98
import dev.rollczi.litecommands.annotations.permission.Permission;
109
import org.bukkit.command.CommandSender;
11-
import org.jetbrains.annotations.NotNull;
1210

1311
@Command(name = "automessage disable")
1412
@Permission("command.automessage.disable")
@@ -18,11 +16,11 @@ public final class DisableCommand {
1816
private final MessageService messageService;
1917

2018
public DisableCommand(
21-
@NotNull MessageDispatcherConfig dispatcherConfig,
22-
@NotNull MessageService messageService
19+
MessageDispatcherConfig dispatcherConfig,
20+
MessageService messageService
2321
) {
24-
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");
25-
this.messageService = Validator.notNull(messageService, "messageService");
22+
this.dispatcherConfig = dispatcherConfig;
23+
this.messageService = messageService;
2624
}
2725

2826
@Execute

automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/EnableCommand.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.github.imdmk.automessage.command.dispatcher;
22

3+
import com.github.imdmk.automessage.message.MessageService;
34
import com.github.imdmk.automessage.scheduled.dispatcher.MessageDispatcherConfig;
4-
import com.github.imdmk.automessage.shared.message.MessageService;
5-
import com.github.imdmk.automessage.shared.validate.Validator;
65
import dev.rollczi.litecommands.annotations.command.Command;
76
import dev.rollczi.litecommands.annotations.context.Context;
87
import dev.rollczi.litecommands.annotations.execute.Execute;
98
import dev.rollczi.litecommands.annotations.permission.Permission;
109
import org.bukkit.command.CommandSender;
11-
import org.jetbrains.annotations.NotNull;
1210

1311
@Command(name = "automessage enable")
1412
@Permission("command.automessage.enable")
@@ -18,11 +16,11 @@ public final class EnableCommand {
1816
private final MessageService messageService;
1917

2018
public EnableCommand(
21-
@NotNull MessageDispatcherConfig dispatcherConfig,
22-
@NotNull MessageService messageService
19+
MessageDispatcherConfig dispatcherConfig,
20+
MessageService messageService
2321
) {
24-
this.dispatcherConfig = Validator.notNull(dispatcherConfig, "dispatcherConfig");
25-
this.messageService = Validator.notNull(messageService, "messageService");
22+
this.dispatcherConfig = dispatcherConfig;
23+
this.messageService = messageService;
2624
}
2725

2826
@Execute

automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/messages/DispatcherMessagesImpl.java renamed to automessage-core/src/main/java/com/github/imdmk/automessage/command/dispatcher/messages/ENDispatcherMessages.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import eu.okaeri.configs.OkaeriConfig;
55
import eu.okaeri.configs.annotation.Comment;
66

7-
public final class DispatcherMessagesImpl
7+
public final class ENDispatcherMessages
88
extends OkaeriConfig
99
implements DispatcherMessages {
1010

automessage-core/src/main/java/com/github/imdmk/automessage/command/reload/ReloadCommand.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
package com.github.imdmk.automessage.command.reload;
22

33
import com.github.imdmk.automessage.config.ConfigManager;
4+
import com.github.imdmk.automessage.message.MessageService;
45
import com.github.imdmk.automessage.platform.logger.PluginLogger;
56
import com.github.imdmk.automessage.platform.scheduler.TaskScheduler;
6-
import com.github.imdmk.automessage.shared.message.MessageService;
7-
import com.github.imdmk.automessage.shared.validate.Validator;
87
import dev.rollczi.litecommands.annotations.command.Command;
98
import dev.rollczi.litecommands.annotations.context.Context;
109
import dev.rollczi.litecommands.annotations.execute.Execute;
1110
import dev.rollczi.litecommands.annotations.permission.Permission;
1211
import org.bukkit.command.CommandSender;
13-
import org.jetbrains.annotations.NotNull;
1412

1513
@Command(name = "automessage reload")
1614
@Permission("command.automessage.reload")
@@ -22,15 +20,15 @@ public final class ReloadCommand {
2220
private final MessageService messageService;
2321

2422
public ReloadCommand(
25-
@NotNull PluginLogger logger,
26-
@NotNull ConfigManager configManager,
27-
@NotNull TaskScheduler taskScheduler,
28-
@NotNull MessageService messageService
23+
PluginLogger logger,
24+
ConfigManager configManager,
25+
TaskScheduler taskScheduler,
26+
MessageService messageService
2927
) {
30-
this.logger = Validator.notNull(logger, "logger");
31-
this.configManager = Validator.notNull(configManager, "configManager");
32-
this.taskScheduler = Validator.notNull(taskScheduler, "taskScheduler");
33-
this.messageService = Validator.notNull(messageService, "messageService");
28+
this.logger = logger;
29+
this.configManager = configManager;
30+
this.taskScheduler = taskScheduler;
31+
this.messageService = messageService;
3432
}
3533

3634
@Execute

automessage-core/src/main/java/com/github/imdmk/automessage/command/reload/messages/ReloadMessagesImpl.java renamed to automessage-core/src/main/java/com/github/imdmk/automessage/command/reload/messages/ENReloadMessages.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import eu.okaeri.configs.OkaeriConfig;
55
import eu.okaeri.configs.annotation.Comment;
66

7-
public final class ReloadMessagesImpl
7+
public final class ENReloadMessages
88
extends OkaeriConfig
99
implements ReloadMessages {
1010

automessage-core/src/main/java/com/github/imdmk/automessage/config/ConfigBinder.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
package com.github.imdmk.automessage.config;
22

3-
import com.github.imdmk.automessage.shared.validate.Validator;
4-
import eu.okaeri.configs.serdes.OkaeriSerdesPack;
53
import eu.okaeri.configs.serdes.commons.SerdesCommons;
6-
import eu.okaeri.configs.yaml.snakeyaml.YamlSnakeYamlConfigurer;
7-
import org.jetbrains.annotations.NotNull;
84

95
import java.io.File;
106

117
final class ConfigBinder {
128

13-
void bind(@NotNull ConfigSection config, @NotNull File file) {
14-
Validator.notNull(config, "config");
15-
Validator.notNull(file, "file");
16-
17-
final OkaeriSerdesPack serdesPack = config.getSerdesPack();
18-
final YamlSnakeYamlConfigurer yamlConfigurer = YamlConfigurerFactory.create();
19-
20-
config.withConfigurer(yamlConfigurer)
21-
.withSerdesPack(serdesPack)
9+
void bind(ConfigSection config, File file) {
10+
config.withConfigurer(YamlConfigurerFactory.create())
11+
.withSerdesPack(config.getSerdesPack())
2212
.withSerdesPack(new SerdesCommons())
2313
.withBindFile(file)
2414
.withRemoveOrphans(true);

automessage-core/src/main/java/com/github/imdmk/automessage/config/ConfigFactory.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package com.github.imdmk.automessage.config;
22

3-
import com.github.imdmk.automessage.shared.validate.Validator;
43
import eu.okaeri.configs.ConfigManager;
54
import eu.okaeri.configs.exception.OkaeriException;
6-
import org.jetbrains.annotations.NotNull;
75

86
final class ConfigFactory {
97

10-
<T extends ConfigSection> @NotNull T instantiate(@NotNull Class<T> type) {
11-
Validator.notNull(type, "type");
12-
8+
<T extends ConfigSection> T create(Class<T> type) {
139
try {
1410
return ConfigManager.create(type);
1511
} catch (OkaeriException e) {
16-
throw new IllegalStateException(
17-
"Failed to instantiate config: " + type.getName(), e
18-
);
12+
throw new IllegalStateException("Failed to create config: " + type.getName(), e);
1913
}
2014
}
2115
}

0 commit comments

Comments
 (0)