octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #58119] isa() does not respect interfaces inhe


From: Andrew Janke
Subject: [Octave-bug-tracker] [bug #58119] isa() does not respect interfaces inherited from superclasses for Java objects
Date: Sun, 5 Apr 2020 13:01:32 -0400 (EDT)
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:74.0) Gecko/20100101 Firefox/74.0

URL:
  <https://savannah.gnu.org/bugs/?58119>

                 Summary: isa() does not respect interfaces inherited from
superclasses for Java objects
                 Project: GNU Octave
            Submitted by: apjanke
            Submitted on: Sun 05 Apr 2020 01:01:31 PM EDT
                Category: Octave Function
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Incorrect Result
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: 5.2.0
         Discussion Lock: Any
        Operating System: Mac OS

    _______________________________________________________

Details:

It seems that isa(), when called on a Java object, doesn't properly respect
interface inheritance from superclasses.

I have a method written against the org.slf4j.Logger interface. It should
accept instances of any class that implements that interface, either directly
or through inheritance. In some of my code, my method is receiving
org.slf4j.impl.Log4jLoggerAdapter objects and storing them in a variable named
jLogger. This class is an indirect subclass of
org.slf4j.helpers.NamedLoggerBase, which implements org.slf4j.Logger. However,
isa(jLogger, 'org.slf4j.Logger') returns false.

{verbatim}
debug> jLogger
jLogger = 
<Java object: org.slf4j.impl.Log4jLoggerAdapter>

debug> klass = jLogger.getClass;
debug> klass.getName
ans = org.slf4j.impl.Log4jLoggerAdapter
debug> superklass1 = klass.getSuperclass;
debug > superklass1.getName
ans = org.slf4j.helpers.MarkerIgnoringBase
debug> superklass2 = superklass1.getSuperclass;
debug> superklass2.getName
ans = org.slf4j.helpers.NamedLoggerBase
debug> ifcs2 = superklass2.getInterfaces;
debug> ifcs2(1).getName
ans = org.slf4j.Logger
debug> isa(jLogger, 'org.slf4j.Logger')
ans = 0
{verbatim}

Affects Octave 4.4.1 and 5.2.0. This is on macOS, but I'd suspect it affects
all OSes.




    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?58119>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]