I think using Objects.requireNonNull() is more precise FWIW.
Gary
On Sun, Dec 25, 2022, 16:38 wrote:
> This is an automated email from the ASF dual-hosted git repository.
>
> pkarwasz pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
> new ffc82a4820 Fix NPE in Log4jMarker
> ffc82a4820 is described below
>
> commit ffc82a48203fb890d85e3a497476611368ba1021
> Author: Piotr P. Karwasz
> 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 | 83
> ++
> .../java/org/apache/logging/slf4j/Log4jMarker.java | 9 +--
> 2 files changed, 44 insertions(+), 48 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 30931851f0..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,8 +17,10 @@
> 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;
>
> import org.apache.logging.log4j.MarkerManager;
> import org.slf4j.IMarkerFactory;
> @@ -46,47 +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);
> - }
> +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 (marker == null) {
> - if (other.marker != null) {
> - return false;
> - }
> - } else if (!marker.equals(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;
> @@ -103,30 +98,30 @@ class Log4jMarker implements Marker {
> }
>
> @Override
> - public int hashCode() {
> - final int prime = 31;
> - int result = 1;
> - result = prime * result + ((marker == null) ? 0 :
> marker.hashCode());
> - return result;
> - }
> +public int hashCode() {
> +return 31 + Objects.hashCode(marker);
> +}
>
> @Override
> public boolean hasReferences() {
> return marker.hasParents();
> }
>
> - @Override
> +@Override
> public Iterator iterator() {
> final org.apache.logging.log4j.Marker[] log4jParents =
> this.marker.getParents();
> +if (log4jParents == null) {
> +return Collections.emptyIterator();
> +}
> final List parents = new ArrayList<>(log4jParents.length);
> -