You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2015/09/22 22:32:06 UTC
logging-log4j2 git commit: [LOG4J2-1127] log4j2.xml cannot be parsed
on Oracle Weblogic 12c.
Repository: logging-log4j2
Updated Branches:
refs/heads/master d6391e98f -> 6f242922d
[LOG4J2-1127] log4j2.xml cannot be parsed on Oracle Weblogic 12c.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/6f242922
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/6f242922
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/6f242922
Branch: refs/heads/master
Commit: 6f242922d70135c4a5524d55dab187a7f5e34531
Parents: d6391e9
Author: ggregory <gg...@apache.org>
Authored: Tue Sep 22 13:31:59 2015 -0700
Committer: ggregory <gg...@apache.org>
Committed: Tue Sep 22 13:31:59 2015 -0700
----------------------------------------------------------------------
.../log4j/core/config/xml/XmlConfiguration.java | 4 +++-
.../logging/log4j/core/util/Throwables.java | 16 ++++++++++++++++
.../logging/log4j/core/util/ThrowablesTest.java | 19 +++++++++++++++++++
3 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6f242922/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 2adc756..4712d9d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.core.config.status.StatusConfiguration;
import org.apache.logging.log4j.core.util.Closer;
import org.apache.logging.log4j.core.util.Loader;
import org.apache.logging.log4j.core.util.Patterns;
+import org.apache.logging.log4j.core.util.Throwables;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -145,7 +146,8 @@ public class XmlConfiguration extends AbstractConfiguration implements Reconfigu
document = documentBuilder.parse(source);
} catch (final Exception e) {
// LOG4J2-1127
- if (e.getCause() instanceof UnsupportedOperationException) {
+ Throwable throwable = Throwables.getRootCause(e);
+ if (throwable instanceof UnsupportedOperationException) {
LOGGER.warn(
"The DocumentBuilder {} does not support an operation: {}. Trying again without XInclude...",
documentBuilder, e);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6f242922/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
index a852772..261932c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Throwables.java
@@ -46,6 +46,22 @@ public final class Throwables {
}
/**
+ * Returns the deepest cause of the given {@code throwable}.
+ *
+ * @param throwable
+ * the throwable to navigate
+ * @return the deepest throwable or the given throwable
+ */
+ public static Throwable getRootCause(final Throwable throwable) {
+ Throwable cause;
+ Throwable root = throwable;
+ while ((cause = root.getCause()) != null) {
+ root = cause;
+ }
+ return root;
+ }
+
+ /**
* Has no effect on Java 6 and below.
*
* @param throwable a Throwable
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6f242922/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ThrowablesTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ThrowablesTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ThrowablesTest.java
index 2a58353..50d462c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ThrowablesTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/util/ThrowablesTest.java
@@ -22,6 +22,25 @@ import org.junit.Test;
public class ThrowablesTest {
+ @Test
+ public void testGetRootCauseNone() throws Exception {
+ final NullPointerException throwable = new NullPointerException();
+ org.junit.Assert.assertEquals(throwable, Throwables.getRootCause(throwable));
+ }
+
+ @Test
+ public void testGetRootCauseDepth1() throws Exception {
+ final NullPointerException throwable = new NullPointerException();
+ org.junit.Assert.assertEquals(throwable, Throwables.getRootCause(new UnsupportedOperationException(throwable)));
+ }
+
+ @Test
+ public void testGetRootCauseDepth2() throws Exception {
+ final NullPointerException throwable = new NullPointerException();
+ org.junit.Assert.assertEquals(throwable,
+ Throwables.getRootCause(new IllegalArgumentException(new UnsupportedOperationException(throwable))));
+ }
+
@Test(expected = NullPointerException.class)
public void testRethrowRuntimeException() throws Exception {
Throwables.rethrow(new NullPointerException());