You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2022/12/29 19:21:07 UTC
[logging-log4j2] 05/07: Fix NPE in Log4jMarker
This is an automated email from the ASF dual-hosted git repository.
rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 728c99e42092fe13d7ba52f8567dccce64ae544b
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Sun Dec 25 22:30:27 2022 +0100
Fix NPE in Log4jMarker
Log4j2's Marker#getParents() does actually return `null` instead of an
empty array.
---
.../java/org/apache/logging/slf4j/Log4jMarker.java | 75 +++++++++++-----------
.../java/org/apache/logging/slf4j/Log4jMarker.java | 75 +++++++++++-----------
2 files changed, 76 insertions(+), 74 deletions(-)
diff --git a/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java b/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
index fb21659103..bb1621aa39 100644
--- a/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
+++ b/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
@@ -17,6 +17,7 @@
package org.apache.logging.slf4j;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -47,43 +48,40 @@ class Log4jMarker implements Marker {
@Override
public void add(final Marker marker) {
- if (marker == null) {
- throw new IllegalArgumentException();
- }
+ if (marker == null) {
+ throw new IllegalArgumentException();
+ }
final Marker m = factory.getMarker(marker.getName());
this.marker.addParents(((Log4jMarker)m).getLog4jMarker());
}
@Override
- public boolean contains(final Marker marker) {
- if (marker == null) {
- throw new IllegalArgumentException();
- }
- return this.marker.isInstanceOf(marker.getName());
- }
+ public boolean contains(final Marker marker) {
+ if (marker == null) {
+ throw new IllegalArgumentException();
+ }
+ return this.marker.isInstanceOf(marker.getName());
+ }
@Override
- public boolean contains(final String s) {
- return s != null ? this.marker.isInstanceOf(s) : false;
- }
+ public boolean contains(final String s) {
+ return s != null ? this.marker.isInstanceOf(s) : false;
+ }
@Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (!(obj instanceof Log4jMarker)) {
- return false;
- }
- final Log4jMarker other = (Log4jMarker) obj;
- if (!Objects.equals(marker, other.marker)) {
- return false;
- }
- return true;
- }
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof Log4jMarker)) {
+ return false;
+ }
+ final Log4jMarker other = (Log4jMarker) obj;
+ return Objects.equals(marker, other.marker);
+ }
public org.apache.logging.log4j.Marker getLog4jMarker() {
return marker;
@@ -100,27 +98,30 @@ class Log4jMarker implements Marker {
}
@Override
- public int hashCode() {
- return 31 + Objects.hashCode(marker);
- }
+ public int hashCode() {
+ return 31 + Objects.hashCode(marker);
+ }
@Override
public boolean hasReferences() {
return marker.hasParents();
}
- @Override
+ @Override
public Iterator<Marker> iterator() {
final org.apache.logging.log4j.Marker[] log4jParents = this.marker.getParents();
+ if (log4jParents == null) {
+ return Collections.emptyIterator();
+ }
final List<Marker> parents = new ArrayList<>(log4jParents.length);
- for (final org.apache.logging.log4j.Marker m : log4jParents) {
+ for (final org.apache.logging.log4j.Marker m : log4jParents) {
parents.add(factory.getMarker(m.getName()));
}
return parents.iterator();
}
- @Override
- public boolean remove(final Marker marker) {
- return marker != null ? this.marker.remove(MarkerManager.getMarker(marker.getName())) : false;
- }
+ @Override
+ public boolean remove(final Marker marker) {
+ return marker != null ? this.marker.remove(MarkerManager.getMarker(marker.getName())) : false;
+ }
}
diff --git a/log4j-slf4j2-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java b/log4j-slf4j2-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
index fb21659103..bb1621aa39 100644
--- a/log4j-slf4j2-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
+++ b/log4j-slf4j2-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java
@@ -17,6 +17,7 @@
package org.apache.logging.slf4j;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -47,43 +48,40 @@ class Log4jMarker implements Marker {
@Override
public void add(final Marker marker) {
- if (marker == null) {
- throw new IllegalArgumentException();
- }
+ if (marker == null) {
+ throw new IllegalArgumentException();
+ }
final Marker m = factory.getMarker(marker.getName());
this.marker.addParents(((Log4jMarker)m).getLog4jMarker());
}
@Override
- public boolean contains(final Marker marker) {
- if (marker == null) {
- throw new IllegalArgumentException();
- }
- return this.marker.isInstanceOf(marker.getName());
- }
+ public boolean contains(final Marker marker) {
+ if (marker == null) {
+ throw new IllegalArgumentException();
+ }
+ return this.marker.isInstanceOf(marker.getName());
+ }
@Override
- public boolean contains(final String s) {
- return s != null ? this.marker.isInstanceOf(s) : false;
- }
+ public boolean contains(final String s) {
+ return s != null ? this.marker.isInstanceOf(s) : false;
+ }
@Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (!(obj instanceof Log4jMarker)) {
- return false;
- }
- final Log4jMarker other = (Log4jMarker) obj;
- if (!Objects.equals(marker, other.marker)) {
- return false;
- }
- return true;
- }
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof Log4jMarker)) {
+ return false;
+ }
+ final Log4jMarker other = (Log4jMarker) obj;
+ return Objects.equals(marker, other.marker);
+ }
public org.apache.logging.log4j.Marker getLog4jMarker() {
return marker;
@@ -100,27 +98,30 @@ class Log4jMarker implements Marker {
}
@Override
- public int hashCode() {
- return 31 + Objects.hashCode(marker);
- }
+ public int hashCode() {
+ return 31 + Objects.hashCode(marker);
+ }
@Override
public boolean hasReferences() {
return marker.hasParents();
}
- @Override
+ @Override
public Iterator<Marker> iterator() {
final org.apache.logging.log4j.Marker[] log4jParents = this.marker.getParents();
+ if (log4jParents == null) {
+ return Collections.emptyIterator();
+ }
final List<Marker> parents = new ArrayList<>(log4jParents.length);
- for (final org.apache.logging.log4j.Marker m : log4jParents) {
+ for (final org.apache.logging.log4j.Marker m : log4jParents) {
parents.add(factory.getMarker(m.getName()));
}
return parents.iterator();
}
- @Override
- public boolean remove(final Marker marker) {
- return marker != null ? this.marker.remove(MarkerManager.getMarker(marker.getName())) : false;
- }
+ @Override
+ public boolean remove(final Marker marker) {
+ return marker != null ? this.marker.remove(MarkerManager.getMarker(marker.getName())) : false;
+ }
}