public PluginMetadata getMetadataFor(final Class<? extends Plugin> plugin)
{
String name = getPluginName(plugin);
PluginMetadataImpl pluginMeta = new PluginMetadataImpl();
pluginMeta.setName(name);
pluginMeta.setType(plugin);
if (Annotations.isAnnotationPresent(plugin, Help.class))
{
pluginMeta.setHelp(Annotations.getAnnotation(plugin, Help.class).value());
}
else
{
pluginMeta.setHelp("");
}
if (Annotations.isAnnotationPresent(plugin, RequiresResource.class))
{
List<Class<? extends Resource<?>>> resourceTypes = Arrays.asList(Annotations.getAnnotation(plugin,
RequiresResource.class).value());
pluginMeta.setResourceScopes(resourceTypes);
}
if (Annotations.isAnnotationPresent(plugin, Topic.class))
{
pluginMeta.setTopic(Annotations.getAnnotation(plugin, Topic.class).value());
}
processPluginCommands(pluginMeta, plugin);
return pluginMeta;
}