[ 
https://issues.apache.org/jira/browse/FELIX-6607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17724147#comment-17724147
 ] 

Christoph Läubrich commented on FELIX-6607:
-------------------------------------------

As said you can simply assume a rank of 0 if the service reference is zero. The 
default OSGi implementation uses the serviceid if two ranks are the same, so if 
you encounter this case just assume that internal plugins have a service id of 
INTEGER.MAX.

So the code in compare might look like this:

{code:java}
final int thisRanking = registration==null? 0: registration.getRanking();
final int otherRanking = other.registration==null? 0 : 
other.registration.getRanking();
if (thisRanking != otherRanking) {
        if (thisRanking < otherRanking) {
                return -1;
        }
        return 1;
}
final long thisId = registration == null? Integer.MAX_INT : 
registration.getId();
final long otherId = other.registration ==null? Integer.MAX_INT: 
other.registration.getId();
if (thisId == otherId) {
        return 0;
}
if (thisId < otherId) {
        return 1;
}
return -1;
{code}


> Web Console Plugins should have a predictable order in case of label conflicts
> ------------------------------------------------------------------------------
>
>                 Key: FELIX-6607
>                 URL: https://issues.apache.org/jira/browse/FELIX-6607
>             Project: Felix
>          Issue Type: Improvement
>          Components: Web Console
>            Reporter: Konrad Windszus
>            Priority: Major
>
> In case two web console plugins register for the same label it is currently 
> not predictable which is getting used (because the service being started 
> later overwrites earlier ones with the same label). The regular 
> ServiceReference.compareTo(…) semantics should be used to determine which of 
> the conflicting plugins should win.
> Internal plugins which do not rely on OSGi services (and therefore don't have 
> a servicereference) should have the highest priority (i.e. should not be 
> allowed to be overwritten).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to