That reminds me. I think a lot of the interfaces could use abstract base 
classes, too. At least the main ones like LoggerContext, Marker, the Manager 
classes, etc. It does help with implementations.

Matt Sicker

> On Feb 26, 2014, at 4:19, "RainJ (JIRA)" <[email protected]> wrote:
> 
> RainJ created LOG4J2-552:
> ----------------------------
> 
>             Summary: Logic of isInstanceOf are not consistent in log4j-api's 
> Log4jMarker and log4j-slf4j-impl's MarkerWrapper
>                 Key: LOG4J2-552
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-552
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: API, SLF4J Bridge
>    Affects Versions: 2.0-rc1
>            Reporter: RainJ
> 
> 
> The logic  of isInstanceOf is not consistent for Marker implements in 
> log4j-api's Log4jMarker and log4j-slf4j-iml's MarkerWrapper.
> In Log4jMarker
> ---------------------------------------------
>           @Override
>        public boolean isInstanceOf(final String name) {
>            if (name == null) {
>                throw new IllegalArgumentException("A marker name is 
> required");
>            }
>            Marker toTest = this;
>            do {
>                if (name.equals(toTest.getName())) {
>                    return true;
>                }
>                toTest = toTest.getParent();
>            } while (toTest != null);
>            return false;
>        }
> ---------------------------------------------
> in MarkerWrapper
> ---------------------------------------------
>  @Override
>    public boolean isInstanceOf(final Marker marker) {
>        if (marker == null) {
>            throw new IllegalArgumentException("A marker parameter is 
> required");
>        }
> 
>        if (marker instanceof MarkerWrapper) {
>            return contains((MarkerWrapper) marker);
>        } else {
>            return contains(marker.getName());
>        }
>    }
> 
>    @Override
>    public boolean isInstanceOf(final String name) {
>        if (name == null) {
>            throw new IllegalArgumentException("A marker name is required");
>        }
>        return contains(name);
>    }
> -----------------------------------------
> 
> in Log4jMarker, the isInstanceOf means the marker is instance of itself or 
> its parent
> 
> in MarkerWrapper, the isInstance of means the marker is instance of itself or 
> its children
> 
> 
> 
> 
> --
> This message was sent by Atlassian JIRA
> (v6.1.5#6160)
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to