Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-1131

ServiceReference.isAssignableTo fails when using a factory that can not see the exported class and the bundle exporting the service does not have a direct wire to this class

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: framework-1.6.0
    • Fix Version/s: framework-4.4.0
    • Component/s: Framework
    • Labels:
      None

      Description

      • bundle A defines an interface R and a class S in different packages, whith S implementing R
      • bundle B defines a class T extending S, it has an import statement on S package, but not on R package
      • bundle C defines a ServiceFactory that export T service without any import on any package from R, S, T

      in this case, the line 426 of ServiceRegistrationImpl is executed:

      allow = getServiceRegistration().isClassAccessible(requestClass);

      which looks like:

      protected boolean isClassAccessible(Class clazz)
      {
      try

      { // Try to load from the service object or service factory class. Class sourceClass = (m_factory != null) ? m_factory.getClass() : m_svcObj.getClass(); Class targetClass = Util.loadClassUsingClass(sourceClass, clazz.getName()); return (targetClass == clazz); }

      catch (Exception ex)

      { // Ignore this and return false. }

      return false;
      }

      So felix checks if the classloader used to load the factory can also load the interface, which is not the case in my example.
      So isClassAccessible returns false and the event is not dispatched to the service listener.

        Attachments

        1. FELIX-1131.txt
          6 kB
          Guillaume Nodet

          Activity

            People

            • Assignee:
              rickhall Richard S. Hall
              Reporter:
              gnodet Guillaume Nodet
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: