Hi all !

I am using Equinox 3.4.2, and I thik I found a bug.

The Javadoc of "org.osgi.framework.ServiceReference.compareTo(Object)"
says the following:

    This ServiceReference is less than the specified ServiceReference if
    it has a lower service ranking and greater if it has a higher
    service ranking. Otherwise, if this ServiceReference and the
    specified ServiceReference have the same service ranking, this
    ServiceReference is less than the specified ServiceReference if it
    has a higher service id and greater if it has a lower service id.

But,
org.eclipse.osgi.framework.internal.core.ServiceReferenceImpl.compareTo(Object)
(version=3.4.3.R34x_v20081215-1030) is implemented the following.

    if (this.getRanking() != other.getRanking())
        return this.getRanking() > other.getRanking() ? -1 : 1;
    return this.getId() == other.getId() ? 0 : this.getId() > other.getId() ? 1 
: -1;

I think the following is correct.

    if (this.getRanking() != other.getRanking())

        return this.getRanking() > other.getRanking() ? 1 : -1;  //  <--

    return this.getId() == other.getId() ? 0 : this.getId() > other.getId() ? 
-1 : 1;  // <<-


I'm sorry if I have a mistake, or if it had already been discussed.

Thanks.

-- 
-------------------------------------------------------------
Shinichi Okano  (okano-shini...@sei.co.jp)

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to