Merge pull request #2500 from open-osrs/ext

externals: catch invalid plugintype exceptions
This commit is contained in:
Kyle
2020-04-11 15:44:11 +01:00
committed by GitHub

View File

@@ -119,6 +119,7 @@ public class ExternalPluginManager
@Getter(AccessLevel.PUBLIC) @Getter(AccessLevel.PUBLIC)
private UpdateManager updateManager; private UpdateManager updateManager;
private Map<String, PluginInfo.PluginRelease> lastPluginRelease = new HashMap<>(); private Map<String, PluginInfo.PluginRelease> lastPluginRelease = new HashMap<>();
private Set<PluginType> pluginTypes = Set.of(PluginType.values());
@Inject @Inject
public ExternalPluginManager( public ExternalPluginManager(
@@ -638,17 +639,29 @@ public class ExternalPluginManager
Class<? extends Plugin> clazz = plugin.getClass(); Class<? extends Plugin> clazz = plugin.getClass();
PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class); PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class);
if (pluginDescriptor == null) try
{ {
if (clazz.getSuperclass() == Plugin.class) if (pluginDescriptor == null)
{
if (clazz.getSuperclass() == Plugin.class)
{
log.warn("Class {} is a plugin, but has no plugin descriptor", clazz);
continue;
}
}
else if (clazz.getSuperclass() != Plugin.class)
{
log.warn("Class {} has plugin descriptor, but is not a plugin", clazz);
continue;
}
else if (!pluginTypes.contains(pluginDescriptor.type()))
{ {
log.warn("Class {} is a plugin, but has no plugin descriptor", clazz);
continue; continue;
} }
} }
else if (clazz.getSuperclass() != Plugin.class) catch (EnumConstantNotPresentException e)
{ {
log.warn("Class {} has plugin descriptor, but is not a plugin", clazz); log.warn("{} has an invalid plugin type of {}", clazz, e.getMessage());
continue; continue;
} }