LOG4J2-1310 - JndiLookup mindlessly casts to String and should use String.valueOf().
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c6318b63 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c6318b63 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c6318b63 Branch: refs/heads/LOG4J2-1278-gc-free-logger Commit: c6318b63818427833db2dc08389c463102c1a66e Parents: ed6c608 Author: Matt Sicker <[email protected]> Authored: Tue Mar 8 11:24:17 2016 -0600 Committer: Matt Sicker <[email protected]> Committed: Tue Mar 8 11:24:17 2016 -0600 ---------------------------------------------------------------------- .../logging/log4j/core/lookup/JndiLookup.java | 2 +- .../logging/log4j/core/lookup/JndiLookupTest.java | 18 ++++++++++++++++++ src/changes/changes.xml | 3 +++ 3 files changed, 22 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c6318b63/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java index d7d50cb..1cd4290 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java @@ -52,7 +52,7 @@ public class JndiLookup extends AbstractLookup { final String jndiName = convertJndiName(key); final JndiManager jndiManager = JndiManager.getDefaultManager(); try { - return jndiManager.lookup(jndiName); + return String.valueOf(jndiManager.lookup(jndiName)); } catch (final NamingException e) { LOGGER.warn(LOOKUP, "Error looking up JNDI resource [{}].", jndiName, e); return null; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c6318b63/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java index 97f6a3b..1211cf5 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java @@ -16,6 +16,8 @@ */ package org.apache.logging.log4j.core.lookup; +import java.util.Arrays; +import java.util.Collection; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; @@ -34,6 +36,10 @@ public class JndiLookupTest { private static final String TEST_CONTEXT_RESOURCE_NAME = "logging/context-name"; private static final String TEST_CONTEXT_NAME = "app-1"; + private static final String TEST_INTEGRAL_NAME = "int-value"; + private static final int TEST_INTEGRAL_VALUE = 42; + private static final String TEST_STRINGS_NAME = "string-collection"; + private static final Collection<String> TEST_STRINGS_COLLECTION = Arrays.asList("one", "two", "three"); private Context context; @@ -42,6 +48,8 @@ public class JndiLookupTest { MockContextFactory.setAsInitial(); context = new InitialContext(); context.bind(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME); + context.bind(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_INTEGRAL_NAME, TEST_INTEGRAL_VALUE); + context.bind(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_STRINGS_NAME, TEST_STRINGS_COLLECTION); } @After @@ -66,4 +74,14 @@ public class JndiLookupTest { final String nonExistingResource = lookup.lookup("logging/non-existing-resource"); assertNull(nonExistingResource); } + + @Test + public void testNonStringLookup() throws Exception { + // LOG4J2-1310 + final StrLookup lookup = new JndiLookup(); + final String integralValue = lookup.lookup(TEST_INTEGRAL_NAME); + assertEquals(String.valueOf(TEST_INTEGRAL_VALUE), integralValue); + final String collectionValue = lookup.lookup(TEST_STRINGS_NAME); + assertEquals(String.valueOf(TEST_STRINGS_COLLECTION), collectionValue); + } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c6318b63/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 61006a1..1313ac9 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -205,6 +205,9 @@ <action issue="LOG4J2-1133" dev="mattsicker" type="add"> Add JNDI lookup documentation. </action> + <action issue="LOG4J2-1310" dev="mattsicker" type="fix"> + JndiLookup mindlessly casts to String and should use String.valueOf(). + </action> </release> <release version="2.5" date="2015-12-06" description="GA Release 2.5"> <action issue="LOG4J2-324" dev="rpopma" type="fix">
