You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2016/11/05 07:00:52 UTC
[1/2] logging-log4j2 git commit: Refactor fror reuse for upcomming
test.
Repository: logging-log4j2
Updated Branches:
refs/heads/LOG4J2-1651 f8f14e4b9 -> 33ed792da
Refactor fror reuse for upcomming test.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/db74f854
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/db74f854
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/db74f854
Branch: refs/heads/LOG4J2-1651
Commit: db74f8542ca751b101c8b9ac1c8f65f1db91afc2
Parents: f8f14e4
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Nov 4 22:32:55 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Nov 4 22:32:55 2016 -0700
----------------------------------------------------------------------
.../core/config/plugins/processor/PluginProcessorTest.java | 6 ++++++
1 file changed, 6 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/db74f854/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
index 9c37af4..31c4fe7 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessorTest.java
@@ -24,6 +24,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map;
@@ -39,9 +40,14 @@ public class PluginProcessorTest {
@BeforeClass
public static void setUpClass() throws Exception {
+ loadCacheFiles();
+ }
+
+ static PluginCache loadCacheFiles() throws IOException {
final Enumeration<URL> resources =
PluginProcessor.class.getClassLoader().getResources(PluginProcessor.PLUGIN_CACHE_FILE);
pluginCache.loadCacheFiles(resources);
+ return pluginCache;
}
@Test
[2/2] logging-log4j2 git commit: Properties and XML Properties.
Posted by gg...@apache.org.
Properties and XML Properties.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/33ed792d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/33ed792d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/33ed792d
Branch: refs/heads/LOG4J2-1651
Commit: 33ed792daed1c31a45f8fa4fc11da72ba3c957e4
Parents: db74f85
Author: Gary Gregory <gg...@apache.org>
Authored: Sat Nov 5 00:00:39 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sat Nov 5 00:00:39 2016 -0700
----------------------------------------------------------------------
.../config/plugins/processor/PluginCache.java | 127 ++++++++++++++++---
.../processor/PluginCacheFormatTest.java | 12 ++
2 files changed, 120 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/33ed792d/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java
index f572437..591e38d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java
@@ -20,14 +20,26 @@ package org.apache.logging.log4j.core.config.plugins.processor;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.StringReader;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeSet;
import org.apache.logging.log4j.util.Strings;
@@ -35,11 +47,25 @@ import org.apache.logging.log4j.util.Strings;
*
*/
public class PluginCache {
-
+
+ static class SortedProperties extends Properties {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public synchronized Enumeration<Object> keys() {
+ return Collections.enumeration(new TreeSet<>(super.keySet()));
+ }
+
+ @Override
+ public Set<String> stringPropertyNames() {
+ return new TreeSet<>(super.stringPropertyNames());
+ }
+ }
+
public enum Format {
DAT {
@Override
- public void writeCache(PluginCache pluginCache, OutputStream os) throws IOException {
+ public void writeCache(final PluginCache pluginCache, final OutputStream os) throws IOException {
try (final DataOutputStream out = new DataOutputStream(new BufferedOutputStream(os))) {
// See PluginManager.readFromCacheFiles for the corresponding decoder. Format may not be changed
// without breaking existing Log4j2Plugins.dat files.
@@ -61,16 +87,56 @@ public class PluginCache {
}
}
},
-
+
XML {
@Override
- public void writeCache(PluginCache pluginCache, final OutputStream os) {
+ public void writeCache(final PluginCache pluginCache, final OutputStream os) {
try (final XMLEncoder out = new XMLEncoder(os)) {
out.writeObject(pluginCache.categories);
}
}
+ },
+
+ PROPERTIES_XML {
+
+ @Override
+ public String getExtension() {
+ return ".properties.xml";
+ }
+
+ @Override
+ public void writeCache(final PluginCache pluginCache, final OutputStream os) throws IOException {
+ toProperties(pluginCache).storeToXML(os, "Log4j2 plugin cache file");
+ }
+ },
+
+ PROPERTIES {
+ @Override
+ public void writeCache(final PluginCache pluginCache, final OutputStream os) throws IOException {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ toProperties(pluginCache).store(baos, "Log4j2 plugin cache file");
+ final String str = baos.toString("UTF-8");
+ // sort
+ final BufferedReader r = new BufferedReader(new StringReader(str));
+ String line;
+ final List<String> list = new ArrayList<>();
+ while ((line = r.readLine()) != null) {
+ list.add(line);
+ }
+ Collections.sort(list);
+ // write sorted
+ final PrintStream ps = new PrintStream(os);
+ for (final String string : list) {
+ ps.println(string);
+ }
+ }
+
};
+ public String getExtension() {
+ return "." + toString().toLowerCase(Locale.ROOT);
+ }
+
public abstract void writeCache(PluginCache pluginCache, final OutputStream os) throws IOException;
/**
@@ -82,21 +148,36 @@ public class PluginCache {
* The default Formats if the input is null or empty.
* @return a non-null array
*/
- public static Format[] parse(String formatsStr, Format... defaultFormats) {
+ public static Format[] parse(final String formatsStr, final Format... defaultFormats) {
if (Strings.isBlank(formatsStr)) {
return defaultFormats;
}
final String[] split = formatsStr.split("\\s*,\\s*");
- Format[] formats = new Format[split.length];
+ final Format[] formats = new Format[split.length];
for (int i = 0; i < formats.length; i++) {
formats[i] = Format.valueOf(split[i]);
}
return formats;
}
+
+ static Properties toProperties(final PluginCache pluginCache) {
+ final SortedProperties prop = new SortedProperties();
+ for (final Entry<String, Map<String, PluginEntry>> mainEntry : pluginCache.categories.entrySet()) {
+ for (final Entry<String, PluginEntry> entry : mainEntry.getValue().entrySet()) {
+ final String key = mainEntry.getKey() + "." + entry.getKey();
+ final PluginEntry pluginEntry = entry.getValue();
+ prop.put(key + ".key", pluginEntry.getKey().toString());
+ prop.put(key + ".classname", pluginEntry.getClassName().toString());
+ prop.put(key + ".name", pluginEntry.getName().toString());
+ prop.put(key + ".defer", "" + pluginEntry.isDefer());
+ prop.put(key + ".printable", "" + pluginEntry.isPrintable());
+ }
+ }
+ return prop;
+ }
}
-
- private final Map<String, Map<String, PluginEntry>> categories =
- new LinkedHashMap<>();
+
+ private final Map<String, Map<String, PluginEntry>> categories = new LinkedHashMap<>();
/**
* Returns all categories of plugins in this cache.
@@ -111,7 +192,8 @@ public class PluginCache {
/**
* Gets or creates a category of plugins.
*
- * @param category name of category to look up.
+ * @param category
+ * name of category to look up.
* @return plugin mapping of names to plugin entries.
*/
public Map<String, PluginEntry> getCategory(final String category) {
@@ -125,9 +207,12 @@ public class PluginCache {
/**
* Stores the plugin cache to a given OutputStream.
*
- * @param os destination to save cache to.
- * @throws IOException if an I/O exception occurs.
- * @deprecated Use {@link #writeCache(OutputStream, String)} or {@link Format#writeCache(PluginCache, OutputStream)}.
+ * @param os
+ * destination to save cache to.
+ * @throws IOException
+ * if an I/O exception occurs.
+ * @deprecated Use {@link #writeCache(OutputStream, String)} or
+ * {@link Format#writeCache(PluginCache, OutputStream)}.
*/
@Deprecated
// NOTE: if this file format is to be changed, the filename should change and this format should still be readable
@@ -138,16 +223,18 @@ public class PluginCache {
/**
* Stores the plugin cache to a given OutputStream.
*
- * @param os destination to save cache to.
- * @throws IOException if an I/O exception occurs.
+ * @param os
+ * destination to save cache to.
+ * @throws IOException
+ * if an I/O exception occurs.
*/
// NOTE: if this file format is to be changed, the filename should change and this format should still be readable
- public void writeCache(final OutputStream os, String formatsStr) throws IOException {
+ public void writeCache(final OutputStream os, final String formatsStr) throws IOException {
if (Strings.isBlank(formatsStr)) {
Format.DAT.writeCache(this, os);
return;
}
- for (String formatStr : formatsStr.split("\\s*,\\s*")) {
+ for (final String formatStr : formatsStr.split("\\s*,\\s*")) {
Format.valueOf(formatStr).writeCache(this, os);
}
}
@@ -155,8 +242,10 @@ public class PluginCache {
/**
* Loads and merges all the Log4j plugin cache files specified. Usually, this is obtained via a ClassLoader.
*
- * @param resources URLs to all the desired plugin cache files to load.
- * @throws IOException if an I/O exception occurs.
+ * @param resources
+ * URLs to all the desired plugin cache files to load.
+ * @throws IOException
+ * if an I/O exception occurs.
*/
public void loadCacheFiles(final Enumeration<URL> resources) throws IOException {
categories.clear();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/33ed792d/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCacheFormatTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCacheFormatTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCacheFormatTest.java
index 2a8fe01..b7b7541 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCacheFormatTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/processor/PluginCacheFormatTest.java
@@ -17,6 +17,8 @@
package org.apache.logging.log4j.core.config.plugins.processor;
+import java.io.IOException;
+
import org.apache.logging.log4j.core.config.plugins.processor.PluginCache.Format;
import org.junit.Assert;
import org.junit.Test;
@@ -27,4 +29,14 @@ public class PluginCacheFormatTest {
public void testParseFormats() {
Assert.assertArrayEquals(new Format[] { Format.DAT, Format.XML }, Format.parse("DAT,XML", Format.DAT));
}
+
+ @Test
+ public void testPropertiesXml() throws IOException {
+ Format.PROPERTIES_XML.writeCache(PluginProcessorTest.loadCacheFiles(), System.out);
+ }
+
+ @Test
+ public void testProperties() throws IOException {
+ Format.PROPERTIES.writeCache(PluginProcessorTest.loadCacheFiles(), System.out);
+ }
}