Repository: logging-log4j2 Updated Branches: refs/heads/master 8ceea5231 -> 5878f4281
[LOG4J2-1058] Log4jMarker#contains(String) does not respect org.slf4j.Marker contract. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5878f428 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5878f428 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5878f428 Branch: refs/heads/master Commit: 5878f4281062a466c9f94d5c2dab42ab363e078a Parents: 8ceea52 Author: ggregory <[email protected]> Authored: Mon Jun 22 09:27:04 2015 -0700 Committer: ggregory <[email protected]> Committed: Mon Jun 22 09:27:04 2015 -0700 ---------------------------------------------------------------------- .../org/apache/logging/slf4j/Log4jMarker.java | 190 +++++++++---------- src/changes/changes.xml | 3 + 2 files changed, 98 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5878f428/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jMarker.java ---------------------------------------------------------------------- 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 6edc275..50d126c 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 @@ -1,95 +1,95 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache license, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the license for the specific language governing permissions and - * limitations under the license. - */ -package org.apache.logging.slf4j; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.apache.logging.log4j.MarkerManager; -import org.slf4j.IMarkerFactory; -import org.slf4j.Marker; -import org.slf4j.impl.StaticMarkerBinder; - -/** - * Log4j/SLF4J {@link org.slf4j.Marker} type bridge. - */ -public class Log4jMarker implements Marker { - - public static final long serialVersionUID = 1590472L; - - private final IMarkerFactory factory = StaticMarkerBinder.SINGLETON.getMarkerFactory(); - - private final org.apache.logging.log4j.Marker marker; - - /** - * Constructs a Log4jMarker using an existing Log4j {@link org.apache.logging.log4j.Marker}. - * @param marker The Log4j Marker upon which to base this Marker. - */ - public Log4jMarker(final org.apache.logging.log4j.Marker marker) { - this.marker = marker; - } - - public org.apache.logging.log4j.Marker getLog4jMarker() { - return marker; - } - - @Override - public void add(final Marker marker) { - final Marker m = factory.getMarker(marker.getName()); - this.marker.addParents(((Log4jMarker)m).getLog4jMarker()); - } - - @Override - public boolean remove(final Marker marker) { - return this.marker.remove(MarkerManager.getMarker(marker.getName())); - } - - @Override - public String getName() { - return marker.getName(); - } - - @Override - public boolean hasReferences() { - return marker.hasParents(); - } - - @Override - public boolean hasChildren() { - return marker.hasParents(); - } - - @Override - public Iterator<Marker> iterator() { - final List<Marker> parents = new ArrayList<>(); - for (final org.apache.logging.log4j.Marker m : this.marker.getParents()) { - parents.add(factory.getMarker(m.getName())); - } - return parents.iterator(); - } - - @Override - public boolean contains(final org.slf4j.Marker marker) { - return this.marker.isInstanceOf(marker.getName()); - } - - @Override - public boolean contains(final String s) { - return this.marker.isInstanceOf(s); - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ +package org.apache.logging.slf4j; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.logging.log4j.MarkerManager; +import org.slf4j.IMarkerFactory; +import org.slf4j.Marker; +import org.slf4j.impl.StaticMarkerBinder; + +/** + * Log4j/SLF4J {@link org.slf4j.Marker} type bridge. + */ +public class Log4jMarker implements Marker { + + public static final long serialVersionUID = 1590472L; + + private final IMarkerFactory factory = StaticMarkerBinder.SINGLETON.getMarkerFactory(); + + private final org.apache.logging.log4j.Marker marker; + + /** + * Constructs a Log4jMarker using an existing Log4j {@link org.apache.logging.log4j.Marker}. + * @param marker The Log4j Marker upon which to base this Marker. + */ + public Log4jMarker(final org.apache.logging.log4j.Marker marker) { + this.marker = marker; + } + + public org.apache.logging.log4j.Marker getLog4jMarker() { + return marker; + } + + @Override + public void add(final Marker marker) { + final Marker m = factory.getMarker(marker.getName()); + this.marker.addParents(((Log4jMarker)m).getLog4jMarker()); + } + + @Override + public boolean remove(final Marker marker) { + return this.marker.remove(MarkerManager.getMarker(marker.getName())); + } + + @Override + public String getName() { + return marker.getName(); + } + + @Override + public boolean hasReferences() { + return marker.hasParents(); + } + + @Override + public boolean hasChildren() { + return marker.hasParents(); + } + + @Override + public Iterator<Marker> iterator() { + final List<Marker> parents = new ArrayList<>(); + for (final org.apache.logging.log4j.Marker m : this.marker.getParents()) { + parents.add(factory.getMarker(m.getName())); + } + return parents.iterator(); + } + + @Override + public boolean contains(final org.slf4j.Marker marker) { + return this.marker.isInstanceOf(marker.getName()); + } + + @Override + public boolean contains(final String s) { + return s != null ? this.marker.isInstanceOf(s) : false; + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5878f428/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 2f5d705..ac6097d 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -87,6 +87,9 @@ <action issue="LOG4J2-1045" dev="ggregory" type="fix" due-to="Günter Albrecht"> Externalize log4j2.xml via URL resource. </action> + <action issue="LOG4J2-1058" dev="ggregory" type="fix" due-to="Daniel Branzea"> + Log4jMarker#contains(String) does not respect org.slf4j.Marker contract. + </action> <action issue="LOG4J2-890" dev="ggregory" type="update" due-to="Hassan Kalaldeh, Robert Andersson, Remko Popma"> log4j-web-2.1 should workaround a bug in JBOSS EAP 6.2. </action>
