mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 16:35:50 +00:00
generify BootstrapBaseAddon
This commit is contained in:
parent
e3b00d45ec
commit
9840bf09fa
@ -16,6 +16,7 @@ import java.util.jar.JarEntry;
|
|||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||||
import com.dfsek.terra.addons.manifest.impl.config.AddonManifest;
|
import com.dfsek.terra.addons.manifest.impl.config.AddonManifest;
|
||||||
import com.dfsek.terra.addons.manifest.impl.config.WebsiteConfig;
|
import com.dfsek.terra.addons.manifest.impl.config.WebsiteConfig;
|
||||||
import com.dfsek.terra.addons.manifest.impl.config.loaders.VersionLoader;
|
import com.dfsek.terra.addons.manifest.impl.config.loaders.VersionLoader;
|
||||||
@ -27,9 +28,9 @@ import com.dfsek.terra.api.addon.BaseAddon;
|
|||||||
import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon;
|
import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon;
|
||||||
|
|
||||||
|
|
||||||
public class ManifestAddonLoader implements BootstrapBaseAddon {
|
public class ManifestAddonLoader implements BootstrapBaseAddon<ManifestAddon> {
|
||||||
@Override
|
@Override
|
||||||
public Iterable<BaseAddon> loadAddons(Path addonsFolder, ClassLoader parent) {
|
public Iterable<ManifestAddon> loadAddons(Path addonsFolder, ClassLoader parent) {
|
||||||
ConfigLoader manifestLoader = new ConfigLoader();
|
ConfigLoader manifestLoader = new ConfigLoader();
|
||||||
manifestLoader.registerLoader(Version.class, new VersionLoader())
|
manifestLoader.registerLoader(Version.class, new VersionLoader())
|
||||||
.registerLoader(VersionRange.class, new VersionRangeLoader())
|
.registerLoader(VersionRange.class, new VersionRangeLoader())
|
||||||
@ -58,10 +59,10 @@ public class ManifestAddonLoader implements BootstrapBaseAddon {
|
|||||||
return manifest.getEntryPoints().stream().map(entryPoint -> {
|
return manifest.getEntryPoints().stream().map(entryPoint -> {
|
||||||
try {
|
try {
|
||||||
Object in = loader.loadClass(entryPoint).getConstructor().newInstance();
|
Object in = loader.loadClass(entryPoint).getConstructor().newInstance();
|
||||||
if(!(in instanceof BaseAddon)) {
|
if(!(in instanceof AddonInitializer)) {
|
||||||
throw new AddonException(in.getClass() + " does not extend " + BaseAddon.class);
|
throw new AddonException(in.getClass() + " does not extend " + AddonInitializer.class);
|
||||||
}
|
}
|
||||||
return (BaseAddon) in;
|
return new ManifestAddon(manifest);
|
||||||
} catch(InvocationTargetException e) {
|
} catch(InvocationTargetException e) {
|
||||||
throw new AddonException("Exception occurred while instantiating addon: ", e);
|
throw new AddonException("Exception occurred while instantiating addon: ", e);
|
||||||
} catch(NoSuchMethodException | IllegalAccessException | InstantiationException e) {
|
} catch(NoSuchMethodException | IllegalAccessException | InstantiationException e) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user