From 22c97ca390f96ef20995d7eadd8f483071c14aad Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 29 Jun 2021 19:34:54 -0700 Subject: [PATCH] refactor addon loader to new module --- .../java/com/dfsek/terra/api/addon/TerraAddon.java | 12 ++++++------ .../com/dfsek/terra/api/addon/annotations/Addon.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Author.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Depends.java | 4 ++-- .../dfsek/terra/api/addon/annotations/Version.java | 4 ++-- .../dfsek/terra/api/event/annotations/Global.java | 2 +- .../com/dfsek/terra/api/event/events/PackEvent.java | 4 ++-- .../dfsek/terra/registry/master/AddonRegistry.java | 10 +++++----- .../java/com/dfsek/terra/addon/AddonClassLoader.java | 0 .../main/java/com/dfsek/terra/addon/AddonPool.java | 2 +- .../java/com/dfsek/terra/addon/PreLoadAddon.java | 4 ++-- .../terra/addon/exception/AddonLoadException.java | 0 .../addon/exception/CircularDependencyException.java | 0 .../addon/exception/DependencyMissingException.java | 0 .../com/dfsek/terra/bukkit/TerraBukkitPlugin.java | 10 +++++----- .../dfsek/terra/bukkit/listeners/TerraListener.java | 2 +- .../com/dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../java/com/dfsek/terra/forge/TerraForgePlugin.java | 2 +- 18 files changed, 33 insertions(+), 33 deletions(-) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/AddonPool.java (94%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java (94%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java (100%) rename common/{implementation => loader/addon}/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java (100%) diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java index b49a87710..1771a77d9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/TerraAddon.java @@ -7,11 +7,11 @@ import com.dfsek.terra.api.addon.annotations.Version; import org.jetbrains.annotations.NotNull; /** - * Represents an entry point for an addon. Implementations must be annotated with {@link Addon}. + * Represents an entry point for an com.dfsek.terra.addon. Implementations must be annotated with {@link Addon}. */ public abstract class TerraAddon { /** - * Gets the version of this addon. + * Gets the version of this com.dfsek.terra.addon. * * @return Addon version. */ @@ -21,7 +21,7 @@ public abstract class TerraAddon { } /** - * Gets the author of this addon. + * Gets the author of this com.dfsek.terra.addon. * * @return Addon author. */ @@ -31,19 +31,19 @@ public abstract class TerraAddon { } /** - * Gets the name (ID) of this addon. + * Gets the name (ID) of this com.dfsek.terra.addon. * * @return Addon ID. */ public final @NotNull String getName() { Addon addon = getClass().getAnnotation(Addon.class); if(addon == null) - throw new IllegalStateException("Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the addon loader. + throw new IllegalStateException("Addon annotation not present"); // This should never happen; the presence of this annotation is checked by the com.dfsek.terra.addon loader. return addon.value(); } /** - * Invoked immediately after an addon is loaded. + * Invoked immediately after an com.dfsek.terra.addon is loaded. */ public abstract void initialize(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java index 355cf68d7..3ca6354c9 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Addon.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Specifies that the annotated class is an entry point for a Terra addon. + * Specifies that the annotated class is an entry point for a Terra com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Addon { /** - * @return The ID of the addon. + * @return The ID of the com.dfsek.terra.addon. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java index a7241990f..9c46e8eab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Author.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies the author of an addon. + * Optional annotation that specifies the author of an com.dfsek.terra.addon. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Author { /** - * @return Name of the addon author. + * @return Name of the com.dfsek.terra.addon author. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java index 604b5c3f9..83b5b01fd 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Depends.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies dependencies of an addon. + * Optional annotation that specifies dependencies of an com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Depends { /** - * @return All addons this addon is dependent upon. + * @return All addons this com.dfsek.terra.addon is dependent upon. */ @NotNull String[] value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java index a683c821c..63afd191f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java +++ b/common/api/src/main/java/com/dfsek/terra/api/addon/annotations/Version.java @@ -8,13 +8,13 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Optional annotation that specifies the version of an addon. + * Optional annotation that specifies the version of an com.dfsek.terra.addon. */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Version { /** - * @return Version of the addon. + * @return Version of the com.dfsek.terra.addon. */ @NotNull String value(); } diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java index d162c00d9..f20d2f0ed 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/annotations/Global.java @@ -9,7 +9,7 @@ import java.lang.annotation.Target; /** * Specifies that an event handler is to handle all {@link PackEvent}s, regardless of whether the pack - * depends on the addon's listener. + * depends on the com.dfsek.terra.addon's listener. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) diff --git a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java index 048885f1f..3c774b4ab 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java +++ b/common/api/src/main/java/com/dfsek/terra/api/event/events/PackEvent.java @@ -6,8 +6,8 @@ import com.dfsek.terra.api.event.annotations.Global; /** * An event with functionality directly linked to a {@link ConfigPack}. *

- * PackEvents are only invoked when the pack specifies the addon in its - * {@code addon} key (or when the listener is annotated {@link Global}). + * PackEvents are only invoked when the pack specifies the com.dfsek.terra.addon in its + * {@code com.dfsek.terra.addon} key (or when the listener is annotated {@link Global}). */ @SuppressWarnings("InterfaceMayBeAnnotatedFunctional") public interface PackEvent extends Event { diff --git a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java index 1b8ef7d76..a96e6b0a5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java +++ b/common/implementation/src/main/java/com/dfsek/terra/registry/master/AddonRegistry.java @@ -34,7 +34,7 @@ public class AddonRegistry extends OpenRegistryImpl { public boolean add(String identifier, TerraAddon addon) { if(contains(identifier)) throw new IllegalArgumentException("Addon " + identifier + " is already registered."); addon.initialize(); - main.logger().info("Loaded addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); + main.logger().info("Loaded com.dfsek.terra.addon " + addon.getName() + " v" + addon.getVersion() + ", by " + addon.getAuthor()); return super.add(identifier, addon); } @@ -88,15 +88,15 @@ public class AddonRegistry extends OpenRegistryImpl { pluginInjector.inject(loadedAddon); loggerInjector.inject(loadedAddon); } catch(InstantiationException | IllegalAccessException | InvocationTargetException | InjectionException e) { - throw new AddonLoadException("Failed to load addon \" + " + addon.getId() + "\": ", e); + throw new AddonLoadException("Failed to load com.dfsek.terra.addon \" + " + addon.getId() + "\": ", e); } try { addChecked(loadedAddon.getName(), loadedAddon); } catch(DuplicateEntryException e) { valid = false; - main.logger().severe("Duplicate addon ID; addon with ID " + loadedAddon.getName() + " is already loaded."); - main.logger().severe("Existing addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); - main.logger().severe("Duplicate addon class: " + addonClass.getCanonicalName()); + main.logger().severe("Duplicate com.dfsek.terra.addon ID; com.dfsek.terra.addon with ID " + loadedAddon.getName() + " is already loaded."); + main.logger().severe("Existing com.dfsek.terra.addon class: " + get(loadedAddon.getName()).getClass().getCanonicalName()); + main.logger().severe("Duplicate com.dfsek.terra.addon class: " + addonClass.getCanonicalName()); } } } catch(AddonLoadException | IOException e) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonClassLoader.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java index 5636aa06b..479e82237 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/AddonPool.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/AddonPool.java @@ -12,7 +12,7 @@ public class AddonPool { public void add(PreLoadAddon addon) throws AddonLoadException { if(pool.containsKey(addon.getId())) { - String message = "Duplicate addon ID: " + + String message = "Duplicate com.dfsek.terra.addon ID: " + addon.getId() + "; original ID from file: " + pool.get(addon.getId()).getFile().getAbsolutePath() + ", class: " + diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java similarity index 94% rename from common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java index f3b1b0482..41c99a269 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java +++ b/common/loader/addon/src/main/java/com/dfsek/terra/addon/PreLoadAddon.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addon; +import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.addon.exception.AddonLoadException; import com.dfsek.terra.addon.exception.CircularDependencyException; -import com.dfsek.terra.addon.exception.DependencyMissingException; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.annotations.Addon; import com.dfsek.terra.api.addon.annotations.Depends; @@ -33,7 +33,7 @@ public class PreLoadAddon { public void rebuildDependencies(AddonPool pool, PreLoadAddon origin, boolean levelG1) throws AddonLoadException { if(this.equals(origin) && !levelG1) - throw new CircularDependencyException("Detected circular dependency in addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); + throw new CircularDependencyException("Detected circular dependency in com.dfsek.terra.addon \"" + id + "\", dependencies: " + Arrays.toString(dependencies)); for(String dependency : dependencies) { PreLoadAddon preLoadAddon = pool.get(dependency); diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/AddonLoadException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/CircularDependencyException.java diff --git a/common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java b/common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java similarity index 100% rename from common/implementation/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java rename to common/loader/addon/src/main/java/com/dfsek/terra/addon/exception/DependencyMissingException.java diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 902935090..4d01b8ed4 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -129,10 +129,10 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { public void setHandle(WorldHandle handle) { getLogger().warning("|-------------------------------------------------------|"); - getLogger().warning("A third-party addon has injected a custom WorldHandle!"); - getLogger().warning("If you encounter issues, try *without* the addon before"); - getLogger().warning("reporting to Terra. Report issues with the addon to the"); - getLogger().warning("addon's maintainers!"); + getLogger().warning("A third-party com.dfsek.terra.addon has injected a custom WorldHandle!"); + getLogger().warning("If you encounter issues, try *without* the com.dfsek.terra.addon before"); + getLogger().warning("reporting to Terra. Report issues with the com.dfsek.terra.addon to the"); + getLogger().warning("com.dfsek.terra.addon's maintainers!"); getLogger().warning("|-------------------------------------------------------|"); this.handle = handle; } @@ -183,7 +183,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin { if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll()) { - getLogger().severe("Failed to load addons. Please correct addon installations to continue."); + getLogger().severe("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); Bukkit.getPluginManager().disablePlugin(this); return; } diff --git a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java index 264e085d4..680ec2952 100644 --- a/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java +++ b/platforms/bukkit/src/main/java/com/dfsek/terra/bukkit/listeners/TerraListener.java @@ -26,7 +26,7 @@ public class TerraListener implements EventListener { String id = BukkitAdapter.TREE_TRANSFORMER.translate(value); event.getPack().getRegistry(Tree.class).add(id, new BukkitTree(value, main)); event.getPack().getRegistry(Tree.class).get(id); // Platform trees should never be marked "dead" - } catch(DuplicateEntryException ignore) { // If another addon has already registered trees, do nothing. + } catch(DuplicateEntryException ignore) { // If another com.dfsek.terra.addon has already registered trees, do nothing. } } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 4e87326c3..515f2398d 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -258,7 +258,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { if(config.isDebugProfiler()) profiler.start(); if(!addonRegistry.loadAll()) { - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); + throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); } logger.info("Loaded addons."); diff --git a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java index 9a2d118ff..deaa61a19 100644 --- a/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java +++ b/platforms/forge/src/main/java/com/dfsek/terra/forge/TerraForgePlugin.java @@ -162,7 +162,7 @@ public class TerraForgePlugin implements TerraPlugin { logger.info("Initializing Terra..."); if(!addonRegistry.loadAll()) { - throw new IllegalStateException("Failed to load addons. Please correct addon installations to continue."); + throw new IllegalStateException("Failed to load addons. Please correct com.dfsek.terra.addon installations to continue."); } logger.info("Loaded addons.");