[REFACTOR] Update create module api

This commit is contained in:
Gravita 2025-05-30 14:15:49 +07:00
parent de844201b4
commit b8f6857ef2
16 changed files with 125 additions and 35 deletions

View file

@ -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

View file

@ -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) {

View file

@ -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);
}
}

View file

@ -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<SimpleModuleAccessor> consumer;
public SimpleModule(LauncherModuleInfo info, Consumer<SimpleModuleAccessor> 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<SimpleModuleAccessor> 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 extends LauncherModule> T requireModule(Class<? extends T> 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 <T extends Event> boolean registerEvent(EventHandler<T> handle, Class<T> tClass) {
return SimpleModule.this.registerEvent(handle, tClass);
}
public final <T extends Event> void callEvent(T event) {
SimpleModule.this.callEvent(event);
}
}
}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

@ -1 +1 @@
Subproject commit 0c464380b9db8fb73f995953538b4e323035a3b0
Subproject commit 5d45e024375779aef4f6dafff6ea5efba8c250f0