[
https://issues.apache.org/jira/browse/SLING-5665?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konrad Windszus resolved SLING-5665.
------------------------------------
Resolution: Fixed
Fix Version/s: API 2.12.0
Scripting Core 2.0.38
Fixed in [r1739719|https://svn.apache.org/r1739719].
> SlingScriptHelper.getServices(Class, String) should return the highest
> matching service ranking first
> -----------------------------------------------------------------------------------------------------
>
> Key: SLING-5665
> URL: https://issues.apache.org/jira/browse/SLING-5665
> Project: Sling
> Issue Type: Improvement
> Affects Versions: Scripting Core 2.0.36, API 2.11.0
> Reporter: Konrad Windszus
> Assignee: Konrad Windszus
> Fix For: Scripting Core 2.0.38, API 2.12.0
>
> Attachments: SLING-5665-test.patch, SLING-5665-v01.patch
>
>
> Unfortunately only the method {{BundleContext.getServiceReference(Class)}}
> considers the service ranking. The method
> {{BundleContext.getServiceReferences(Class, String)}} just returns a
> Collection in no specific order. Since the latter is used in
> https://github.com/apache/sling/blob/c9e59667d8f9cd698bc33a51f3e6a22e85d4a952/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java#L224
> one cannot rely on the order of this (although some code even in Sling does
> that, e.g. SLING-5664).
> I think it makes sense to always consider the service ranking in the array
> order, as it is specified for {{BundleContext.getServiceReference}}. There it
> says:
> {quote}
> If multiple such services exist, the service with the highest ranking (as
> specified in its Constants.SERVICE_RANKING property) is returned.
> If there is a tie in ranking, the service with the lowest service ID (as
> specified in its Constants.SERVICE_ID property); that is, the service that
> was registered first is returned.
> {quote}
> This should be translated into,
> {quote}
> The array is sorted by service ranking (i.e. the service with the highest
> ranking is returned first. If there is a tie in ranking, the service with the
> lowest service ID (as specified in its Constants.SERVICE_ID property); that
> is, the service that was registered first is returned first.
> {quote}.
> Both the javadoc of the {{SlingScriptHelper}} as well as the implementation
> in {{ScriptHelper}} should be adjusted accordingly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)