[
https://issues.apache.org/jira/browse/SLING-7194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16282129#comment-16282129
]
Stefan Seifert commented on SLING-7194:
---------------------------------------
the current behavior was introduced in SLING-2630. the indent of this ticket
was to support multiple adapter factories at all - which is still fulfilled if
we change the service ranking ordering.
of course we have a change in backward compatibility when this behavior is
fixed as described.
> AdapterManager sorts AdapterFactory implementations lowest ranking first
> ------------------------------------------------------------------------
>
> Key: SLING-7194
> URL: https://issues.apache.org/jira/browse/SLING-7194
> Project: Sling
> Issue Type: Bug
> Components: Extensions
> Affects Versions: Adapter 2.1.10
> Reporter: Stefan Seifert
>
> the current implementation of AdapterManager uses a
> AdapterFactoryDescriptorMap to sort the AdapterFactory implementations found.
> this is done using a TreeMap with the ServiceReference as key.
> ServiceReference implements a compareTo.
> according to its documentation the default implementation sorts with
> service-ranking lowest-first/service id highest-first:
> https://osgi.org/javadoc/r6/core/org/osgi/framework/ServiceReference.html#compareTo(java.lang.Object)
> when picking a service from multiple ones using BundleContext.getService, the
> service with hightest service ranking/lowest service id is returned.
> i would expect the same from the AdapterManager implementation - if multiple
> implementations match pick that one with highest ranking/lowest service id.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)