This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 2b8a5ac373eba0fc1a5920c7fa18677ef66633ac Author: Gary Gregory <[email protected]> AuthorDate: Thu Nov 12 18:03:45 2020 -0500 Use lambdas. --- .../builders/appender/AsyncAppenderBuilder.java | 2 +- .../builders/appender/ConsoleAppenderBuilder.java | 2 +- .../appender/DailyRollingFileAppenderBuilder.java | 2 +- .../builders/appender/FileAppenderBuilder.java | 2 +- .../builders/appender/RewriteAppenderBuilder.java | 2 +- .../appender/RollingFileAppenderBuilder.java | 2 +- .../builders/appender/SyslogAppenderBuilder.java | 2 +- .../builders/filter/LevelMatchFilterBuilder.java | 2 +- .../builders/filter/LevelRangeFilterBuilder.java | 2 +- .../builders/filter/StringMatchFilterBuilder.java | 2 +- .../log4j/builders/layout/HtmlLayoutBuilder.java | 2 +- .../log4j/builders/layout/TTCCLayoutBuilder.java | 2 +- .../log4j/builders/layout/XmlLayoutBuilder.java | 2 +- .../log4j/config/PropertiesConfiguration.java | 4 +- .../org/apache/log4j/layout/Log4j1XmlLayout.java | 19 ++++----- .../log4j/pattern/Log4j1MdcPatternConverter.java | 7 +--- .../org/apache/log4j/xml/XmlConfiguration.java | 14 +++---- .../apache/logging/log4j/core/ThreadedTest.java | 23 ++++------- .../core/appender/MemoryMappedFileManager.java | 17 ++++---- .../log4j/core/appender/mom/JmsManager.java | 16 +++----- .../core/appender/mom/kafka/KafkaManager.java | 27 +++++------- .../core/appender/nosql/NoSqlDatabaseManager.java | 15 +------ .../core/async/AsyncLoggerConfigDisruptor.java | 40 +++++------------- .../logging/log4j/core/async/DisruptorUtil.java | 8 +--- .../core/async/JCToolsBlockingQueueFactory.java | 45 ++++++-------------- .../logging/log4j/core/filter/RegexFilter.java | 8 +--- .../log4j/core/impl/JdkMapAdapterStringMap.java | 24 ++++------- .../log4j/core/impl/ThreadContextDataInjector.java | 2 +- .../log4j/core/jackson/ContextDataSerializer.java | 14 +++---- .../log4j/core/pattern/MdcPatternConverter.java | 11 ++--- .../logging/log4j/core/script/ScriptManager.java | 30 +++++--------- .../logging/log4j/core/util/CachedClock.java | 15 +++---- .../logging/log4j/core/util/ClockFactory.java | 12 +++--- .../log4j/core/util/datetime/FastDateParser.java | 7 +--- .../log4j/core/GarbageCollectionHelper.java | 27 ++++++------ .../logging/log4j/core/GcFreeLoggingTestUtil.java | 33 +++++++-------- .../jdbc/AbstractJdbcAppenderDataSourceTest.java | 9 +--- .../jdbc/JdbcAppenderMapMessageDataSourceTest.java | 9 +--- .../appender/mom/jeromq/JeroMqAppenderTest.java | 9 ++-- .../mom/kafka/KafkaAppenderCloseTimeoutTest.java | 9 +--- .../core/appender/mom/kafka/KafkaAppenderTest.java | 9 +--- .../appender/nosql/NoSqlDatabaseManagerTest.java | 16 +------- .../log4j/core/async/RingBufferLogEventTest.java | 8 +--- .../core/async/perftest/AbstractRunQueue.java | 17 ++++---- .../core/async/perftest/MultiThreadPerfTest.java | 15 +++---- .../core/impl/ThreadContextDataInjectorTest.java | 7 +--- .../ConcurrentLoggingWithJsonLayoutTest.java | 7 +--- .../appender/FlumePersistentAppenderTest.java | 17 ++++---- .../apache/logging/log4j/jmx/gui/ClientGui.java | 48 +++++++++------------- .../ContextDataJsonAttributeConverter.java | 9 +--- .../org/apache/logging/log4j/jul/ApiLogger.java | 9 ++-- .../layout/template/json/util/JsonWriterTest.java | 14 +------ .../logging/log4j/perf/jmh/ClocksBenchmark.java | 17 ++++---- .../perf/jmh/FileAppenderThrowableBenchmark.java | 21 ++++------ .../perf/jmh/SortedArrayVsHashMapBenchmark.java | 22 ++-------- .../logging/log4j/perf/jmh/StackWalkBenchmark.java | 22 ++++------ .../logging/log4j/perf/nogc/OpenHashStringMap.java | 33 +++++---------- .../logging/log4j/web/WebLoggerContextUtils.java | 17 ++++---- .../log4j/web/Log4jWebInitializerImplTest.java | 11 ++--- .../apache/logging/log4j/web/TestAsyncServlet.java | 24 ++++------- 60 files changed, 272 insertions(+), 551 deletions(-) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java index 92839f0..46a0b0c 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java @@ -70,7 +70,7 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui Holder<Boolean> includeLocation = new BooleanHolder(); Holder<String> level = new Holder<>("trace"); Holder<Integer> bufferSize = new Holder<>(1024); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case APPENDER_REF_TAG: Appender appender = config.findAppenderByReference(currentElement); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java index 83f417d..cd2328a 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java @@ -71,7 +71,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB Holder<Layout> layout = new Holder<>(); Holder<List<Filter>> filters = new Holder<>(new ArrayList<>()); Holder<String> level = new Holder<>(); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case LAYOUT_TAG: layout.set(config.parseLayout(currentElement)); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java index 9f8db90..9115f29 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java @@ -77,7 +77,7 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements Holder<Boolean> append = new BooleanHolder(); Holder<Boolean> bufferedIo = new BooleanHolder(); Holder<Integer> bufferSize = new Holder<>(8192); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case LAYOUT_TAG: layout.set(config.parseLayout(currentElement)); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java index 41d3820..e3be66d 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java @@ -71,7 +71,7 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil Holder<Boolean> append = new BooleanHolder(); Holder<Boolean> bufferedIo = new BooleanHolder(); Holder<Integer> bufferSize = new Holder<>(8192); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case LAYOUT_TAG: layout.set(config.parseLayout(currentElement)); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java index f6526ee..b06973c 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java @@ -72,7 +72,7 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB Holder<RewritePolicy> rewritePolicyHolder = new Holder<>(); Holder<String> level = new Holder<>(); Holder<Filter> filter = new Holder<>(); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case APPENDER_REF_TAG: Appender appender = config.findAppenderByReference(currentElement); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java index 04b7e7f..6f04f88 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java @@ -80,7 +80,7 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen Holder<String> maxSize = new Holder<>(); Holder<String> maxBackups = new Holder<>(); Holder<String> level = new Holder<>(); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case LAYOUT_TAG: layout.set(config.parseLayout(currentElement)); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java index d449cac..2f353ac 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java @@ -73,7 +73,7 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu Holder<String> facility = new Holder<>(); Holder<String> level = new Holder<>(); Holder<String> host = new Holder<>(); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case LAYOUT_TAG: layout.set(config.parseLayout(currentElement)); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java index d7f85bb..f377a77 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java @@ -57,7 +57,7 @@ public class LevelMatchFilterBuilder extends AbstractBuilder implements FilterBu public Filter parseFilter(Element filterElement, XmlConfiguration config) { final Holder<String> level = new Holder<>(); final Holder<Boolean> acceptOnMatch = new BooleanHolder(); - forEachElement(filterElement.getElementsByTagName("param"), (currentElement) -> { + forEachElement(filterElement.getElementsByTagName("param"), currentElement -> { if (currentElement.getTagName().equals("param")) { switch (currentElement.getAttribute(NAME_ATTR)) { case LEVEL: diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java index 43ce0ec..5033089 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java @@ -59,7 +59,7 @@ public class LevelRangeFilterBuilder extends AbstractBuilder implements FilterBu final Holder<String> levelMax = new Holder<>(); final Holder<String> levelMin = new Holder<>(); final Holder<Boolean> acceptOnMatch = new BooleanHolder(); - forEachElement(filterElement.getElementsByTagName("param"), (currentElement) -> { + forEachElement(filterElement.getElementsByTagName("param"), currentElement -> { if (currentElement.getTagName().equals("param")) { switch (currentElement.getAttribute(NAME_ATTR)) { case LEVEL_MAX: diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java index 877acbe..781c9e4 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java @@ -46,7 +46,7 @@ public class StringMatchFilterBuilder extends AbstractBuilder implements FilterB public Filter parseFilter(Element filterElement, XmlConfiguration config) { final Holder<Boolean> acceptOnMatch = new BooleanHolder(); final Holder<String> text = new Holder<>(); - forEachElement(filterElement.getElementsByTagName("param"), (currentElement) -> { + forEachElement(filterElement.getElementsByTagName("param"), currentElement -> { if (currentElement.getTagName().equals("param")) { switch (currentElement.getAttribute(NAME_ATTR)) { case STRING_TO_MATCH: diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java index 5f70a7b..7141dec 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java @@ -57,7 +57,7 @@ public class HtmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder public Layout parseLayout(Element layoutElement, XmlConfiguration config) { final Holder<String> title = new Holder<>(); final Holder<Boolean> locationInfo = new BooleanHolder(); - forEachElement(layoutElement.getElementsByTagName("param"), (currentElement) -> { + forEachElement(layoutElement.getElementsByTagName("param"), currentElement -> { if (currentElement.getTagName().equals(PARAM_TAG)) { if (TITLE.equalsIgnoreCase(currentElement.getAttribute("name"))) { title.set(currentElement.getAttribute("value")); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java index 583f8b7..e09a09a 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java @@ -63,7 +63,7 @@ public class TTCCLayoutBuilder extends AbstractBuilder implements LayoutBuilder final Holder<Boolean> contextPrinting = new BooleanHolder(); final Holder<String> dateFormat = new Holder<>(); final Holder<String> timezone = new Holder<>(); - forEachElement(layoutElement.getElementsByTagName("param"), (currentElement) -> { + forEachElement(layoutElement.getElementsByTagName("param"), currentElement -> { if (currentElement.getTagName().equals(PARAM_TAG)) { switch (currentElement.getAttribute(NAME_ATTR)) { case THREAD_PRINTING_PARAM: diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java index 89d2dca..5c13875 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java @@ -58,7 +58,7 @@ public class XmlLayoutBuilder extends AbstractBuilder implements LayoutBuilder { public Layout parseLayout(Element layoutElement, XmlConfiguration config) { final Holder<Boolean> properties = new BooleanHolder(); final Holder<Boolean> locationInfo = new BooleanHolder(); - forEachElement(layoutElement.getElementsByTagName(PARAM_TAG), (currentElement) -> { + forEachElement(layoutElement.getElementsByTagName(PARAM_TAG), currentElement -> { if (PROPERTIES.equalsIgnoreCase(currentElement.getAttribute("name"))) { properties.set(Boolean.parseBoolean(currentElement.getAttribute("value"))); } else if (LOCATION_INFO.equalsIgnoreCase(currentElement.getAttribute("name"))) { diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java index dd72c9b..fd5a749 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java @@ -485,7 +485,7 @@ public class PropertiesConfiguration extends Log4j1Configuration { public void addProperties(final Object obj, final String[] keys, final Properties props, final String prefix) { final Properties edited = new Properties(); - props.stringPropertyNames().stream().filter((name) -> { + props.stringPropertyNames().stream().filter(name -> { if (name.startsWith(prefix)) { for (String key : keys) { if (name.equals(key)) { @@ -495,7 +495,7 @@ public class PropertiesConfiguration extends Log4j1Configuration { return true; } return false; - }).forEach((name) -> edited.put(name, props.getProperty(name))); + }).forEach(name -> edited.put(name, props.getProperty(name))); PropertySetter.setProperties(obj, edited, prefix + "."); } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java index 9522b9e..ecdd0b5 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/layout/Log4j1XmlLayout.java @@ -20,6 +20,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Objects; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.LogEvent; @@ -30,7 +31,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory; import org.apache.logging.log4j.core.layout.AbstractStringLayout; import org.apache.logging.log4j.core.layout.ByteBufferDestination; import org.apache.logging.log4j.core.util.Transform; -import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.util.Strings; @@ -137,16 +137,13 @@ public final class Log4j1XmlLayout extends AbstractStringLayout { final ReadOnlyStringMap contextMap = event.getContextData(); if (!contextMap.isEmpty()) { buf.append("<log4j:properties>\r\n"); - contextMap.forEach(new BiConsumer<String, String>() { - @Override - public void accept(final String key, final String val) { - if (val != null) { - buf.append("<log4j:data name=\""); - buf.append(Transform.escapeHtmlTags(key)); - buf.append("\" value=\""); - buf.append(Transform.escapeHtmlTags(val)); - buf.append("\"/>\r\n"); - } + contextMap.forEach((key, val) -> { + if (val != null) { + buf.append("<log4j:data name=\""); + buf.append(Transform.escapeHtmlTags(key)); + buf.append("\" value=\""); + buf.append(Transform.escapeHtmlTags(Objects.toString(val, null))); + buf.append("\"/>\r\n"); } }); buf.append("</log4j:properties>\r\n"); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/pattern/Log4j1MdcPatternConverter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/pattern/Log4j1MdcPatternConverter.java index b4ae0c5..a70c28d 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/pattern/Log4j1MdcPatternConverter.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/pattern/Log4j1MdcPatternConverter.java @@ -79,10 +79,5 @@ public final class Log4j1MdcPatternConverter extends LogEventPatternConverter { } } - private static TriConsumer<String, Object, StringBuilder> APPEND_EACH = new TriConsumer<String, Object, StringBuilder>() { - @Override - public void accept(final String key, final Object value, final StringBuilder toAppendTo) { - toAppendTo.append('{').append(key).append(',').append(value).append('}'); - } - }; + private static TriConsumer<String, Object, StringBuilder> APPEND_EACH = (key, value, toAppendTo) -> toAppendTo.append('{').append(key).append(',').append(value).append('}'); } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java index d95e185..cbf1551 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java @@ -353,7 +353,7 @@ public class XmlConfiguration extends Log4j1Configuration { PropertySetter propSetter = new PropertySetter(appender); appender.setName(subst(appenderElement.getAttribute(NAME_ATTR))); - forEachElement(appenderElement.getChildNodes(), (currentElement) -> { + forEachElement(appenderElement.getChildNodes(), currentElement -> { // Parse appender parameters switch (currentElement.getTagName()) { case PARAM_TAG: @@ -427,7 +427,7 @@ public class XmlConfiguration extends Log4j1Configuration { RewritePolicy policy = LoaderUtil.newInstanceOf(className); PropertySetter propSetter = new PropertySetter(policy); - forEachElement(element.getChildNodes(), (currentElement) -> { + forEachElement(element.getChildNodes(), currentElement -> { if (currentElement.getTagName().equalsIgnoreCase(PARAM_TAG)) { setParameter(currentElement, propSetter); } @@ -462,7 +462,7 @@ public class XmlConfiguration extends Log4j1Configuration { eh.setAppender(appender); PropertySetter propSetter = new PropertySetter(eh); - forEachElement(element.getChildNodes(), (currentElement) -> { + forEachElement(element.getChildNodes(), currentElement -> { String tagName = currentElement.getTagName(); if (tagName.equals(PARAM_TAG)) { setParameter(currentElement, propSetter); @@ -482,7 +482,7 @@ public class XmlConfiguration extends Log4j1Configuration { Filter filter = manager.parseFilter(className, filterElement, this); if (filter == null) { PropertySetter propSetter = new PropertySetter(filter); - forEachElement(filterElement.getChildNodes(), (currentElement) -> { + forEachElement(filterElement.getChildNodes(), currentElement -> { String tagName = currentElement.getTagName(); if (tagName.equals(PARAM_TAG)) { setParameter(currentElement, propSetter); @@ -527,7 +527,7 @@ public class XmlConfiguration extends Log4j1Configuration { final PropertySetter propSetter = new PropertySetter(loggerConfig); loggerConfig.getAppenderRefs().clear(); - forEachElement(catElement.getChildNodes(), (currentElement) -> { + forEachElement(catElement.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case APPENDER_REF_TAG: { Appender appender = findAppenderByReference(currentElement); @@ -574,7 +574,7 @@ public class XmlConfiguration extends Log4j1Configuration { try { Layout layout = LoaderUtil.newInstanceOf(className); PropertySetter propSetter = new PropertySetter(layout); - forEachElement(layout_element.getChildNodes(), (currentElement) -> { + forEachElement(layout_element.getChildNodes(), currentElement -> { String tagName = currentElement.getTagName(); if (tagName.equals(PARAM_TAG)) { setParameter(currentElement, propSetter); @@ -696,7 +696,7 @@ public class XmlConfiguration extends Log4j1Configuration { final StatusConfiguration statusConfig = new StatusConfiguration().withStatus(status); statusConfig.initialize(); - forEachElement(element.getChildNodes(), (currentElement) -> { + forEachElement(element.getChildNodes(), currentElement -> { switch (currentElement.getTagName()) { case CATEGORY: case LOGGER_ELEMENT: parseCategory(currentElement); diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/ThreadedTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/ThreadedTest.java index 3df298a..9038209 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/ThreadedTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/ThreadedTest.java @@ -29,8 +29,6 @@ import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.RuleChain; -import org.junit.rules.TestRule; -import org.junit.runner.Description; import org.junit.runners.model.Statement; /** @@ -50,20 +48,15 @@ public class ThreadedTest { // this would look pretty sweet with lambdas @ClassRule - public static RuleChain chain = RuleChain.outerRule(new TestRule() { + public static RuleChain chain = RuleChain.outerRule((base, description) -> new Statement() { @Override - public Statement apply(final Statement base, final Description description) { - return new Statement() { - @Override - public void evaluate() throws Throwable { - deleteDir(); - try { - base.evaluate(); - } finally { - deleteDir(); - } - } - }; + public void evaluate() throws Throwable { + deleteDir(); + try { + base.evaluate(); + } finally { + deleteDir(); + } } }).around(context); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java index 7d5fd8d..d8d9ced 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java @@ -213,16 +213,13 @@ public class MemoryMappedFileManager extends OutputStreamManager { private static void unsafeUnmap(final MappedByteBuffer mbb) throws PrivilegedActionException { LOGGER.debug("MMapAppender unmapping old buffer..."); final long startNanos = System.nanoTime(); - AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() { - @Override - public Object run() throws Exception { - final Method getCleanerMethod = mbb.getClass().getMethod("cleaner"); - getCleanerMethod.setAccessible(true); - final Object cleaner = getCleanerMethod.invoke(mbb); // sun.misc.Cleaner instance - final Method cleanMethod = cleaner.getClass().getMethod("clean"); - cleanMethod.invoke(cleaner); - return null; - } + AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () -> { + final Method getCleanerMethod = mbb.getClass().getMethod("cleaner"); + getCleanerMethod.setAccessible(true); + final Object cleaner = getCleanerMethod.invoke(mbb); // sun.misc.Cleaner instance + final Method cleanMethod = cleaner.getClass().getMethod("clean"); + cleanMethod.invoke(cleaner); + return null; }); final float millis = (float) ((System.nanoTime() - startNanos) / NANOS_PER_MILLISEC); LOGGER.debug("MMapAppender unmapped buffer OK in {} millis", millis); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java index 959f468..5625923 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java @@ -40,7 +40,6 @@ import org.apache.logging.log4j.core.appender.ManagerFactory; import org.apache.logging.log4j.core.net.JndiManager; import org.apache.logging.log4j.core.util.Log4jThread; import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.util.BiConsumer; /** * Consider this class <b>private</b>; it is only <b>public</b> for access by integration tests. @@ -417,15 +416,12 @@ public class JmsManager extends AbstractManager { private MapMessage map(final org.apache.logging.log4j.message.MapMessage<?, ?> log4jMapMessage, final MapMessage jmsMapMessage) { // Map without calling org.apache.logging.log4j.message.MapMessage#getData() which makes a copy of the map. - log4jMapMessage.forEach(new BiConsumer<String, Object>() { - @Override - public void accept(final String key, final Object value) { - try { - jmsMapMessage.setObject(key, value); - } catch (final JMSException e) { - throw new IllegalArgumentException(String.format("%s mapping key '%s' to value '%s': %s", - e.getClass(), key, value, e.getLocalizedMessage()), e); - } + log4jMapMessage.forEach((key, value) -> { + try { + jmsMapMessage.setObject(key, value); + } catch (final JMSException e) { + throw new IllegalArgumentException(String.format("%s mapping key '%s' to value '%s': %s", + e.getClass(), key, value, e.getLocalizedMessage()), e); } }); return jmsMapMessage; diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java index 394cef0..547b061 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaManager.java @@ -25,7 +25,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.apache.kafka.clients.producer.Callback; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.clients.producer.RecordMetadata; @@ -90,14 +89,11 @@ public class KafkaManager extends AbstractManager { if (producer != null) { // This thread is a workaround for this Kafka issue: // https://issues.apache.org/jira/browse/KAFKA-1660 - final Thread closeThread = new Log4jThread(new Runnable() { - @Override - public void run() { - if (producer != null) { - producer.close(); - } - } - }, "KafkaManager-CloseThread"); + final Thread closeThread = new Log4jThread(() -> { + if (producer != null) { + producer.close(); + } + }, "KafkaManager-CloseThread"); closeThread.setDaemon(true); // avoid blocking JVM shutdown closeThread.start(); try { @@ -125,14 +121,11 @@ public class KafkaManager extends AbstractManager { final Future<RecordMetadata> response = producer.send(newRecord); response.get(timeoutMillis, TimeUnit.MILLISECONDS); } else { - producer.send(newRecord, new Callback() { - @Override - public void onCompletion(final RecordMetadata metadata, final Exception e) { - if (e != null) { - LOGGER.error("Unable to write to Kafka in appender [" + getName() + "]", e); - } - } - }); + producer.send(newRecord, (metadata, e) -> { + if (e != null) { + LOGGER.error("Unable to write to Kafka in appender [" + getName() + "]", e); + } + }); } } } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java index 14322e3..b270ef1 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java @@ -26,7 +26,6 @@ import org.apache.logging.log4j.core.appender.ManagerFactory; import org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager; import org.apache.logging.log4j.core.util.Closer; import org.apache.logging.log4j.message.MapMessage; -import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.ReadOnlyStringMap; /** @@ -86,12 +85,7 @@ public final class NoSqlDatabaseManager<W> extends AbstractDatabaseManager { private void setFields(final MapMessage<?, ?> mapMessage, final NoSqlObject<W> noSqlObject) { // Map without calling org.apache.logging.log4j.message.MapMessage#getData() which makes a copy of the map. - mapMessage.forEach(new BiConsumer<String, Object>() { - @Override - public void accept(final String key, final Object value) { - noSqlObject.set(key, value); - } - }); + mapMessage.forEach((key, value) -> noSqlObject.set(key, value)); } private void setFields(final LogEvent event, final NoSqlObject<W> entity) { @@ -147,12 +141,7 @@ public final class NoSqlDatabaseManager<W> extends AbstractDatabaseManager { entity.set("contextMap", (Object) null); } else { final NoSqlObject<W> contextMapEntity = this.connection.createObject(); - contextMap.forEach(new BiConsumer<String, String>() { - @Override - public void accept(final String key, final String val) { - contextMapEntity.set(key, val); - } - }); + contextMap.forEach((key, val) -> contextMapEntity.set(key, val)); entity.set("contextMap", contextMapEntity); } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java index 252cd28..88e93e6 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor.java @@ -131,51 +131,31 @@ public class AsyncLoggerConfigDisruptor extends AbstractLifeCycle implements Asy * Factory used to populate the RingBuffer with events. These event objects are then re-used during the life of the * RingBuffer. */ - private static final EventFactory<Log4jEventWrapper> FACTORY = new EventFactory<Log4jEventWrapper>() { - @Override - public Log4jEventWrapper newInstance() { - return new Log4jEventWrapper(); - } - }; + private static final EventFactory<Log4jEventWrapper> FACTORY = Log4jEventWrapper::new; /** * Factory used to populate the RingBuffer with events. These event objects are then re-used during the life of the * RingBuffer. */ - private static final EventFactory<Log4jEventWrapper> MUTABLE_FACTORY = new EventFactory<Log4jEventWrapper>() { - @Override - public Log4jEventWrapper newInstance() { - return new Log4jEventWrapper(new MutableLogEvent()); - } - }; + private static final EventFactory<Log4jEventWrapper> MUTABLE_FACTORY = () -> new Log4jEventWrapper(new MutableLogEvent()); /** * Object responsible for passing on data to a specific RingBuffer event. */ private static final EventTranslatorTwoArg<Log4jEventWrapper, LogEvent, AsyncLoggerConfig> TRANSLATOR = - new EventTranslatorTwoArg<Log4jEventWrapper, LogEvent, AsyncLoggerConfig>() { - - @Override - public void translateTo(final Log4jEventWrapper ringBufferElement, final long sequence, - final LogEvent logEvent, final AsyncLoggerConfig loggerConfig) { - ringBufferElement.event = logEvent; - ringBufferElement.loggerConfig = loggerConfig; - } - }; + (ringBufferElement, sequence, logEvent, loggerConfig) -> { + ringBufferElement.event = logEvent; + ringBufferElement.loggerConfig = loggerConfig; + }; /** * Object responsible for passing on data to a RingBuffer event with a MutableLogEvent. */ private static final EventTranslatorTwoArg<Log4jEventWrapper, LogEvent, AsyncLoggerConfig> MUTABLE_TRANSLATOR = - new EventTranslatorTwoArg<Log4jEventWrapper, LogEvent, AsyncLoggerConfig>() { - - @Override - public void translateTo(final Log4jEventWrapper ringBufferElement, final long sequence, - final LogEvent logEvent, final AsyncLoggerConfig loggerConfig) { - ((MutableLogEvent) ringBufferElement.event).initFrom(logEvent); - ringBufferElement.loggerConfig = loggerConfig; - } - }; + (ringBufferElement, sequence, logEvent, loggerConfig) -> { + ((MutableLogEvent) ringBufferElement.event).initFrom(logEvent); + ringBufferElement.loggerConfig = loggerConfig; + }; private int ringBufferSize; private AsyncQueueFullPolicy asyncQueueFullPolicy; diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java index 5925187..e344005 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java @@ -17,7 +17,6 @@ package org.apache.logging.log4j.core.async; -import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -160,12 +159,7 @@ final class DisruptorUtil { * @return the thread ID of the background appender thread */ public static long getExecutorThreadId(final ExecutorService executor) { - final Future<Long> result = executor.submit(new Callable<Long>() { - @Override - public Long call() { - return Thread.currentThread().getId(); - } - }); + final Future<Long> result = executor.submit(() -> Thread.currentThread().getId()); try { return result.get(); } catch (final Exception ex) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/JCToolsBlockingQueueFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/JCToolsBlockingQueueFactory.java index facc59e..6a203ca 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/JCToolsBlockingQueueFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/JCToolsBlockingQueueFactory.java @@ -71,12 +71,7 @@ public class JCToolsBlockingQueueFactory<E> implements BlockingQueueFactory<E> { @Override public int drainTo(final Collection<? super E> c, final int maxElements) { - return drain(new Consumer<E>() { - @Override - public void accept(final E e) { - c.add(e); - } - }, maxElements); + return drain(e -> c.add(e), maxElements); } @Override @@ -148,36 +143,22 @@ public class JCToolsBlockingQueueFactory<E> implements BlockingQueueFactory<E> { } public enum WaitStrategy { - SPIN(new Idle() { - @Override - public int idle(final int idleCounter) { - return idleCounter + 1; - } + SPIN(idleCounter -> idleCounter + 1), + YIELD(idleCounter -> { + Thread.yield(); + return idleCounter + 1; }), - YIELD(new Idle() { - @Override - public int idle(final int idleCounter) { - Thread.yield(); - return idleCounter + 1; - } + PARK(idleCounter -> { + LockSupport.parkNanos(1L); + return idleCounter + 1; }), - PARK(new Idle() { - @Override - public int idle(final int idleCounter) { + PROGRESSIVE(idleCounter -> { + if (idleCounter > 200) { LockSupport.parkNanos(1L); - return idleCounter + 1; - } - }), - PROGRESSIVE(new Idle() { - @Override - public int idle(final int idleCounter) { - if (idleCounter > 200) { - LockSupport.parkNanos(1L); - } else if (idleCounter > 100) { - Thread.yield(); - } - return idleCounter + 1; + } else if (idleCounter > 100) { + Thread.yield(); } + return idleCounter + 1; }); private final Idle idle; diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java index 488b772..eafaef1 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java @@ -142,13 +142,7 @@ public final class RegexFilter extends AbstractFilter { return DEFAULT_PATTERN_FLAGS; } final Field[] fields = Pattern.class.getDeclaredFields(); - final Comparator<Field> comparator = new Comparator<Field>() { - - @Override - public int compare(final Field f1, final Field f2) { - return f1.getName().compareTo(f2.getName()); - } - }; + final Comparator<Field> comparator = (f1, f2) -> f1.getName().compareTo(f2.getName()); Arrays.sort(fields, comparator); final String[] fieldNames = new String[fields.length]; for (int i = 0; i < fields.length; i++) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java index e86e4d6..b45ba19 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java @@ -33,17 +33,14 @@ import org.apache.logging.log4j.util.TriConsumer; public class JdkMapAdapterStringMap implements StringMap { private static final long serialVersionUID = -7348247784983193612L; private static final String FROZEN = "Frozen collection cannot be modified"; - private static final Comparator<? super String> NULL_FIRST_COMPARATOR = new Comparator<String>() { - @Override - public int compare(final String left, final String right) { - if (left == null) { - return -1; - } - if (right == null) { - return 1; - } - return left.compareTo(right); + private static final Comparator<? super String> NULL_FIRST_COMPARATOR = (left, right) -> { + if (left == null) { + return -1; + } + if (right == null) { + return 1; } + return left.compareTo(right); }; private final Map<String, String> map; @@ -143,12 +140,7 @@ public class JdkMapAdapterStringMap implements StringMap { sortedKeys = null; } - private static TriConsumer<String, String, Map<String, String>> PUT_ALL = new TriConsumer<String, String, Map<String, String>>() { - @Override - public void accept(final String key, final String value, final Map<String, String> stringStringMap) { - stringStringMap.put(key, value); - } - }; + private static TriConsumer<String, String, Map<String, String>> PUT_ALL = (key, value, stringStringMap) -> stringStringMap.put(key, value); @Override public void putValue(final String key, final Object value) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java index 89623cd..fe0936c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java @@ -83,7 +83,7 @@ public class ThreadContextDataInjector { for (final ClassLoader classLoader : LoaderUtil.getClassLoaders()) { try { for (final ContextDataProvider provider : ServiceLoader.load(ContextDataProvider.class, classLoader)) { - if (providers.stream().noneMatch((p) -> p.getClass().isAssignableFrom(provider.getClass()))) { + if (providers.stream().noneMatch(p -> p.getClass().isAssignableFrom(provider.getClass()))) { providers.add(provider); } } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java index 8808d3d..7ac40f0 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java @@ -50,15 +50,11 @@ public class ContextDataSerializer extends StdSerializer<ReadOnlyStringMap> { } private static final TriConsumer<String, Object, JsonGenerator> WRITE_STRING_FIELD_INTO = - new TriConsumer<String, Object, JsonGenerator>() { - - @Override - public void accept(final String key, final Object value, final JsonGenerator jsonGenerator) { - try { - jsonGenerator.writeStringField(key, String.valueOf(value)); - } catch (final Exception ex) { - throw new IllegalStateException("Problem with key " + key, ex); - } + (key, value, jsonGenerator) -> { + try { + jsonGenerator.writeStringField(key, String.valueOf(value)); + } catch (final Exception ex) { + throw new IllegalStateException("Problem with key " + key, ex); } }; } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java index b39c15e..95cb512 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java @@ -78,13 +78,10 @@ public final class MdcPatternConverter extends LogEventPatternConverter { return new MdcPatternConverter(options); } - private static final TriConsumer<String, Object, StringBuilder> WRITE_KEY_VALUES_INTO = new TriConsumer<String, Object, StringBuilder>() { - @Override - public void accept(final String key, final Object value, final StringBuilder sb) { - sb.append(key).append('='); - StringBuilders.appendValue(sb, value); - sb.append(", "); - } + private static final TriConsumer<String, Object, StringBuilder> WRITE_KEY_VALUES_INTO = (key, value, sb) -> { + sb.append(key).append('='); + StringBuilders.appendValue(sb, value); + sb.append(", "); }; /** diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java index a167aa4..f9790af 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java @@ -171,12 +171,7 @@ public class ScriptManager implements FileWatcher, Serializable { logger.warn("No script named {} could be found"); return null; } - return AccessController.doPrivileged(new PrivilegedAction<Object>() { - @Override - public Object run() { - return scriptRunner.execute(bindings); - } - }); + return AccessController.doPrivileged((PrivilegedAction<Object>) () -> scriptRunner.execute(bindings)); } private interface ScriptRunner { @@ -201,19 +196,16 @@ public class ScriptManager implements FileWatcher, Serializable { CompiledScript compiled = null; if (scriptEngine instanceof Compilable) { logger.debug("Script {} is compilable", script.getName()); - compiled = AccessController.doPrivileged(new PrivilegedAction<CompiledScript>() { - @Override - public CompiledScript run() { - try { - return ((Compilable) scriptEngine).compile(script.getScriptText()); - } catch (final Throwable ex) { - /* - * ScriptException is what really should be caught here. However, beanshell's ScriptEngine - * implements Compilable but then throws Error when the compile method is called! - */ - logger.warn("Error compiling script", ex); - return null; - } + compiled = AccessController.doPrivileged((PrivilegedAction<CompiledScript>) () -> { + try { + return ((Compilable) scriptEngine).compile(script.getScriptText()); + } catch (final Throwable ex) { + /* + * ScriptException is what really should be caught here. However, beanshell's ScriptEngine + * implements Compilable but then throws Error when the compile method is called! + */ + logger.warn("Error compiling script", ex); + return null; } }); } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java index f6d51ab..132ea70 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CachedClock.java @@ -34,16 +34,13 @@ public final class CachedClock implements Clock { private short count = 0; private CachedClock() { - final Thread updater = new Log4jThread(new Runnable() { - @Override - public void run() { - while (true) { - final long time = System.currentTimeMillis(); - millis = time; + final Thread updater = new Log4jThread(() -> { + while (true) { + final long time = System.currentTimeMillis(); + millis = time; - // avoid explicit dependency on sun.misc.Util - LockSupport.parkNanos(1000 * 1000); - } + // avoid explicit dependency on sun.misc.Util + LockSupport.parkNanos(1000 * 1000); } }, "CachedClock Updater Thread"); updater.setDaemon(true); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ClockFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ClockFactory.java index 01a448a..d43e713 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ClockFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ClockFactory.java @@ -69,12 +69,12 @@ public final class ClockFactory { private static Map<String, Supplier<Clock>> aliases() { final Map<String, Supplier<Clock>> result = new HashMap<>(); - result.put("SystemClock", new Supplier<Clock>() { @Override public Clock get() { return new SystemClock(); } }); - result.put("SystemMillisClock", new Supplier<Clock>() { @Override public Clock get() { return new SystemMillisClock(); } }); - result.put("CachedClock", new Supplier<Clock>() { @Override public Clock get() { return CachedClock.instance(); } }); - result.put("CoarseCachedClock", new Supplier<Clock>() { @Override public Clock get() { return CoarseCachedClock.instance(); } }); - result.put("org.apache.logging.log4j.core.util.CachedClock", new Supplier<Clock>() { @Override public Clock get() { return CachedClock.instance(); } }); - result.put("org.apache.logging.log4j.core.util.CoarseCachedClock", new Supplier<Clock>() { @Override public Clock get() { return CoarseCachedClock.instance(); } }); + result.put("SystemClock", SystemClock::new); + result.put("SystemMillisClock", SystemMillisClock::new); + result.put("CachedClock", CachedClock::instance); + result.put("CoarseCachedClock", CoarseCachedClock::instance); + result.put("org.apache.logging.log4j.core.util.CachedClock", CachedClock::instance); + result.put("org.apache.logging.log4j.core.util.CoarseCachedClock", CoarseCachedClock::instance); return result; } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java index 05ea9fd..6dcd9a7 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDateParser.java @@ -98,12 +98,7 @@ public class FastDateParser implements DateParser, Serializable { // comparator used to sort regex alternatives // alternatives should be ordered longer first, and shorter last. ('february' before 'feb') // all entries must be lowercase by locale. - private static final Comparator<String> LONGER_FIRST_LOWERCASE = new Comparator<String>() { - @Override - public int compare(final String left, final String right) { - return right.compareTo(left); - } - }; + private static final Comparator<String> LONGER_FIRST_LOWERCASE = (left, right) -> right.compareTo(left); /** * <p>Constructs a new FastDateParser.</p> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java index 3f67362..33ac01e 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java @@ -31,23 +31,20 @@ public final class GarbageCollectionHelper implements Closeable, Runnable { private static final OutputStream sink = ByteStreams.nullOutputStream(); private final AtomicBoolean running = new AtomicBoolean(); private final CountDownLatch latch = new CountDownLatch(1); - private final Thread gcThread = new Thread(new Runnable() { - @Override - public void run() { - try { - while (running.get()) { - // Allocate data to help suggest a GC - try { - // 1mb of heap - sink.write(new byte[1024 * 1024]); - } catch (final IOException ignored) { - } - // May no-op depending on the JVM configuration - System.gc(); + private final Thread gcThread = new Thread(() -> { + try { + while (running.get()) { + // Allocate data to help suggest a GC + try { + // 1mb of heap + sink.write(new byte[1024 * 1024]); + } catch (final IOException ignored) { } - } finally { - latch.countDown(); + // May no-op depending on the JVM configuration + System.gc(); } + } finally { + latch.countDown(); } }); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/GcFreeLoggingTestUtil.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/GcFreeLoggingTestUtil.java index 72d49e1..f505fdb 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/GcFreeLoggingTestUtil.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/GcFreeLoggingTestUtil.java @@ -81,26 +81,23 @@ public enum GcFreeLoggingTestUtil {; "com/google/monitoring/runtime/instrumentation/Sampler", // }; final AtomicBoolean samplingEnabled = new AtomicBoolean(true); - final Sampler sampler = new Sampler() { - @Override - public void sampleAllocation(final int count, final String desc, final Object newObj, final long size) { - if (!samplingEnabled.get()) { - return; - } - for (int i = 0; i < exclude.length; i++) { - if (exclude[i].equals(desc)) { - return; // exclude - } - } - System.err.println("I just allocated the object " + newObj + - " of type " + desc + " whose size is " + size); - if (count != -1) { - System.err.println("It's an array of size " + count); + final Sampler sampler = (count, desc, newObj, size) -> { + if (!samplingEnabled.get()) { + return; + } + for (int i = 0; i < exclude.length; i++) { + if (exclude[i].equals(desc)) { + return; // exclude } - - // show a stack trace to see which line caused allocation - new RuntimeException().printStackTrace(); } + System.err.println("I just allocated the object " + newObj + + " of type " + desc + " whose size is " + size); + if (count != -1) { + System.err.println("It's an array of size " + count); + } + + // show a stack trace to see which line caused allocation + new RuntimeException().printStackTrace(); }; Thread.sleep(500); final StringMapMessage mapMessage = new StringMapMessage().with("eventId", "Login"); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderDataSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderDataSourceTest.java index 732c2f7..c4a7312 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderDataSourceTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderDataSourceTest.java @@ -34,8 +34,6 @@ import org.h2.util.IOUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.RuleChain; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import static org.junit.Assert.*; import static org.mockito.BDDMockito.given; @@ -62,12 +60,7 @@ public abstract class AbstractJdbcAppenderDataSourceTest { private DataSource createMockDataSource() { try { final DataSource dataSource = mock(DataSource.class); - given(dataSource.getConnection()).willAnswer(new Answer<Connection>() { - @Override - public Connection answer(final InvocationOnMock invocation) throws Throwable { - return jdbcRule.getConnectionSource().getConnection(); - } - }); + given(dataSource.getConnection()).willAnswer(invocation -> jdbcRule.getConnectionSource().getConnection()); return dataSource; } catch (final SQLException e) { Throwables.rethrow(e); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java index 5cae9af..bee9786 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppenderMapMessageDataSourceTest.java @@ -42,8 +42,6 @@ import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.RuleChain; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; /** * Unit tests {@link MapMessage}s for JdbcAppender using a {@link DataSource} configuration. @@ -75,12 +73,7 @@ public class JdbcAppenderMapMessageDataSourceTest { private DataSource createMockDataSource() { try { final DataSource dataSource = mock(DataSource.class); - given(dataSource.getConnection()).willAnswer(new Answer<Connection>() { - @Override - public Connection answer(final InvocationOnMock invocation) throws Throwable { - return jdbcRule.getConnectionSource().getConnection(); - } - }); + given(dataSource.getConnection()).willAnswer(invocation -> jdbcRule.getConnectionSource().getConnection()); return dataSource; } catch (final SQLException e) { Throwables.rethrow(e); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java index b639b4d..3775aa5 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/jeromq/JeroMqAppenderTest.java @@ -93,12 +93,9 @@ public class JeroMqAppenderTest { appender.resetSendRcs(); final ExecutorService fixedThreadPool = Executors.newFixedThreadPool(nThreads); for (int i = 0; i < 10.; i++) { - fixedThreadPool.submit(new Runnable() { - @Override - public void run() { - logger.info("Hello"); - logger.info("Again"); - } + fixedThreadPool.submit(() -> { + logger.info("Hello"); + logger.info("Again"); }); } final List<String> list = future.get(); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java index aaa5441..424249c 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java @@ -17,11 +17,9 @@ package org.apache.logging.log4j.core.appender.mom.kafka; -import java.util.Properties; import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.producer.MockProducer; -import org.apache.kafka.clients.producer.Producer; import org.apache.logging.log4j.categories.Appenders; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.junit.LoggerContextRule; @@ -54,12 +52,7 @@ public class KafkaAppenderCloseTimeoutTest { @BeforeClass public static void setUpClass() throws Exception { - KafkaManager.producerFactory = new KafkaProducerFactory() { - @Override - public Producer<byte[], byte[]> newKafkaProducer(final Properties config) { - return kafka; - } - }; + KafkaManager.producerFactory = config -> kafka; } @Rule diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderTest.java index d88e382..45f4064 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderTest.java @@ -29,13 +29,11 @@ import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -import java.util.Properties; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.kafka.clients.producer.MockProducer; -import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.clients.producer.RecordMetadata; import org.apache.log4j.MDC; @@ -94,12 +92,7 @@ public class KafkaAppenderTest { @BeforeClass public static void setUpClass() throws Exception { - KafkaManager.producerFactory = new KafkaProducerFactory() { - @Override - public Producer<byte[], byte[]> newKafkaProducer(final Properties config) { - return kafka; - } - }; + KafkaManager.producerFactory = config -> kafka; } @Rule diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManagerTest.java index 772a947..ad22d9e 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManagerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManagerTest.java @@ -41,9 +41,7 @@ import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; -import org.mockito.stubbing.Answer; import static org.junit.Assert.*; import static org.mockito.ArgumentMatchers.anyInt; @@ -70,18 +68,8 @@ public class NoSqlDatabaseManagerTest { @Before public void setUp() { given(provider.getConnection()).willReturn(connection); - given(connection.createObject()).willAnswer(new Answer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer(final InvocationOnMock invocation) throws Throwable { - return new DefaultNoSqlObject(); - } - }); - given(connection.createList(anyInt())).willAnswer(new Answer<DefaultNoSqlObject[]>() { - @Override - public DefaultNoSqlObject[] answer(final InvocationOnMock invocation) throws Throwable { - return new DefaultNoSqlObject[invocation.<Integer>getArgument(0)]; - } - }); + given(connection.createObject()).willAnswer(invocation -> new DefaultNoSqlObject()); + given(connection.createList(anyInt())).willAnswer(invocation -> new DefaultNoSqlObject[invocation.<Integer>getArgument(0)]); } @Test diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java index 02a1f8a..aff0d76 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java @@ -32,7 +32,6 @@ import org.apache.logging.log4j.categories.AsyncLoggers; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.util.DummyNanoClock; import org.apache.logging.log4j.core.time.internal.FixedPreciseClock; -import org.apache.logging.log4j.message.ParameterConsumer; import org.apache.logging.log4j.message.ReusableMessageFactory; import org.apache.logging.log4j.util.FilteredObjectInputStream; import org.apache.logging.log4j.util.StringMap; @@ -253,11 +252,6 @@ public class RingBufferLogEventTest { @Test public void testForEachParameterNothingSet() { final RingBufferLogEvent evt = new RingBufferLogEvent(); - evt.forEachParameter(new ParameterConsumer<Void>() { - @Override - public void accept(final Object parameter, final int parameterIndex, final Void state) { - fail("Should not have been called"); - } - }, null); + evt.forEachParameter((parameter, parameterIndex, state) -> fail("Should not have been called"), null); } } diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/AbstractRunQueue.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/AbstractRunQueue.java index 7ba9412..855a6f4 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/AbstractRunQueue.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/AbstractRunQueue.java @@ -31,18 +31,15 @@ public abstract class AbstractRunQueue implements IPerfTestRunner { private final Thread backGroundThread; AbstractRunQueue() { - backGroundThread = new Thread(new Runnable() { - @Override - public void run() { - for (; ; ) { - try { - if (Objects.equals(queue.take(), STOP)) { - break; - } - } catch (final InterruptedException e) { - e.printStackTrace(); + backGroundThread = new Thread(() -> { + for (; ; ) { + try { + if (Objects.equals(queue.take(), STOP)) { break; } + } catch (final InterruptedException e) { + e.printStackTrace(); + break; } } }); diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/MultiThreadPerfTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/MultiThreadPerfTest.java index 7b10b34..46c4ee7 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/MultiThreadPerfTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/perftest/MultiThreadPerfTest.java @@ -37,15 +37,12 @@ public class MultiThreadPerfTest extends PerfTest { // warmup at least 2 rounds and at most 1 minute final Histogram warmupHist = PerfTest.createHistogram(); final long stop = System.nanoTime() + TimeUnit.MINUTES.toNanos(1); - final Runnable run1 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 10; i++) { - final int LINES = PerfTest.throughput ? 50000 : 200000; - runTest(runner, LINES, null, warmupHist, 2); - if (i > 0 && System.nanoTime() - stop >= 0) { - return; - } + final Runnable run1 = () -> { + for (int i = 0; i < 10; i++) { + final int LINES = PerfTest.throughput ? 50000 : 200000; + runTest(runner, LINES, null, warmupHist, 2); + if (i > 0 && System.nanoTime() - stop >= 0) { + return; } } }; diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java index 2f913f7..2f6d1ba 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java @@ -124,12 +124,7 @@ public class ThreadContextDataInjectorTest { public void testInheritableThreadContextImmutability() throws Throwable { prepareThreadContext(true); try { - newSingleThreadExecutor().submit(new Runnable() { - @Override - public void run() { - testContextDataInjector(); - } - }).get(); + newSingleThreadExecutor().submit(this::testContextDataInjector).get(); } catch (final ExecutionException ee) { throw ee.getCause(); } diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/ConcurrentLoggingWithJsonLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/ConcurrentLoggingWithJsonLayoutTest.java index feff35a..ac93a1a 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/ConcurrentLoggingWithJsonLayoutTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/ConcurrentLoggingWithJsonLayoutTest.java @@ -62,12 +62,7 @@ public class ConcurrentLoggingWithJsonLayoutTest { // Appender is configured with ignoreExceptions="false"; // any exceptions are propagated to the caller, so we can catch them here. - t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { - @Override - public void uncaughtException(final Thread t, final Throwable e) { - thrown.add(e); - } - }); + t.setUncaughtExceptionHandler((t1, e) -> thrown.add(e)); t.start(); } diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java index 30ae580..80582da 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java @@ -350,16 +350,13 @@ public class FlumePersistentAppenderTest { @Test public void testLogInterrupted() { final ExecutorService executor = Executors.newSingleThreadExecutor(); - executor.execute(new Runnable() { - @Override - public void run() { - executor.shutdownNow(); - final Logger logger = LogManager.getLogger("EventLogger"); - final Marker marker = MarkerManager.getMarker("EVENT"); - logger.info(marker, "This is a test message"); - Assert.assertTrue("Interruption status not preserved", Thread.currentThread().isInterrupted()); - } - }); + executor.execute(() -> { + executor.shutdownNow(); + final Logger logger = LogManager.getLogger("EventLogger"); + final Marker marker = MarkerManager.getMarker("EVENT"); + logger.info(marker, "This is a test message"); + Assert.assertTrue("Interruption status not preserved", Thread.currentThread().isInterrupted()); + }); } /* diff --git a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGui.java b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGui.java index a9260b5..fb822bb 100644 --- a/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGui.java +++ b/log4j-jmx-gui/src/main/java/org/apache/logging/log4j/jmx/gui/ClientGui.java @@ -179,12 +179,7 @@ public class ClientGui extends JPanel implements NotificationListener { @Override public void handleNotification(final Notification notif, final Object paramObject) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { // LOG4J2-538 - handleNotificationInAwtEventThread(notif, paramObject); - } - }); + SwingUtilities.invokeLater(() -> handleNotificationInAwtEventThread(notif, paramObject)); } private void handleNotificationInAwtEventThread(final Notification notif, final Object paramObject) { @@ -284,29 +279,26 @@ public class ClientGui extends JPanel implements NotificationListener { final Client client = new Client(connector); final String title = "Log4j JMX Client - " + url; - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - installLookAndFeel(); - try { - final ClientGui gui = new ClientGui(client); - final JFrame frame = new JFrame(title); - frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - frame.getContentPane().add(gui, BorderLayout.CENTER); - frame.pack(); - frame.setVisible(true); - } catch (final Exception ex) { - // if console is visible, print error so that - // the stack trace remains visible after error dialog is - // closed - ex.printStackTrace(); + SwingUtilities.invokeLater(() -> { + installLookAndFeel(); + try { + final ClientGui gui = new ClientGui(client); + final JFrame frame = new JFrame(title); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.getContentPane().add(gui, BorderLayout.CENTER); + frame.pack(); + frame.setVisible(true); + } catch (final Exception ex) { + // if console is visible, print error so that + // the stack trace remains visible after error dialog is + // closed + ex.printStackTrace(); - // show error in dialog: there may not be a console window - // visible - final StringWriter sr = new StringWriter(); - ex.printStackTrace(new PrintWriter(sr)); - JOptionPane.showMessageDialog(null, sr.toString(), "Error", JOptionPane.ERROR_MESSAGE); - } + // show error in dialog: there may not be a console window + // visible + final StringWriter sr = new StringWriter(); + ex.printStackTrace(new PrintWriter(sr)); + JOptionPane.showMessageDialog(null, sr.toString(), "Error", JOptionPane.ERROR_MESSAGE); } }); } diff --git a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java index b6c57ed..8db69b8 100644 --- a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java +++ b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java @@ -26,7 +26,6 @@ import javax.persistence.PersistenceException; import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.impl.ContextDataFactory; import org.apache.logging.log4j.util.StringMap; -import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.Strings; import com.fasterxml.jackson.databind.JsonNode; @@ -55,13 +54,7 @@ public class ContextDataJsonAttributeConverter implements AttributeConverter<Rea try { final JsonNodeFactory factory = OBJECT_MAPPER.getNodeFactory(); final ObjectNode root = factory.objectNode(); - contextData.forEach(new BiConsumer<String, Object>() { - @Override - public void accept(final String key, final Object value) { - // we will cheat here and write the toString of the Object... meh, but ok. - root.put(key, String.valueOf(value)); - } - }); + contextData.forEach((key, value) -> root.put(key, String.valueOf(value))); return OBJECT_MAPPER.writeValueAsString(root); } catch (final Exception e) { throw new PersistenceException("Failed to convert contextData to JSON string.", e); diff --git a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java index 92d38ec..6e48bd1 100644 --- a/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java +++ b/log4j-jul/src/main/java/org/apache/logging/log4j/jul/ApiLogger.java @@ -51,12 +51,9 @@ public class ApiLogger extends Logger { super(logger.getName(), null); final Level javaLevel = LevelTranslator.toJavaLevel(logger.getLevel()); // "java.util.logging.LoggingPermission" "control" - AccessController.doPrivileged(new PrivilegedAction<Object>() { - @Override - public Object run() { - ApiLogger.super.setLevel(javaLevel); - return null; - } + AccessController.doPrivileged((PrivilegedAction<Object>) () -> { + ApiLogger.super.setLevel(javaLevel); + return null; }); this.logger = new WrappedLogger(logger); } diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonWriterTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonWriterTest.java index cde4ccf..68fe638 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonWriterTest.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/JsonWriterTest.java @@ -377,12 +377,7 @@ public class JsonWriterTest { final String expectedJson = "\"foo\\tbar\\tbuzz\""; @SuppressWarnings("Convert2Lambda") final String actualJson = WRITER.use(() -> - WRITER.writeString(new StringBuilderFormattable() { - @Override - public void formatTo(StringBuilder stringBuilder) { - stringBuilder.append("foo\tbar\tbuzz"); - } - })); + WRITER.writeString(stringBuilder -> stringBuilder.append("foo\tbar\tbuzz"))); Assertions.assertThat(actualJson).isEqualTo(expectedJson); } @@ -396,12 +391,7 @@ public class JsonWriterTest { '"'; @SuppressWarnings("Convert2Lambda") final String actualJson = WRITER.use(() -> - WRITER.writeString(new StringBuilderFormattable() { - @Override - public void formatTo(StringBuilder stringBuilder) { - stringBuilder.append(excessiveString); - } - })); + WRITER.writeString(stringBuilder -> stringBuilder.append(excessiveString))); Assertions.assertThat(actualJson).isEqualTo(expectedJson); } diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java index 6ec0992..fdfee25 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ClocksBenchmark.java @@ -155,16 +155,13 @@ public class ClocksBenchmark { private volatile short count; private OldCachedClock() { - final Thread updater = new Thread(new Runnable() { - @Override - public void run() { - while (true) { - final long time = System.currentTimeMillis(); - millis = time; - - // avoid explicit dependency on sun.misc.Util - LockSupport.parkNanos(1000 * 1000); - } + final Thread updater = new Thread((Runnable) () -> { + while (true) { + final long time = System.currentTimeMillis(); + millis = time; + + // avoid explicit dependency on sun.misc.Util + LockSupport.parkNanos(1000 * 1000); } }, "Clock Updater Thread"); updater.setDaemon(true); diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java index e6b78c2..9c5ddd7 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java @@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.concurrent.TimeUnit; import java.util.logging.FileHandler; @@ -119,11 +118,8 @@ public class FileAppenderThrowableBenchmark { interface TestIface30 extends ThrowableHelper {} private static Throwable getComplexThrowable() { - ThrowableHelper helper = new ThrowableHelper() { - @Override - public void action() { - throw new IllegalStateException("Test Throwable"); - } + ThrowableHelper helper = () -> { + throw new IllegalStateException("Test Throwable"); }; try { for (int i = 0; i < 31; i++) { @@ -131,14 +127,11 @@ public class FileAppenderThrowableBenchmark { helper = (ThrowableHelper) Proxy.newProxyInstance( FileAppenderThrowableBenchmark.class.getClassLoader(), new Class<?>[]{Class.forName(FileAppenderThrowableBenchmark.class.getName() + "$TestIface" + (i % 31))}, - new InvocationHandler() { - @Override - public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { - try { - return method.invoke(delegate, args); - } catch (final InvocationTargetException e) { - throw e.getCause(); - } + (InvocationHandler) (proxy, method, args) -> { + try { + return method.invoke(delegate, args); + } catch (final InvocationTargetException e) { + throw e.getCause(); } }); } diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java index d951617..10a6c99 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java @@ -24,7 +24,6 @@ import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.perf.nogc.OpenHashStringMap; import org.apache.logging.log4j.util.SortedArrayStringMap; -import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.TriConsumer; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; @@ -145,12 +144,7 @@ public class SortedArrayVsHashMapBenchmark { return new HashMap(populatedMap); } - static TriConsumer<String, Object, int[]> COUNTER = new TriConsumer<String, Object, int[]>() { - @Override - public void accept(final String s, final Object o, final int[] result) { - result[0] += s.hashCode() + o.hashCode(); - } - }; + static TriConsumer<String, Object, int[]> COUNTER = (s, o, result) -> result[0] += s.hashCode() + o.hashCode(); @Benchmark public int iterateArrayContextDataTriConsumer() { @@ -172,12 +166,7 @@ public class SortedArrayVsHashMapBenchmark { public int iterateArrayContextDataBiConsumer() { final int[] result = {0}; - populatedSortedStringArrayMap.forEach(new BiConsumer<String, Object>() { - @Override - public void accept(final String s, final Object o) { - result[0] += s.hashCode() + o.hashCode(); - } - }); + populatedSortedStringArrayMap.forEach((s, o) -> result[0] += s.hashCode() + o.hashCode()); return result[0]; } @@ -185,12 +174,7 @@ public class SortedArrayVsHashMapBenchmark { public int iterateHashContextDataBiConsumer() { final int[] result = {0}; - populatedOpenHashContextData.forEach(new BiConsumer<String, Object>() { - @Override - public void accept(final String s, final Object o) { - result[0] += s.hashCode() + o.hashCode(); - } - }); + populatedOpenHashContextData.forEach((s, o) -> result[0] += s.hashCode() + o.hashCode()); return result[0]; } diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StackWalkBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StackWalkBenchmark.java index 41dad86..20da72c 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StackWalkBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/StackWalkBenchmark.java @@ -63,7 +63,7 @@ public class StackWalkBenchmark { @Benchmark public void throwableSearch(Blackhole bh) { - stackDriver.deepCall(initialDepth, callDepth, (fqcn) -> { + stackDriver.deepCall(initialDepth, callDepth, fqcn -> { final StackTraceElement[] stackTrace = new Throwable().getStackTrace(); boolean found = false; for (int i = 0; i < stackTrace.length; i++) { @@ -82,20 +82,18 @@ public class StackWalkBenchmark { @Benchmark public void stackWalkerWalk(Blackhole bh) { - stackDriver.deepCall(initialDepth, callDepth, (fqcn) -> { - return walker.walk( - s -> s.dropWhile(f -> !f.getClassName().equals(fqcn)) // drop the top frames until we reach the logger - .dropWhile(f -> f.getClassName().equals(fqcn)) // drop the logger frames - .findFirst()) - .get() - .toStackTraceElement(); - }); + stackDriver.deepCall(initialDepth, callDepth, fqcn -> walker.walk( + s -> s.dropWhile(f -> !f.getClassName().equals(fqcn)) // drop the top frames until we reach the logger + .dropWhile(f -> f.getClassName().equals(fqcn)) // drop the logger frames + .findFirst()) + .get() + .toStackTraceElement()); } @Benchmark public void stackWalkerArray(Blackhole bh) { - stackDriver.deepCall(initialDepth, callDepth, (fqcn) -> { + stackDriver.deepCall(initialDepth, callDepth, fqcn -> { FQCN.set(fqcn); final StackWalker.StackFrame walk = walker.walk(LOCATOR); final StackTraceElement element = walk == null ? null : walk.toStackTraceElement(); @@ -107,9 +105,7 @@ public class StackWalkBenchmark { @Benchmark public void baseline(Blackhole bh) { - stackDriver.deepCall(initialDepth, callDepth, (fqcn) -> { - return null; - }); + stackDriver.deepCall(initialDepth, callDepth, fqcn -> null); } static final class FqcnCallerLocator implements Function<Stream<StackWalker.StackFrame>, StackWalker.StackFrame> { diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java index c4ac559..187e516 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashStringMap.java @@ -189,12 +189,7 @@ public class OpenHashStringMap<K, V> implements StringMap, ThreadContextMap { } } private static final TriConsumer<String, Object, StringMap> PUT_ALL = - new TriConsumer<String, Object, StringMap>() { - @Override - public void accept(final String key, final Object value, final StringMap contextData) { - contextData.putValue(key, value); - } - }; + (key, value, contextData) -> contextData.putValue(key, value); private void assertNotFrozen() { if (immutable) { @@ -247,12 +242,7 @@ public class OpenHashStringMap<K, V> implements StringMap, ThreadContextMap { } private static final TriConsumer<String, Object, Map<String, String>> COPY_INTO_MAP = - new TriConsumer<String, Object, Map<String, String>>() { - @Override - public void accept(final String k, final Object v, final Map<String, String> map) { - map.put(k, v == null ? null : v.toString()); - } - }; + (k, v, map) -> map.put(k, v == null ? null : v.toString()); /* * Removes all elements from this map. @@ -770,17 +760,14 @@ public class OpenHashStringMap<K, V> implements StringMap, ThreadContextMap { } private static final TriConsumer<String, Object, ObjectOutputStream> SERIALIZER = - new TriConsumer<String, Object, ObjectOutputStream>() { - @Override - public void accept(final String k, final Object v, final ObjectOutputStream objectOutputStream) { - try { - objectOutputStream.writeObject(k); - objectOutputStream.writeObject(v); - } catch (final IOException ioex) { - throw new IllegalStateException(ioex); - } - } - }; + (k, v, objectOutputStream) -> { + try { + objectOutputStream.writeObject(k); + objectOutputStream.writeObject(v); + } catch (final IOException ioex) { + throw new IllegalStateException(ioex); + } + }; @Override public String toString() { diff --git a/log4j-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java b/log4j-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java index a142bcc..10a7df4 100644 --- a/log4j-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java +++ b/log4j-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java @@ -101,16 +101,13 @@ public final class WebLoggerContextUtils { * @since 2.0.1 */ public static Runnable wrapExecutionContext(final ServletContext servletContext, final Runnable runnable) { - return new Runnable() { - @Override - public void run() { - final Log4jWebSupport webSupport = getWebLifeCycle(servletContext); - webSupport.setLoggerContext(); - try { - runnable.run(); - } finally { - webSupport.clearLoggerContext(); - } + return () -> { + final Log4jWebSupport webSupport = getWebLifeCycle(servletContext); + webSupport.setLoggerContext(); + try { + runnable.run(); + } finally { + webSupport.clearLoggerContext(); } }; } diff --git a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java index 71d0cf2..d648cbf 100644 --- a/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java +++ b/log4j-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java @@ -303,13 +303,10 @@ public class Log4jWebInitializerImplTest { assertNull("The context should still be null.", ContextAnchor.THREAD_CONTEXT.get()); - final Runnable runnable = new Runnable() { - @Override - public void run() { - final LoggerContext context = ContextAnchor.THREAD_CONTEXT.get(); - assertNotNull("The context should not be null.", context); - assertSame("The context is not correct.", loggerContext, context); - } + final Runnable runnable = () -> { + final LoggerContext context = ContextAnchor.THREAD_CONTEXT.get(); + assertNotNull("The context should not be null.", context); + assertSame("The context is not correct.", loggerContext, context); }; this.initializerImpl.wrapExecution(runnable); diff --git a/log4j-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java b/log4j-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java index bbe918b..32b399c 100644 --- a/log4j-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java +++ b/log4j-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java @@ -34,27 +34,21 @@ public class TestAsyncServlet extends HttpServlet { @Override protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { final AsyncContext asyncContext = req.startAsync(); - asyncContext.start(WebLoggerContextUtils.wrapExecutionContext(this.getServletContext(), new Runnable() { - @Override - public void run() { - final Logger logger = LogManager.getLogger(TestAsyncServlet.class); - logger.info("Hello, servlet!"); - } + asyncContext.start(WebLoggerContextUtils.wrapExecutionContext(this.getServletContext(), () -> { + final Logger logger = LogManager.getLogger(TestAsyncServlet.class); + logger.info("Hello, servlet!"); })); } @Override protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { final AsyncContext asyncContext = req.startAsync(); - asyncContext.start(new Runnable() { - @Override - public void run() { - final Log4jWebSupport webSupport = - WebLoggerContextUtils.getWebLifeCycle(TestAsyncServlet.this.getServletContext()); - webSupport.setLoggerContext(); - // do stuff - webSupport.clearLoggerContext(); - } + asyncContext.start(() -> { + final Log4jWebSupport webSupport = + WebLoggerContextUtils.getWebLifeCycle(TestAsyncServlet.this.getServletContext()); + webSupport.setLoggerContext(); + // do stuff + webSupport.clearLoggerContext(); }); } }
