Return-Path: X-Original-To: apmail-logging-commits-archive@minotaur.apache.org Delivered-To: apmail-logging-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 257D110707 for ; Sun, 6 Apr 2014 05:36:55 +0000 (UTC) Received: (qmail 71558 invoked by uid 500); 6 Apr 2014 05:36:54 -0000 Delivered-To: apmail-logging-commits-archive@logging.apache.org Received: (qmail 71531 invoked by uid 500); 6 Apr 2014 05:36:53 -0000 Mailing-List: contact commits-help@logging.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@logging.apache.org Delivered-To: mailing list commits@logging.apache.org Received: (qmail 71524 invoked by uid 99); 6 Apr 2014 05:36:52 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Apr 2014 05:36:52 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Apr 2014 05:36:51 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id F302323888E2; Sun, 6 Apr 2014 05:36:30 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1585249 - in /logging/log4j/log4j2/trunk/log4j-plugin-processor/src: main/java/org/apache/logging/log4j/core/config/plugins/processor/ test/java/org/apache/logging/log4j/core/config/plugins/processor/ Date: Sun, 06 Apr 2014 05:36:30 -0000 To: commits@logging.apache.org From: mattsicker@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140406053630.F302323888E2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mattsicker Date: Sun Apr 6 05:36:30 2014 New Revision: 1585249 URL: http://svn.apache.org/r1585249 Log: Fix problem with nested plugin classes. Modified: logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java Modified: logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java?rev=1585249&r1=1585248&r2=1585249&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java (original) +++ logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java Sun Apr 6 05:36:30 2014 @@ -35,6 +35,7 @@ import javax.lang.model.SourceVersion; import javax.lang.model.element.Element; import javax.lang.model.element.ElementVisitor; import javax.lang.model.element.TypeElement; +import javax.lang.model.util.Elements; import javax.lang.model.util.SimpleElementVisitor6; import javax.tools.FileObject; import org.apache.logging.log4j.core.config.plugins.Plugin; @@ -62,10 +63,6 @@ public class PluginProcessor extends Abs private final ConcurrentMap> pluginCategories = new ConcurrentHashMap>(); - private final ElementVisitor pluginVisitor = - new PluginElementVisitor(); - private final ElementVisitor, Plugin> pluginAliasesVisitor = - new PluginAliasesElementVisitor(); @Override public boolean process(final Set annotations, final RoundEnvironment roundEnv) { @@ -88,6 +85,11 @@ public class PluginProcessor extends Abs } private void collectPlugins(final Iterable elements) { + final Elements elementUtils = processingEnv.getElementUtils(); + final ElementVisitor pluginVisitor = + new PluginElementVisitor(elementUtils); + final ElementVisitor, Plugin> pluginAliasesVisitor = + new PluginAliasesElementVisitor(elementUtils); for (final Element element : elements) { final Plugin plugin = element.getAnnotation(Plugin.class); final PluginEntry entry = element.accept(pluginVisitor, plugin); @@ -128,6 +130,13 @@ public class PluginProcessor extends Abs * ElementVisitor to scan the Plugin annotation. */ private static class PluginElementVisitor extends SimpleElementVisitor6 { + + private final Elements elements; + + private PluginElementVisitor(final Elements elements) { + this.elements = elements; + } + @Override public PluginEntry visitType(final TypeElement e, final Plugin plugin) { if (plugin == null) { @@ -135,7 +144,7 @@ public class PluginProcessor extends Abs } final PluginEntry entry = new PluginEntry(); entry.setKey(plugin.name().toLowerCase()); - entry.setClassName(e.getQualifiedName().toString()); + 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()); @@ -148,8 +157,12 @@ public class PluginProcessor extends Abs * ElementVisitor to scan the PluginAliases annotation. */ private static class PluginAliasesElementVisitor extends SimpleElementVisitor6, Plugin> { - protected PluginAliasesElementVisitor() { + + private final Elements elements; + + private PluginAliasesElementVisitor(final Elements elements) { super(Collections.emptyList()); + this.elements = elements; } @Override @@ -162,7 +175,7 @@ public class PluginProcessor extends Abs for (final String alias : aliases.value()) { final PluginEntry entry = new PluginEntry(); entry.setKey(alias.toLowerCase()); - entry.setClassName(e.getQualifiedName().toString()); + entry.setClassName(elements.getBinaryName(e).toString()); entry.setName(Plugin.EMPTY.equals(plugin.elementType()) ? alias : plugin.elementType()); entry.setPrintable(plugin.printObject()); entry.setDefer(plugin.deferChildren()); Modified: logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java?rev=1585249&r1=1585248&r2=1585249&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java (original) +++ logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java Sun Apr 6 05:36:30 2014 @@ -26,4 +26,8 @@ import org.apache.logging.log4j.core.con @Plugin(name = "Fake", category = "Test") @PluginAliases({"AnotherFake", "StillFake"}) public class FakePlugin { + + @Plugin(name = "Nested", category = "Test") + public static class Nested { + } } Modified: logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java?rev=1585249&r1=1585248&r2=1585249&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java (original) +++ logging/log4j/log4j2/trunk/log4j-plugin-processor/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java Sun Apr 6 05:36:30 2014 @@ -103,9 +103,22 @@ public class PluginProcessorTest { assertNotNull("The plugin '" + name.toLowerCase() + "' was not found.", fake); assertEquals(FakePlugin.class.getName(), fake.getClassName()); assertEquals(name.toLowerCase(), fake.getKey()); - assertEquals("", p.elementType()); + assertEquals(Plugin.EMPTY, p.elementType()); assertEquals(name, fake.getName()); assertEquals(p.printObject(), fake.isPrintable()); assertEquals(p.deferChildren(), fake.isDefer()); } + + @Test + public void testNestedPlugin() throws Exception { + final Plugin p = FakePlugin.Nested.class.getAnnotation(Plugin.class); + final PluginEntry nested = pluginCategories.get(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()); + } }