@Test public void testFakePluginAliasesContainSameInformation() throws Exception { final PluginAliases aliases = FakePlugin.class.getAnnotation(PluginAliases.class); for (final String alias : aliases.value()) { final PluginEntry fake = pluginCache.getCategory(p.category()).get(alias.toLowerCase()); verifyFakePluginEntry(alias, fake); } }
@Test public void testTestCategoryFound() throws Exception { assertNotNull("No plugin annotation on FakePlugin.", p); final Map<String, PluginEntry> testCategory = pluginCache.getCategory(p.category()); assertNotEquals("No plugins were found.", 0, pluginCache.size()); assertNotNull("The category '" + p.category() + "' was not found.", testCategory); assertFalse(testCategory.isEmpty()); }
@Test public void testFakePluginFoundWithCorrectInformation() throws Exception { final PluginEntry fake = pluginCache.getCategory(p.category()).get(p.name().toLowerCase()); verifyFakePluginEntry(p.name(), fake); }
@Test public void testNestedPlugin() throws Exception { final Plugin p = FakePlugin.Nested.class.getAnnotation(Plugin.class); final PluginEntry nested = pluginCache.getCategory(p.category()).get(p.name().toLowerCase()); assertNotNull(nested); assertEquals(p.name().toLowerCase(), nested.getKey()); assertEquals(FakePlugin.Nested.class.getName(), nested.getClassName()); assertEquals(p.name(), nested.getName()); assertEquals(Plugin.EMPTY, p.elementType()); assertEquals(p.printObject(), nested.isPrintable()); assertEquals(p.deferChildren(), nested.isDefer()); } }
@Override public Collection<PluginEntry> visitType(final TypeElement e, final Plugin plugin) { final PluginAliases aliases = e.getAnnotation(PluginAliases.class); if (aliases == null) { return DEFAULT_VALUE; } final Collection<PluginEntry> entries = new ArrayList<>(aliases.value().length); for (final String alias : aliases.value()) { final PluginEntry entry = new PluginEntry(); entry.setKey(alias.toLowerCase(Locale.US)); entry.setClassName(elements.getBinaryName(e).toString()); entry.setName(Plugin.EMPTY.equals(plugin.elementType()) ? alias : plugin.elementType()); entry.setPrintable(plugin.printObject()); entry.setDefer(plugin.deferChildren()); entry.setCategory(plugin.category()); entries.add(entry); } return entries; } }
@Override public PluginEntry visitType(final TypeElement e, final Plugin plugin) { Objects.requireNonNull(plugin, "Plugin annotation is null."); final PluginEntry entry = new PluginEntry(); entry.setKey(plugin.name().toLowerCase(Locale.US)); entry.setClassName(elements.getBinaryName(e).toString()); entry.setName(Plugin.EMPTY.equals(plugin.elementType()) ? plugin.name() : plugin.elementType()); entry.setPrintable(plugin.printObject()); entry.setDefer(plugin.deferChildren()); entry.setCategory(plugin.category()); return entry; } }
for (final Class<?> clazz : resolver.getClasses()) { final Plugin plugin = clazz.getAnnotation(Plugin.class); final String categoryLowerCase = plugin.category().toLowerCase(); List<PluginType<?>> list = newPluginsByCategory.get(categoryLowerCase); if (list == null) { mainEntry.setKey(plugin.name().toLowerCase()); mainEntry.setName(plugin.name()); mainEntry.setCategory(plugin.category()); mainEntry.setClassName(clazz.getName()); mainEntry.setPrintable(plugin.printObject()); aliasEntry.setKey(alias.trim().toLowerCase()); aliasEntry.setName(plugin.name()); aliasEntry.setCategory(plugin.category()); aliasEntry.setClassName(clazz.getName()); aliasEntry.setPrintable(plugin.printObject());