From b8f6857ef29730b404d1d4f501259ac1d9eaf229 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Fri, 30 May 2025 14:15:49 +0700 Subject: [PATCH] [REFACTOR] Update create module api --- .../modules/impl/LaunchServerCoreModule.java | 4 +- .../launcher/base/modules/LauncherModule.java | 2 +- .../modules/LauncherModuleInfoBuilder.java | 40 +++++++++++++ .../launcher/base/modules/SimpleModule.java | 59 +++++++++++++++++++ .../launcher/impl/Cyclic2DependModule.java | 6 +- .../launcher/impl/CyclicDependModule.java | 6 +- .../gravit/launcher/impl/Depend1Module.java | 6 +- .../gravit/launcher/impl/Depend2Module.java | 4 +- .../gravit/launcher/impl/Depend3Module.java | 4 +- .../gravit/launcher/impl/InternalModule.java | 4 +- .../pro/gravit/launcher/impl/MainModule.java | 6 +- .../gravit/launcher/impl/ProvidedModule.java | 5 +- .../pro/gravit/launcher/impl/TestModule.java | 4 +- .../client/ClientLauncherCoreModule.java | 4 +- .../client/RuntimeLauncherCoreModule.java | 4 +- modules | 2 +- 16 files changed, 125 insertions(+), 35 deletions(-) create mode 100644 LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModuleInfoBuilder.java create mode 100644 LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/SimpleModule.java diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/modules/impl/LaunchServerCoreModule.java b/LaunchServer/src/main/java/pro/gravit/launchserver/modules/impl/LaunchServerCoreModule.java index 798572c9..6aa1dae9 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/modules/impl/LaunchServerCoreModule.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/modules/impl/LaunchServerCoreModule.java @@ -2,13 +2,13 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.launcher.base.modules.events.InitPhase; import pro.gravit.utils.Version; public class LaunchServerCoreModule extends LauncherModule { public LaunchServerCoreModule() { - super(new LauncherModuleInfo("LaunchServerCore", Version.getVersion())); + super(new LauncherModuleInfoBuilder().setName("LaunchServerCore").setVersion(Version.getVersion()).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModule.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModule.java index 86d032b8..cd74fa08 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModule.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModule.java @@ -16,7 +16,7 @@ public abstract class LauncherModule { private LauncherTrustManager.CheckClassResult checkResult; protected LauncherModule() { - moduleInfo = new LauncherModuleInfo("UnknownModule"); + moduleInfo = new LauncherModuleInfoBuilder().setName("UnknownModule").createLauncherModuleInfo(); } protected LauncherModule(LauncherModuleInfo info) { diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModuleInfoBuilder.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModuleInfoBuilder.java new file mode 100644 index 00000000..0e67ab1b --- /dev/null +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/LauncherModuleInfoBuilder.java @@ -0,0 +1,40 @@ +package pro.gravit.launcher.base.modules; + +import pro.gravit.utils.Version; + +public class LauncherModuleInfoBuilder { + private String name; + private Version version; + private String[] dependencies = new String[0]; + private int priority; + private String[] providers = new String[0]; + + public LauncherModuleInfoBuilder setName(String name) { + this.name = name; + return this; + } + + public LauncherModuleInfoBuilder setVersion(Version version) { + this.version = version; + return this; + } + + public LauncherModuleInfoBuilder setDependencies(String[] dependencies) { + this.dependencies = dependencies; + return this; + } + + public LauncherModuleInfoBuilder setPriority(int priority) { + this.priority = priority; + return this; + } + + public LauncherModuleInfoBuilder setProviders(String[] providers) { + this.providers = providers; + return this; + } + + public LauncherModuleInfo createLauncherModuleInfo() { + return new LauncherModuleInfo(name, version, priority, dependencies, providers); + } +} \ No newline at end of file diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/SimpleModule.java b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/SimpleModule.java new file mode 100644 index 00000000..55bfcf5f --- /dev/null +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/base/modules/SimpleModule.java @@ -0,0 +1,59 @@ +package pro.gravit.launcher.base.modules; + +import pro.gravit.utils.Version; + +import java.util.function.Consumer; + +public class SimpleModule extends LauncherModule { + protected Consumer consumer; + + public SimpleModule(LauncherModuleInfo info, Consumer consumer) { + super(info); + this.consumer = consumer; + } + + @Override + public void init(LauncherInitContext initContext) { + consumer.accept(new SimpleModuleAccessor(initContext)); + } + + public static SimpleModule of(String name, Version version, Consumer consumer) { + return new SimpleModule(new LauncherModuleInfoBuilder() + .setName(name) + .setVersion(version) + .createLauncherModuleInfo(), consumer); + } + + public class SimpleModuleAccessor { + private final LauncherInitContext context; + + public SimpleModuleAccessor(LauncherInitContext context) { + this.context = context; + } + + + public final T requireModule(Class clazz, Version minVersion) { + return SimpleModule.this.requireModule(clazz, minVersion); + } + + public final void requireModule(String name, Version minVersion) { + SimpleModule.this.requireModule(name, minVersion); + } + + public final LauncherModulesContext getModulesContext() { + return SimpleModule.this.getContext(); + } + + public LauncherInitContext getContext() { + return context; + } + + public boolean registerEvent(EventHandler handle, Class tClass) { + return SimpleModule.this.registerEvent(handle, tClass); + } + + public final void callEvent(T event) { + SimpleModule.this.callEvent(event); + } + } +} diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Cyclic2DependModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Cyclic2DependModule.java index 3d144bec..ef622fb3 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Cyclic2DependModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Cyclic2DependModule.java @@ -2,14 +2,12 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class Cyclic2DependModule extends LauncherModule { public Cyclic2DependModule() { - super(new LauncherModuleInfo("cyclic2", - new Version(1, 0, 0), - 2, new String[]{"cyclic1"})); + super(new LauncherModuleInfoBuilder().setName("cyclic2").setVersion(new Version(1, 0, 0)).setPriority(2).setDependencies(new String[]{"cyclic1"}).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/CyclicDependModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/CyclicDependModule.java index 090ce42a..4b0b1e02 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/CyclicDependModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/CyclicDependModule.java @@ -2,14 +2,12 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class CyclicDependModule extends LauncherModule { public CyclicDependModule() { - super(new LauncherModuleInfo("cyclic1", - new Version(1, 0, 0), - 2, new String[]{"cyclic2"})); + super(new LauncherModuleInfoBuilder().setName("cyclic1").setVersion(new Version(1, 0, 0)).setPriority(2).setDependencies(new String[]{"cyclic2"}).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend1Module.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend1Module.java index cec095f2..d7e583dd 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend1Module.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend1Module.java @@ -3,14 +3,12 @@ import org.junit.jupiter.api.Assertions; import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class Depend1Module extends LauncherModule { public Depend1Module() { - super(new LauncherModuleInfo("depend1", new Version(1, 0, 0), - 0, - new String[]{"depend3", "internal", "virtual"})); + super(new LauncherModuleInfoBuilder().setName("depend1").setVersion(new Version(1, 0, 0)).setPriority(0).setDependencies(new String[]{"depend3", "internal", "virtual"}).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend2Module.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend2Module.java index 466053d6..ec412e3e 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend2Module.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend2Module.java @@ -3,12 +3,12 @@ import org.junit.jupiter.api.Assertions; import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class Depend2Module extends LauncherModule { public Depend2Module() { - super(new LauncherModuleInfo("depend2")); + super(new LauncherModuleInfoBuilder().setName("depend2").createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend3Module.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend3Module.java index bf264cc8..7a76d7e4 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend3Module.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/Depend3Module.java @@ -2,11 +2,11 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; public class Depend3Module extends LauncherModule { public Depend3Module() { - super(new LauncherModuleInfo("depend3")); + super(new LauncherModuleInfoBuilder().setName("depend3").createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/InternalModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/InternalModule.java index acd36fca..aa8e268b 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/InternalModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/InternalModule.java @@ -2,11 +2,11 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; public class InternalModule extends LauncherModule { public InternalModule() { - super(new LauncherModuleInfo("internal")); + super(new LauncherModuleInfoBuilder().setName("internal").createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/MainModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/MainModule.java index 0b484477..658fce5c 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/MainModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/MainModule.java @@ -3,15 +3,13 @@ import org.junit.jupiter.api.Assertions; import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class MainModule extends LauncherModule { public MainModule() { - super(new LauncherModuleInfo("main", - new Version(1, 0, 0), - 0, new String[]{"depend1", "depend2"})); + super(new LauncherModuleInfoBuilder().setName("main").setVersion(new Version(1, 0, 0)).setPriority(0).setDependencies(new String[]{"depend1", "depend2"}).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/ProvidedModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/ProvidedModule.java index 68fb5c0c..b4625278 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/ProvidedModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/ProvidedModule.java @@ -2,13 +2,12 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class ProvidedModule extends LauncherModule implements VirtualInterface { public ProvidedModule() { - super(new LauncherModuleInfo("provided", new Version(1, 0, 0), - 0, new String[]{}, new String[]{"virtual"})); + super(new LauncherModuleInfoBuilder().setName("provided").setVersion(new Version(1, 0, 0)).setPriority(0).setDependencies(new String[]{}).setProviders(new String[]{"virtual"}).createLauncherModuleInfo()); } @Override diff --git a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/TestModule.java b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/TestModule.java index 18500f2b..ae0af91a 100644 --- a/LauncherAPI/src/test/java/pro/gravit/launcher/impl/TestModule.java +++ b/LauncherAPI/src/test/java/pro/gravit/launcher/impl/TestModule.java @@ -1,15 +1,15 @@ package pro.gravit.launcher.impl; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.launcher.impl.event.CancelEvent; import pro.gravit.launcher.impl.event.NormalEvent; import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; public class TestModule extends LauncherModule { public TestModule() { - super(new LauncherModuleInfo("testModule")); + super(new LauncherModuleInfoBuilder().setName("testModule").createLauncherModuleInfo()); } @Override diff --git a/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherCoreModule.java b/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherCoreModule.java index 9cfe8ddc..2a558ce4 100644 --- a/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherCoreModule.java +++ b/LauncherClient/src/main/java/pro/gravit/launcher/client/ClientLauncherCoreModule.java @@ -2,12 +2,12 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class ClientLauncherCoreModule extends LauncherModule { public ClientLauncherCoreModule() { - super(new LauncherModuleInfo("ClientLauncherCore", Version.getVersion())); + super(new LauncherModuleInfoBuilder().setName("ClientLauncherCore").setVersion(Version.getVersion()).createLauncherModuleInfo()); } @Override diff --git a/LauncherClient/src/main/java/pro/gravit/launcher/client/RuntimeLauncherCoreModule.java b/LauncherClient/src/main/java/pro/gravit/launcher/client/RuntimeLauncherCoreModule.java index a4366843..c2a0cbb2 100644 --- a/LauncherClient/src/main/java/pro/gravit/launcher/client/RuntimeLauncherCoreModule.java +++ b/LauncherClient/src/main/java/pro/gravit/launcher/client/RuntimeLauncherCoreModule.java @@ -2,12 +2,12 @@ import pro.gravit.launcher.base.modules.LauncherInitContext; import pro.gravit.launcher.base.modules.LauncherModule; -import pro.gravit.launcher.base.modules.LauncherModuleInfo; +import pro.gravit.launcher.base.modules.LauncherModuleInfoBuilder; import pro.gravit.utils.Version; public class RuntimeLauncherCoreModule extends LauncherModule { public RuntimeLauncherCoreModule() { - super(new LauncherModuleInfo("ClientLauncherCore", Version.getVersion())); + super(new LauncherModuleInfoBuilder().setName("ClientLauncherCore").setVersion(Version.getVersion()).createLauncherModuleInfo()); } @Override diff --git a/modules b/modules index 0c464380..5d45e024 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit 0c464380b9db8fb73f995953538b4e323035a3b0 +Subproject commit 5d45e024375779aef4f6dafff6ea5efba8c250f0