generify BootstrapBaseAddon

This commit is contained in:
dfsek 2021-11-17 08:22:06 -07:00
parent e3b00d45ec
commit 9840bf09fa

View File

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