You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/04/26 01:41:07 UTC

svn commit: r1590194 - in /logging/log4j/log4j2/trunk: ./ log4j-core/ log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/ log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/ log4j-core/src/main/resources/...

Author: mattsicker
Date: Fri Apr 25 23:41:06 2014
New Revision: 1590194

URL: http://svn.apache.org/r1590194
Log:
Merge log4j-plugin-processor to log4j-core.

  - Updated maven-compiler-plugin settings for log4j-core so that the annotation processing works properly.

Added:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/Plugin.java
      - copied unchanged from r1590193, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/Plugin.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAliases.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAliases.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginElement.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginFactory.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginFactory.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginNode.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginValue.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/SensitivePluginAttribute.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/package-info.java
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/package-info.java
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/
      - copied from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/
    logging/log4j/log4j2/trunk/log4j-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor
      - copied unchanged from r1590185, logging/log4j/log4j2/trunk/log4j-plugin-processor/src/main/resources/META-INF/services/javax.annotation.processing.Processor
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java   (with props)
    logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java   (with props)
Removed:
    logging/log4j/log4j2/trunk/log4j-plugin-processor/
Modified:
    logging/log4j/log4j2/trunk/log4j-core/pom.xml
    logging/log4j/log4j2/trunk/log4j-flume-ng/pom.xml
    logging/log4j/log4j2/trunk/pom.xml

Modified: logging/log4j/log4j2/trunk/log4j-core/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/pom.xml?rev=1590194&r1=1590193&r2=1590194&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/pom.xml (original)
+++ logging/log4j/log4j2/trunk/log4j-core/pom.xml Fri Apr 25 23:41:06 2014
@@ -38,11 +38,6 @@
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
     </dependency>
-    <!-- Used for pre-caching the standard plugins -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-plugin-processor</artifactId>
-    </dependency>
     <!-- Used for OSGi bundle support -->
     <dependency>
       <groupId>org.osgi</groupId>
@@ -221,38 +216,50 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
+        <artifactId>maven-compiler-plugin</artifactId>
         <executions>
           <execution>
+            <!-- disable annotation processing for first pass -->
+            <id>default-compile</id>
             <goals>
-              <goal>test-jar</goal>
+              <goal>compile</goal>
+            </goals>
+            <phase>compile</phase>
+            <configuration>
+              <proc>none</proc>
+            </configuration>
+          </execution>
+          <execution>
+            <!-- then do a processing-only pass to generate plugins .dat file -->
+            <id>process-plugins</id>
+            <goals>
+              <goal>compile</goal>
             </goals>
+            <phase>process-classes</phase>
+            <configuration>
+              <proc>only</proc>
+            </configuration>
           </execution>
+          <!--execution>
+            <id>default-testCompile</id>
+            <goals>
+              <goal>testCompile</goal>
+            </goals>
+            <phase>test-compile</phase>
+          </execution-->
         </executions>
       </plugin>
-      <!-- TODO: verify this is no longer required -->
-      <!--
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>exec-maven-plugin</artifactId>
-        <version>1.2.1</version>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
         <executions>
           <execution>
-            <phase>process-classes</phase>
             <goals>
-              <goal>java</goal>
+              <goal>test-jar</goal>
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <mainClass>org.apache.logging.log4j.core.config.plugins.util.PluginManager</mainClass>
-          <arguments>
-            <argument>${project.build.outputDirectory}</argument>
-          </arguments>
-        </configuration>
       </plugin>
-      -->
       <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>

Added: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java?rev=1590194&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java Fri Apr 25 23:41:06 2014
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4j.core.config.plugins.processor;
+
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginAliases;
+
+/**
+ * Test plugin class for unit tests.
+ */
+@Plugin(name = "Fake", category = "Test")
+@PluginAliases({"AnotherFake", "StillFake"})
+public class FakePlugin {
+
+    @Plugin(name = "Nested", category = "Test")
+    public static class Nested {
+    }
+}

Propchange: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/FakePlugin.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java?rev=1590194&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java Fri Apr 25 23:41:06 2014
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.logging.log4j.core.config.plugins.processor;
+
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.concurrent.ConcurrentMap;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginAliases;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.junit.Assert.*;
+
+@RunWith(JUnit4.class)
+public class PluginProcessorTest {
+
+    private static final String CACHE_FILE = "org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat";
+
+    private static final PluginCache pluginCache = new PluginCache();
+
+    private final Plugin p = FakePlugin.class.getAnnotation(Plugin.class);
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+        final Enumeration<URL> resources = PluginProcessor.class.getClassLoader().getResources(CACHE_FILE);
+        pluginCache.loadCacheFiles(resources);
+    }
+
+    @Test
+    public void testTestCategoryFound() throws Exception {
+        assertNotNull("No plugin annotation on FakePlugin.", p);
+        final ConcurrentMap<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 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);
+        }
+    }
+
+    private void verifyFakePluginEntry(final String name, final PluginEntry fake) {
+        assertNotNull("The plugin '" + name.toLowerCase() + "' was not found.", fake);
+        assertEquals(FakePlugin.class.getName(), fake.getClassName());
+        assertEquals(name.toLowerCase(), fake.getKey());
+        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 = 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());
+    }
+}

Propchange: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: logging/log4j/log4j2/trunk/log4j-flume-ng/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-flume-ng/pom.xml?rev=1590194&r1=1590193&r2=1590194&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-flume-ng/pom.xml (original)
+++ logging/log4j/log4j2/trunk/log4j-flume-ng/pom.xml Fri Apr 25 23:41:06 2014
@@ -39,10 +39,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-plugin-processor</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
     <dependency>

Modified: logging/log4j/log4j2/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/pom.xml?rev=1590194&r1=1590193&r2=1590194&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/pom.xml (original)
+++ logging/log4j/log4j2/trunk/pom.xml Fri Apr 25 23:41:06 2014
@@ -254,18 +254,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-plugin-processor</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-plugin-processor</artifactId>
-        <version>${project.version}</version>
-        <type>test-jar</type>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -912,7 +900,6 @@
     <module>log4j-jmx-gui</module>
     <module>log4j-samples</module>
     <module>log4j-bom</module>
-    <module>log4j-plugin-processor</module>
   </modules>
   <profiles>
     <profile>