Skip to content

Commit 78f65ee

Browse files
committed
Improved to using a new system for locating dependencies and the launch target class to be launched.
1 parent b3a529f commit 78f65ee

19 files changed

Lines changed: 138 additions & 43 deletions

src/main/java/module-info.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010

1111
opens org.mangorage.bootstrap;
1212

13+
provides org.mangorage.bootstrap.api.launch.ILaunchTarget with org.mangorage.bootstrap.internal.launch.MangoBotLaunchTarget;
14+
provides org.mangorage.bootstrap.api.dependency.IDependencyLocator with org.mangorage.bootstrap.internal.launch.MangoBotDependencyLocator;
15+
1316
uses org.mangorage.bootstrap.api.transformer.IClassTransformer;
1417
uses org.mangorage.bootstrap.api.module.IModuleConfigurator;
1518
uses org.mangorage.bootstrap.api.launch.ILaunchTarget;
19+
uses org.mangorage.bootstrap.api.dependency.IDependencyLocator;
20+
uses org.mangorage.bootstrap.api.launch.ILaunchTargetEntrypoint;
1621
}

src/main/java/org/mangorage/bootstrap/Bootstrap.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package org.mangorage.bootstrap;
22

33
import com.google.gson.Gson;
4+
import org.mangorage.bootstrap.api.dependency.IDependencyLocator;
45
import org.mangorage.bootstrap.api.launch.ILaunchTarget;
5-
import org.mangorage.bootstrap.internal.Util;
6-
import org.mangorage.bootstrap.internal.MangoBotLaunchTarget;
6+
import org.mangorage.bootstrap.internal.util.Util;
7+
import org.mangorage.bootstrap.internal.launch.MangoBotLaunchTarget;
78
import java.lang.module.Configuration;
89
import java.lang.module.ModuleFinder;
910
import java.nio.file.Files;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.mangorage.bootstrap.api.dependency;
2+
3+
import java.nio.file.Path;
4+
5+
public interface IDependency {
6+
String getName();
7+
ModuleNameOrigin getModuleNameOrigin();
8+
Path resolveJar();
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.mangorage.bootstrap.api.dependency;
2+
3+
import java.util.List;
4+
5+
public interface IDependencyLocator {
6+
boolean isValidLocatorFor(String launchTarget);
7+
List<IDependency> locate();
8+
}

src/main/java/org/mangorage/bootstrap/internal/util/ModuleNameOrigin.java renamed to src/main/java/org/mangorage/bootstrap/api/dependency/ModuleNameOrigin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.mangorage.bootstrap.internal.util;
1+
package org.mangorage.bootstrap.api.dependency;
22

33
public enum ModuleNameOrigin {
44
MODULE_INFO, // HIGHEST
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.mangorage.bootstrap.api.launch;
2+
3+
/**
4+
* Entrypoint for launching
5+
*/
6+
public interface ILaunchTargetEntrypoint {
7+
/**
8+
* @return should match the same id of a launch target {@link ILaunchTarget}).
9+
*/
10+
String getLaunchTargetId();
11+
void init(String[] args);
12+
}

src/main/java/org/mangorage/bootstrap/api/loader/IMangoLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.mangorage.bootstrap.api.loader;
22

3-
import org.mangorage.bootstrap.internal.MangoLoaderImpl;
3+
import org.mangorage.bootstrap.internal.launch.MangoLoaderImpl;
44

55
public sealed interface IMangoLoader permits MangoLoaderImpl {
66
byte[] getClassBytes(String name);

src/main/java/org/mangorage/bootstrap/api/module/IModuleLayer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.mangorage.bootstrap.api.module;
22

3-
import org.mangorage.bootstrap.internal.ModuleLayerImpl;
3+
import org.mangorage.bootstrap.internal.launch.ModuleLayerImpl;
44

55
import java.util.List;
66

src/main/java/org/mangorage/bootstrap/internal/DependencyHandler.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import com.google.gson.Gson;
44
import com.google.gson.GsonBuilder;
5+
import org.mangorage.bootstrap.api.dependency.IDependency;
56
import org.mangorage.bootstrap.internal.util.Dependencies;
6-
import org.mangorage.bootstrap.internal.util.Result;
7-
87
import java.io.FileNotFoundException;
98
import java.io.IOException;
109
import java.io.InputStream;
@@ -13,18 +12,16 @@
1312
import java.nio.file.Files;
1413
import java.nio.file.Path;
1514
import java.util.ArrayList;
16-
import java.util.HashMap;
1715
import java.util.List;
18-
import java.util.Map;
1916
import java.util.jar.JarEntry;
2017
import java.util.jar.JarFile;
2118

2219
public final class DependencyHandler {
2320
private static final Gson GSON = new GsonBuilder().create();
2421

25-
public static Map<String, List<Result>> scanPackages(Path packagesPath, Path librariesPath) throws IOException {
22+
public static List<IDependency> scanPackages(Path packagesPath, Path librariesPath) throws IOException {
2623

27-
final Map<String, List<Result>> results = new HashMap<>();
24+
final List<IDependency> results = new ArrayList<>();
2825

2926
try (DirectoryStream<Path> stream = Files.newDirectoryStream(packagesPath)) {
3027
for (Path entry : stream) {
@@ -38,7 +35,7 @@ public static Map<String, List<Result>> scanPackages(Path packagesPath, Path lib
3835
final var result = JarHandler.resolveModuleName(
3936
librariesPath.resolve(dependency.output())
4037
);
41-
results.computeIfAbsent(result.name(), k -> new ArrayList<>()).add(result);
38+
results.add(result);
4239
});
4340
}
4441
}

src/main/java/org/mangorage/bootstrap/internal/JarHandler.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.mangorage.bootstrap.internal;
22

3-
import org.mangorage.bootstrap.internal.util.ModuleNameOrigin;
3+
import org.mangorage.bootstrap.api.dependency.ModuleNameOrigin;
44
import org.mangorage.bootstrap.internal.util.Result;
55

66
import java.io.IOException;
@@ -58,9 +58,7 @@ public static Result resolveModuleName(Path jarPath) {
5858
}
5959

6060
try {
61-
System.out.println("MAYBE!?");
6261
final var found = ModuleFinder.of(jarPath).findAll();
63-
System.out.println(found);
6462
if (found != null) {
6563
final var foundModule = found.stream().findAny();
6664
if (foundModule.isPresent())

0 commit comments

Comments
 (0)