You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2010/07/27 15:56:17 UTC

[jira] Resolved: (FELIX-2486) ClassLoaderJavaClassDescription.isA does not work under certain circumstances

     [ https://issues.apache.org/jira/browse/FELIX-2486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Felix Meschberger resolved FELIX-2486.
--------------------------------------

    Resolution: Fixed

Fixed by implementing ClassLoaderJavaClassDescriptor.isA(String) using Class.isAssignableFrom(Class) in Rev. 979703.

> ClassLoaderJavaClassDescription.isA does not work under certain circumstances
> -----------------------------------------------------------------------------
>
>                 Key: FELIX-2486
>                 URL: https://issues.apache.org/jira/browse/FELIX-2486
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven SCR Plugin
>    Affects Versions:  maven-scr-plugin-1.4.4
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For:  maven-scr-plugin-1.4.6
>
>
> Consider two bundles B1 and B2. B1 provides an abstract component AC1. This abstract component declares itself to implement Service S by means of
>    @scr.service interface="S"
> No AC1 does not itself implement S but it extends a baseclass which in turn implements S.
> This bundle B1 builds perfectly and the SCR plugin generates the descriptor for the abstract component.
> Now, B2 provides a concrete component CC2 extending AC1. B2 fails to build while trying to generate the SCR descriptor.
> The reason for this is, that while generating descriptor for CC2, the exsting service descriptor for AC1 is validated, particularly the service element. This element is checked in the context of the abstract AC1 component class internally represented by a ClassLoaderJavaClassDescriptor instance. To verify the interface, the isA(String) method is called.
> This is where the problem occurrs: The ClassLoaderJavaClassDescriptor.isA method only considers the interfaces directly implemented by the class but not any interfaces implemented by the parent class. Moreover, this implementation does not allow for classes (as opposed to interfaces) to be used as service interface name.
> The fix is probably to use Class.isAssignableFrom to implement the isA method.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.